我有多模块项目并使用maven的程序集插件来压缩项目的工件。
Proj
+Module A
pom.xml
+Module B
pom.xml
pom.xml
当我构建主模块时,它会产生以下内容
Proj
+Module A
target\A.jar
target\A-source.jar
target\A-javadoc.jar
+Module B
target\B.jar
target\B-source.jar
target\B-javadoc.jar
1)我在ModuleB pom文件下添加了程序集插件,我在程序集discriptor文件中使用ModuleSet
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>groupA:A:jar</include>
<include>groupA:A:javadoc</include>
<include>groupA:A:source</include>
</includes>
<binaries>
<outputDirectory>moduleA</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>groupB:B:jar</include>
<include>groupB:B:javadoc</include>
<include>groupB:B:source</include>
</includes>
<binaries>
<outputDirectory>moduleB</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
但是我在zip文件下只得到A.jar和B.Jar。我没有在zip文件中获取javadoc和source。它是从m2 repo下载它,我怀疑它是否这样做,因为源和java doc不会出现在maven reporee工件中。如何在zip文件中添加所有三个工件?
2)我想在我的父pom中添加汇编插件,而不是在ModuleB的pom中添加,但如果我这样做,我会得到一个例外“请确保在生成程序集之前运行包阶段”。谷歌搜索后,我发现很少有建议添加组件作为模块。还有其他方法可以解决这个问题吗?
答案 0 :(得分:3)
我使用dependecySet来解决这个问题,我们可以使用通配符来添加所有二进制文件。
<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>bin</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<includes>
<include>groupA:*:*:*</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
这将添加项目的所有二进制工件。还有一点需要注意的是汇编描述符中使用的id。它应该是二进制工件的bin。 如果有人遇到类似的问题,请在此处发布,这可能有所帮助。