Maven Assembly插件 - 多模块项目 - 源和javadoc没有添加到zip文件

时间:2012-05-15 22:42:44

标签: maven-2 maven-assembly-plugin

我有多模块项目并使用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中添加,但如果我这样做,我会得到一个例外“请确保在生成程序集之前运行包阶段”。谷歌搜索后,我发现很少有建议添加组件作为模块。还有其他方法可以解决这个问题吗?

1 个答案:

答案 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。 如果有人遇到类似的问题,请在此处发布,这可能有所帮助。