这些是如何使用 assembly:assembly 和 assembly:unpack 目标的简要示例。
要使用 assembly:assembly 目标,您必须定义要使用的描述符文件或从预定义的描述符 ids中定义 descriptorId 。
mvn assembly:assembly -Ddescriptor=path/to/descriptor.xml
在某些情况下,您只需要项目模块的 jar。您可以排除它们的依赖项,但如果您有 10 个模块,每个模块有 10 个依赖项怎么办?在只需要10个的地方排除100个是不是有点麻烦。要实现这个目标,请将“projectModulesOnly”参数设置为true,maven会为您完成。
mvn assembly:assembly -DprojectModulesOnly=true
mvn assembly:assembly -DdescriptorId=bin or mvn assembly:assembly -DdescriptorId=jar-with-dependencies or mvn assembly:assembly -DdescriptorId=src
你也可以在你的 pom.xml 中配置这个插件。要运行使用“mvn 程序集:程序集”。
<project>
...
<build>
...
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<descriptor>path/to/descriptor.xml</descriptor>
<finalName>final_name</finalName>
<outputDirectory>output/directory</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
</configuration>
</plugin>
</plugins>
...
</build>
...
</project>
您可以为组装存储库创建的最简单的描述符如下所示:
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<repositories>
<repository>
<outputDirectory>repository</outputDirectory>
</repository>
</repositories>
</assembly>
如果没有指定包含或排除,则所有依赖项都用于创建存储库。事实上,当您指定不包含时,默认情况下将包含它们全部,但如果您需要阻止某些工件进入您尝试组装的存储库,您仍然可以指定排除。
默认情况下,在组装存储库时不会生成存储库元数据。如果您尝试创建一个将用作远程存储库的存储库,那么您将需要生成元数据才能使其作为远程存储库正常运行。为此,只需使用includeMetadata元素启用存储库元数据生成:
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<repositories>
<repository>
<outputDirectory>repository</outputDirectory>
<includeMetadata>true</includeMetadata>
</repository>
</repositories>
</assembly>
请记住,在 POM 中指定的任何依赖项也将在程序集中放置其传递依赖项。