这些是如何使用 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 中指定的任何依赖项也将在程序集中放置其传递依赖项。