在单个反应器中构建递归模块

时间:2014-07-30 13:19:45

标签: java maven

给出一些像这样的maven模块结构:

            a1
        A   a2
            a3
parent
            b1
        B   b2
            b3

有一个根模块parent,将AB声明为子模块。每个子模块都有三个其他子模块。

如果我mvn clean package -f parent/A,它将构建A及其所有子模块。

但如果a1取决于b1,则无法解决该依赖关系。

如果我mvn clean package -f parent -am -pl A/a1,它将构建a1及其依赖b1

问题:如何在正确解析依赖关系的同时构建A的所有子模块?

我希望像mvn clean package -f parent -am -pl A之类的东西,但这实际上只构建A而不构建其子模块。

我是否真的必须明确指定所有子模块,或者是否可以像第一个示例中那样简单地构建所有子模块?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我想以递归方式从项目构建脚本中构建子模块列表。我目前的解决方法是让我的脚本临时添加子模块的每个模块作为子模块的pom的依赖。

如果我想从a构建所有项目并解决它们的依赖关系,我会将以下内容添加到我的pom中:

<dependencies>

  <dependency>
    <groupId>stackoverflow</groupId>
    <artifactId>a1</artifactId>
    <version>1.0.0</version>
  </dependency>
  <dependency>
    <groupId>stackoverflow</groupId>
    <artifactId>a2</artifactId>
    <version>1.0.0</version>
  </dependency>
  <dependency>
    <groupId>stackoverflow</groupId>
    <artifactId>a3</artifactId>
    <version>1.0.0</version>
  </dependency>

</dependencies>

然后我执行

mvn install -pl A -am

这有效,但绝对是一个丑陋的黑客。我想要一个选项来指定要构建的模块列表,比如

mvn install -ml(module-list) A

我可以从命令控制台运行。