Maven Assembly Submodules Multimodules

时间:2012-02-01 09:33:31

标签: maven multi-module

您好我需要从主目录中的multimodule项目组装jar。让我们有这样的结构:

MASTER(pom)
|
+-A3(pom)
| +-A1(jar)
| +-A2(jar)
+-B3(pom)
  +-B1(jar)
  +-B2(jar)

我想要实现的是在MASTER中组装所有jar包装模块。

jars/
+- A1.jar
+- A2.jar
+- B1.jar
+- B2.jar

现在我通过创建pom.xml来实现对子模块(A3和B3)的良好分辨率:

<modules>
 <module>../A1</module>
 <module>../A2</module>
</modules>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/bin.xml</descriptor>
                        </descriptors>
                    </configuration>
        </plugin>
    </plugins>
 </build>

和汇编描述符:

<moduleSets>
  <moduleSet>
    <includes>
      <include>org.mycompany:A1</include>
      <include>org.mycompany:A2</include>
    </includes>
    <binaries>
      <includeDependencies>false</includeDependencies>
      <outputDirectory>jars/${artifactId}</outputDirectory>
      <unpack>false</unpack>
    </binaries>
  </moduleSet>
</moduleSets>

当我这样做时

mvn clean package assembly:assembly
分别在子模块(A3或B3)上,它们似乎可以自己组装自己的子模块。

我不知道如何在MASTER中指定汇编描述符。类似于A3和B3描述符的那个描述符不处理它([错误]你必须指定至少一个文件)。我尝试了几个额外的标签,比如includeSubModules ......仍然没有。

2 个答案:

答案 0 :(得分:1)

承诺的决议(Master Assembly Descriptor):

<moduleSets>
 <moduleSet>
    <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>jars/${artifactId}</outputDirectory>
        <unpack>false</unpack>
    </binaries>
 </moduleSet>
</moduleSets>
你可以看到

- 没有像A3和B3那样指向具有<include>的特定模块

<includes>
 <include> 
  (...) 
 </include>
</includes>
这确实很奇怪。尽管如此。

答案 1 :(得分:0)

<module>只是告诉我在反应堆中添加其他pom,但它没有提供任何依赖关系。因此,除非添加依赖项,否则无法在任何地方引用这些模块,包括程序集描述符。

如果您想要,构建和依赖,则应添加<module><dependency>