maven-assembly-plugin使用
1. maven-assembly-plugin是什么?
它是maven中提供的打包标准插件。
Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件。
2. maven-assembly-plugin使用步骤
- 在Maven工程的pom.xml文件里配置maven-assembly-plugin插件,引入Assembly描述符文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs> <!--指定描述符 -->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id><!--该execution的标记,可以自己取任意名称 -->
<phase>package</phase><!--绑定到package生命周期阶段上,如果省略,目标将绑定到其元数据中指定的默认值 -->
<goals>
<goal>single</goal><!-- 该打包任务只运行一次 -->
</goals>
</execution>
</executions>
</plugin>
- 需要指定一个Assembly描述符文件。该文件指定了打包格式,包含的文件/过滤的文件等信息,可以同时指定多个描述符文件,打包成不同的格式。
maven-assembly-plugin内置了几个可以用的assembly 描述符:
a. bin : 类似于默认打包,会将bin目录下的文件打到包中
b. jar-with-dependencies : 会将所有依赖都解压打包到生成物中
c. src :只将源码目录下的文件打包
d. project : 将整个project资源打包
下面是jar-with-dependencies 描述符的具体内容:
<?xml version='1.0' encoding='UTF-8'?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<!-- TODO: a jar format would be better -->
<!-- id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话(这里指定的是项目的版本),目标文件则是 ${artifactId}-${id}.jar。【如terminal-dispatch-jar-with-dependencies.jar】 -->
<id>jar-with-dependencies</id>
<formats>
<!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
<format>jar</format>
</formats>
<!-- 指定打的包是否包含打包层目录(比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下)-->
<includeBaseDirectory>false</includeBaseDirectory>
<!-- 指定将工程依赖的包打到包里的指定目录下 -->
<dependencySets>
<dependencySet>
<!-- 指定将这些依赖包打到包里根目录下 -->
<outputDirectory>/</outputDirectory>
<!-- 指定打包时是否包含工程自身生成的jar包 -->
<useProjectArtifact>false</useProjectArtifact>
<!--如果设置为true,此属性将解压缩所有依赖项输入到指定的输出目录中。当设置为false时依赖项将包含为归档(JAR)。只能打开包装jar、zip、tar.gz和tar.bz归档文件。默认值为false。 -->
<unpack>true</unpack>
<!-- 用于管理依赖的部署,runtime表示只在运行时使用 -->
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<!-- 指定要包含的文件集,可以定义多个fileSet -->
<fileSets>
<fileSet>
<!-- 指定归档文件(要打的jar包)要包含的目录(下的文件及文件夹) -->
<directory>${project.build.outputDirectory}</directory>
<!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)跟目录下) -->
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>