Maven 按顺序构建所有内容

2024-05-14

我有一个项目,其中所有项目都有一个父 pom 定义如下:

<parent>
    <groupId>MyProject</groupId>
    <artifactId>MyApp</artifactId>
    <version>1.0</version>
</parent>

但是,此父 pom 并未在 module 元素中指定模块。

所以当我运行mvn install -f parent/pom.xml命令它不执行任何操作。

还有其他方法可以构建整个项目吗In Order这样所有的 pom 都被构建了吗?

我所说的“按顺序”是指“按依赖顺序构建”。由于多个项目依赖于其他项目,因此我们不能仅按字母顺序构建每个项目。


如果你有一个反应堆聚甲醛(一个带有<modules>元素,以及<packaging>定义为pom)然后模块将按照依赖顺序构建。无论 pom.xml 中指定模块的顺序如何,都会发生这种排序。

有几种方法可以解决这个问题:

Option 1

您的反应器 pom 不需要与您的父 pom 相同。所以你可以:

project/pom.xml          # Reactor pom with <modules> element
project/parent/pom.xml   # Parent pom
project/module-a/pom.xml # Some module 'a'
project/module-b/pom.xml # Some module 'b'

在这种情况下,反应器 pom 包含:

<modules>
  <module>parent</module>
  <module>module-a</module>
  <module>module-b</module>
</modules>

Running mvn install在顶层将构建您的父 pom,以及按依赖顺序排列的两个模块。

Option 2

将您的父 pom 向上移动一个目录,并将其用作父 pom 和reactor pom,因此您的项目如下所示

project/pom.xml          # Parent/Reactor pom with <modules> element
project/module-a/pom.xml # Some module 'a'
project/module-b/pom.xml # Some module 'b'

其中的模块部分看起来像这样

<modules>
  <module>module-a</module>
  <module>module-b</module>
</modules>

再次,跑步mvn install在顶层将构建您的父 pom,以及按依赖顺序排列的两个模块。

Option 3

将父 pom 保留在原处,然后添加模块部分:

<modules>
  <module>../module-a</module>
  <module>../module-b</module>
</modules>

在这种情况下,运行 mvn install -fparent/pom.xml 将构建父 pom,并按依赖顺序构建两个模块。

结论

我通常使用选项 2。这是 Maven 本身最常用的模式,我尽量避免偏离“常规路径”太远,该路径已被广泛理解和测试。

欲了解更多信息,请参阅使用多个模块的指南 http://maven.apache.org/guides/mini/guide-multiple-modules.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 按顺序构建所有内容 的相关文章

随机推荐