maven-assembly-plugin
插件用于将项目的构建输出和依赖项打包成分发格式,如 ZIP、TAR、JAR 等。它支持高度可配置的打包流程,可以创建包含多个模块、资源和依赖项的复杂分发包。以下是关于 maven-assembly-plugin
插件的详细用法介绍:
基本配置
在 pom.xml
文件中添加 maven-assembly-plugin
插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置说明
- groupId: 插件的组 ID,通常为
org.apache.maven.plugins
。 - artifactId: 插件的名称,这里是
maven-assembly-plugin
。 - version: 插件的版本号。
- executions: 定义了插件的执行阶段和目标。
- execution: 单个执行配置。
- id: 执行的 ID,这里是
make-assembly
。 - phase: 插件执行的生命周期阶段,这里是
package
。 - goals: 插件执行的目标,这里是
single
,表示生成单个分发包。 - configuration: 插件的具体配置。
- descriptors: 定义了描述文件的位置,这里是
src/main/assembly/assembly.xml
。
- descriptors: 定义了描述文件的位置,这里是
- id: 执行的 ID,这里是
- execution: 单个执行配置。
描述文件
描述文件是一个 XML 文件,用于定义包的内容和结构。以下是一个简单的描述文件示例:
<assembly xmlns="<http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3>" xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>" xsi:schemaLocation="<http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3> <http://maven.apache.org/xsd/assembly-1.1.3.xsd>">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<baseDirectory>/</baseDirectory>
<fileSets>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>/lib</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/conf</outputDirectory>
</fileSet>
</fileSets>
</assembly>
描述文件说明
- id: 分发包的 ID,这里是
bin
。 - formats: 定义分发包的格式,这里是
zip
。 - baseDirectory: 分发包的基目录,这里是
/
。 - fileSets: 定义了要包含在分发包中的文件集。
- fileSet: 单个文件集。
- directory: 文件集的源目录,这里是
target/classes
和src/main/resources
。 - outputDirectory: 文件集在分发包中的输出目录,这里是
/lib
和/conf
。
- directory: 文件集的源目录,这里是
- fileSet: 单个文件集。
使用命令
在项目根目录中执行以下命令来生成分发包:
mvn clean package
生成的分发包将位于 target
目录下,文件名通常为 项目名-版本号-bin.zip
。
通过上述配置和描述文件,你可以使用 maven-assembly-plugin
创建自定义的分发包,包含所需的文件和目录结构。