1. 背景
工程中免不了要通过maven打包。
2. maven三种打包插件
plugin
function
site
maven-jar-plugin
maven 默认打包插件,用来创建 project jar
maven-shade-plugin
用来打可执行包,executable(fat) jar
http://maven.apache.org/plugins/maven-shade-plugin/
maven-assembly-plugin
支持定制化打包方式,例如,apache 项目的打包方式
http://maven.apache.org/components/plugins/maven-assembly-plugin/
我们主要打zip包,也就是使用maven-assembly-plugin。
3. maven assembly plugin
maven assembly plugin允许用户将依赖项、模块、文档和其他文件聚合到一个可发布的归档文件中。
我们可以通过预制的描述文件打包文件,这些描述可以处理常见操作,比如打包工程包和文件到一个zip文件里面。
其实我们也可以自定义描述文件对依赖包,模块,file-sets和单个文件更高级别的控制。
当前支持如下格式的文件打包:
zip
tar
tar.gz (or tgz)
tar.bz2 (or tbz2)
tar.snappy
tar.xz (or txz)
jar
dir
war
and any other format that the ArchiveManager has been configured for
假如你想把工程打包成一个uber-jar,可以参考Maven Shade Plugin,不在本文讨论范围。
使用maven assembly plugin的步骤如下:
在工程的pom.xml文件里面配置assembly plugin
运行mvn assembly:single命令
4. 实例
首先给个官方的demo地址
4.1 创建一个maven工程mvnassembly
为了演示创建lib文件夹,放入随意两个jar包,创建资源目录src/main/resources,并随机放入一个文件。
创建完之后目录结构如下:
4.2 自定义assembly描述文件-assembly.xml
assembly.xml文件与pom.xml同级,内容如下:
描述文件格式请参考:http://maven.apache.org/components/plugins/maven-assembly-plugin/assembly.html
myzip
zip
lib
lib
src/main/resources
.
lib
false
runtime
4.3 在工程的pom.xml文件里面配置assembly plugin
4.0.0
com.lujiango
mvnassembly
0.0.1-SNAPSHOT
jar
mvnassembly
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
org.apache.commons
commons-collections4
4.0
org.apache.maven.plugins
maven-assembly-plugin
2.2
assembly.xml
make-assembly
package
single
4.4 打包
因为我使用的是eclipse,所以我直接通过右击工程->Run As-> Maven clean,然后在右击工程->Run As->Maven install,就可以打包了。
4.5 检查zip包
打出的包为mvnassembly-0.0.1-SNAPSHOT-myzip.zip,符合artifactId-version-id.zip命名格式。
打开zip包,是一个文件夹:
点击进入:
进入lib目录:
验证是OK。