我有一个多模块 maven 2 项目,它使用程序集(在打包阶段通过 maven-assembly-plugin)以某种方式打包每个模块。然后我尝试使用另一个模块将这些程序集组合成一个可分发的“安装程序”包。对于安装程序模块,我可以从我的其他项目中看到默认 jar,但我所做的任何事情似乎都无法让我访问额外的程序集。从文档看来,这应该是可能的,所以我认为我要么做错了什么,要么是 Maven 中的错误?我已经坚持了好几天了,所以任何帮助都将不胜感激!
继评论之后,我在 github 上创建了一个测试项目来演示这一点,proj1 模块创建了 2 个 jar 文件。我希望“包”模块中生成的程序集包含它们,但它不只包含主项目 jar。
https://github.com/unluckypixie/maven-packaging-test
请注意:我知道 proj1 的 jar 的内容在这个例子中是相同的 - 但它们不是我的现实生活情况,我认为 proj1 文件中的内容与问题无关。
如果你运行:
mvn clean package
你ls proj1/target/*.jar
应该看到:
proj1/target/proj1-1.0-SNAPSHOT.jar
proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar
如果您查看包 jar :
jar -tvf package/target/package-1.0-SNAPSHOT-package-assembly.jar
你会看到类似的东西:
0 Mon Jul 30 16:27:00 BST 2012 META-INF/
106 Mon Jul 30 16:26:58 BST 2012 META-INF/MANIFEST.MF
0 Mon Jul 30 16:21:46 BST 2012 package/
2358 Mon Jul 30 16:21:44 BST 2012 package/proj1-1.0-SNAPSHOT.jar
2363 Mon Jul 30 16:21:46 BST 2012 package/package-1.0-SNAPSHOT.jar
我想知道为什么proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar
不在那里。
包装组件如下所示:
<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">
<id>package-assembly</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>org.test.parent:*</include>
</includes>
<binaries>
<outputDirectory>/package/</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
</assembly>