组件的Maven组装
我有一个多模块maven 2项目,它使用程序集(通过包装阶段的maven-assembly-plugin)以某种方式打包每个模块。然后,我尝试使用另一个模块将这些程序集合并成一个可分发的“安装程序”包。对于安装程序模块,我可以看到来自其他项目的默认jar,但我没有做任何事情似乎让我可以访问额外的程序集。从文档看来,这应该是可能的,所以我认为我要么做错了什么,要么是Maven中的错误?我一直坚持这几天,所以任何帮助将不胜感激!组件的Maven组装
继续从评论我已经在github上创建了一个测试项目来演示这个,proj1模块创建了2个jar文件。我期望在“包”模块中生成的程序集将它们都包含在内,但它不包括主项目jar。
https://github.com/unluckypixie/maven-packaging-test
请注意:我知道坛子里的proj1一个内容是在这个例子中是相同的 - 但他们不是在我的现实生活中的情况,我觉得没有什么是在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>
我已经设法通过我的汇编文件中使用attachmentClassifier得到这个工作,e.g:
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>org.me:*</include>
</includes>
<binaries>
<outputDirectory>/output/dir</outputDirectory>
<unpack>false</unpack>
<includeDependencies>false</includeDependencies>
<attachmentClassifier>my-assembly</attachmentClassifier>
</binaries>
</moduleSet>
感谢khmarbaise您的帮助,我可能还没有使用你的解决方案,但它帮助我那里!
我已经创建了你的帖子一example project based(做了一些修正它),如果我做了
mvn clean package
,我发现下包/ target/package-1.0.0-SNAPSHOT-package-assembly.zip其中包含
package/
package/proje1-1.0.0-SNAPSHOT.jar
package/package-1.0.0-SNAPSHOT.jar
它看起来不错我。问题是你期望的是什么?
如果你看看你的proj1目标文件夹,应该有两个输出罐,一个是你得到的,另一个是程序集名称作为后缀,例如, “proje1-1.0.0-SNAPSHOT-proj1-assembly.jar”那是我之后的那个。所以我总结一下,在输出文件中应该有3个罐子,两个叫做proj1 *,另一个叫做package *。 – 2012-07-30 15:08:22
下面你的例子我已经创建了一个测试项目在git集线器...我没有发布在*之前,所以我没有想到这一点。 – 2012-07-30 15:37:31
增加了pull请求来解决您的问题。 – khmarbaise 2012-07-30 17:00:23