一、maven打包工具
使用maven对项目进行打包,可用以下三种plugin
- maveb-jar-plugin : maven默认打包插件,用来创建project jar
- maven-shade-plugin : 用来打可执行包(executable jar)
- maven-assembly-plugin : 支持定制化打包方式
下面简单介绍以下maven-assembly-plugin
二、使用方法
1、descriptorRefs
官方提供的定制化打包方式,包括bin,jar-with-dependencies,src,project。
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<!-- NOTE: We don't need a groupId specification because the group is
org.apache.maven.plugins ...which is assumed by default.
-->
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
[...]
</project>
2、descriptors
指定打包文件src/main/assembly/assembly.xml,在该配置文件内指定打包操作。
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
[...]
</project>
三、配置文件参数解释说明
1、id
<id>release</id>
id标识符,添加到生成文件名称的后缀符。如果指定id的话,目标文件名则是 a r t i f a c t I d {artifactId}- artifactId{id}.tar.gz
2、formats
maven-assembly-plugin 支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式
<formats>
<format>tar.gz</format>
<format>dir</format>
</formats>
3、fileSets
管理一组文件的存放位置,核心元素如下表所示:
元素
类型
作用
outputDirectory
String
指定文件集合的输出目录,该目录是相对于根目录
includes/include*
List
包含文件
excludes/exclude*
List
排除文件
fileMode
String
指定文件属性,使用八进制表达,分别为(User)(Group)(Other)所属属性,默认为 0644
<fileSets>
<fileSet>
<includes>
<include>bin/**</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<includes>
<include>/conf/**</include>
<include>logs</include>
</includes>
</fileSet>
</fileSets>
files
可以指定目的文件名到指定目录,其他和 fileSets 相同,核心元素如下表所示。
元素
类型
作用
source
String
源文件,相对路径或绝对路径
outputDirectory
String
输出目录
destName
String
目标文件名
fileMode
String
设置文件 UNIX 属性
<files>
<file>
<source>README.txt</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
工程目录结构示例