maven-自定义打包maven-assembly-plugin插件
作者丨Coder技术栈
来源丨匠心Java
插件名称:maven-assembly-plugin目前最新的版本:3.2.0作用:该插件可以使用户根据自己的需求自定义打包规则和打包类型
pom文件配置示例:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>testProject</finalName> <!-- 配置打包后的文件前缀名 -->
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor> <!-- 配置文件路径 -->
</descriptors>
</configuration>
<executions> <!-- 配置assembly goals -->
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
package.xml文件自定义打包配置:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<!-- 最终打包文件的后缀,格式为 ${fileName}-bin -->
<id>bin</id>
<!-- 最终打包成一个用于发布的zip文件 -->
<formats>
<format>zip</format>
</formats>
<!-- 把依赖的jar包打包进zip的lib目录下-->
<dependencySets>
<dependencySet>
<!-- 不使用项目的artifact -->
<useProjectArtifact>false</useProjectArtifact>
<!-- 打包进zip文件下的lib目录中 -->
<outputDirectory>lib</outputDirectory>
<!-- 第三方jar不要解压 -->
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<!-- 文件配置 -->
<fileSets>
<!-- 把项目的配置文件,打包进zip包的config目录下 -->
<fileSet>
<!-- 配置项目中需要被打包的文件的存储路径 -->
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory>/config</outputDirectory>
<includes>
<!-- 可以指定单个文件 -->
<!--<include>project.config</include>-->
<!-- 可以直接指定所有文件 -->
<include>*.*</include>
</includes>
</fileSet>
<!-- 把项目的配置文件,打包进zip包的根目录下 -->
<fileSet>
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>scf*.xml</include>
</includes>
</fileSet>
<!-- 把项目自己编译出来根目录下的jar文件,打包进zip文件的根目录 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 把项目自己编译出来的jar文件夹下的jar文件,去除第三方jar,打包进zip文件的根目录 -->
<fileSet>
<directory>${project.build.directory}/jar</directory>
<outputDirectory></outputDirectory>
<excludes>
<exclude>lib/*.jar</exclude>
</excludes>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
运行maven的package后,会进行编译和打包,按照上述的配置会多产生一个 testProject-bin.zip
文件
或者直接运行plugins-assembly下的 assembly:single
,这样项目不会重新编译,只会将相应的文件按照上述配置打包成 testProject-bin.zip
文件
testProject-bin.zip文件解压后的目录结构:- testProject-bin.zip -- testProject -- -- config -- -- -- project.config -- -- -- project2.config -- -- lib -- -- -- log4j-core-2.8.2.jar -- -- -- mybatis-3.2.3.jar -- -- -- ... -- -- testProject.jar -- -- log4j2.xml
下面对上述简单介绍一下:
id:添加到打包文件名的标识符,用来做后缀;例如
dependencySets/dependencySet设置工程依赖文件在打包时的属性。也与fileSets大致相同,不过还有两个特殊的配置:
unpack:布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包。
scope:表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime。
fileSets/fileSetfileSet用来设置一组文件在打包时的属性
directory:源目录的路径
includes/excludes:设定包含或排除哪些文件,支持通配符
fileMode:指定该目录下的文件属性,采用Unix八进制描述法,默认值是0644
outputDirectory:生成目录的路径
files/file与fileSets大致相同,不过是指定单个文件,还可以通过destName属性来设置与源文件不同的名称
参考:官网:assembly插件官网介
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
面试题
】即可获取