需要引入三个Maven插件:
maven-jar-plugin
:用于打包代码,并去除不需要一起打包的resource文件maven-assembly-plugin
:主要用来打压缩包,配置我们打包后的整体文件结构maven-antrun-plugin
:主要用来解压 maven-assembly-plugin 插件打好的压缩包,去掉打包完成后自己去手动解压的步骤
maven-jar-plugin
配置:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-jar-plugin</artifactid>
<configuration>
<archive>
<manifest>
<!--指定入口类,必须全类名-->
<mainclass>com.andlinks.art.ArtApplication</mainclass>
<!-- 指定依赖的声明前缀,会在依赖Jar包的路径加上前缀lib/ -->
<classpathprefix>lib/</classpathprefix>
<!--为true后会将所有依赖Jar包的路径写入 MANIFEST Class-Path 中-->
<addclasspath>true</addclasspath>
</manifest>
<manifestentries>
<!--添加一个 Class-Path 路径-->
<class-path>resources/</class-path>
</manifestentries>
</archive>
<excludes>
<!--排除掉打包进Jar中的文件 **/ 表示所有目录,根据自己 实际情况选择排除的文件-->
<exclude>**/*.yml</exclude>
<exclude>**/*.sh</exclude>
<exclude>**/bin/</exclude>
<exclude>**/conf/</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.properties</exclude>
</excludes>
</configuration>
</plugin>
maven-assembly-plugin 配置:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-assembly-plugin</artifactid>
<configuration>
<!--configuration配置后,将会生成一个{finalname}-{assembly-descriptor中的id}.jar 文件在目录 output 下,其中的内容和默认的打包出来的jar类似,
如果只想有finalName,则增加配置:<appendAssemblyId/>-->
<appendassemblyid>false</appendassemblyid>
<!--压缩包的输出目录-->
<outputdirectory>${project.build.directory}/dist/</outputdirectory>
<descriptors>
<!--descriptor文件目录-->
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<!--无特殊用途-->
<id>make-assembly</id>
<!--绑定到package生命周期阶段上-->
<phase>package</phase>
<goals>
<!--只运行一次-->
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
assembly.xml 文件参考:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<!--标识符,添加到生成文件名称的后缀符。如果指定 id 的话,目标文件则是 ${artifactId}-${id}.zip-->
<id>demo</id>
<formats>
<!--指定打包类型: zip、tar、tar.gz(or tgz)、tar.bz2 (or tbz2)、tar.snappy 、tar.xz (or txz)、jar、dir、war-->
<format>zip</format>
</formats>
<!--是否包含根目录,为true会将所有文件放置在压缩包的{finalName}命名的文件夹中-->
<includebasedirectory>false</includebasedirectory>
<!--指定打包的文件与输出目录-->
<filesets>
<fileset>
<!--打包resources目录下的所有文件-->
<directory>src/main/resources</directory>
<!--输出至resources目录-->
<outputdirectory>/resources</outputdirectory>
<excludes>
<!--排除assembly.xml 文件-->
<exclude>assembly.xml</exclude>
</excludes>
</fileset>
</filesets>
<!--项目依赖的处理-->
<dependencysets>
<dependencyset>
<!--是否打包项目本身JAR包-->
<useprojectartifact>false</useprojectartifact>
<!--依赖输出目录-->
<outputdirectory>/lib</outputdirectory>
<!--打包的依赖默认生命周期级别-->
<scope>runtime</scope>
<!--排除文件配置-->
<excludes>
<exclude>${project.groupId}:${project.artifactId}</exclude>
</excludes>
</dependencyset>
<!--将项目本身JAR包放到输出目录根目录下-->
<dependencyset>
<outputdirectory>/</outputdirectory>
<includes>
<include>${project.groupId}:${project.artifactId}</include>
</includes>
</dependencyset>
</dependencysets>
</assembly>
压缩包自解压配置:
<plugin>
<artifactid>maven-antrun-plugin</artifactid>
<executions>
<execution>
<!-- 绑定到package生命周期阶段上 -->
<phase>package</phase>
<configuration>
<tasks>
<echo message="unziping ${project.artifactId}.zip">
<!-- src:需要解压文件的路径,dest:文件解压之后的路径 -->
<unzip src="target/dist/${project.artifactId}.zip" dest="target/dist/${project.artifactId}">
</unzip></echo></tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Original: https://www.cnblogs.com/kimyoung/p/16554613.html
Author: KimYoung
Title: Spring boot 项目配置 Maven 资源文件分离打包
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590665/
转载文章受原作者版权保护。转载请注明原作者出处!