【问题标题】:Maven Assembly Submodules MultimodulesMaven 组装子模块 多模块
【发布时间】:2012-02-01 09:33:30
【问题描述】:

您好,我需要从主目录中的多模块项目中组装 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 的描述符不处理它([ERROR] 你必须至少指定一个文件)。我尝试了几个附加标签,例如 includeSubModules... 仍然没有。

【问题讨论】:

  • 你的&lt;dependencies&gt;呢?
  • 我正在尝试组装我的模块,而不是它们的依赖项
  • 也许我错了,但&lt;module&gt; 只是告诉在反应器中添加其他poms,但它不提供任何依赖项。因此,在添加依赖项之前,您不能在任何地方引用这些模块,包括程序集描述符。
  • 但如果我将 A1、A2、B1、B2 作为依赖项添加为模块,它们将不会在打包阶段构建 - 只是在存储库中查找,不是吗?
  • 显然,如果你想要构建和依赖,你应该添加 &lt;module&gt;&lt;dependency&gt;

标签: maven multi-module


【解决方案1】:

承诺的解决方案(主程序集描述符):

<moduleSets>
 <moduleSet>
    <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>jars/${artifactId}</outputDirectory>
        <unpack>false</unpack>
    </binaries>
 </moduleSet>
</moduleSets>

如您所见 - 没有像 A3 和 B3 中那样使用 &lt;include&gt; 指向特定模块

<includes>
 <include> 
  (...) 
 </include>
</includes>

这确实很奇怪。尽管如此工作。

【讨论】:

    【解决方案2】:

    &lt;module&gt; 只是告诉在反应器中添加其他poms,但它不提供任何依赖项。因此,在添加依赖项之前,您不能在任何地方引用这些模块,包括程序集描述符。

    如果你想要构建和依赖,你应该添加 &lt;module&gt;&lt;dependency&gt;

    【讨论】:

    • 我找到了解决问题的方法,但我还不能回答我自己的问题...我会在 7 小时内发布;)
    • 嘿,好的,很有趣。
    猜你喜欢
    • 2011-05-02
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多