如果你有一个reactor pom(一个带有<modules>
元素的 pom,<packaging>
定义为pom
),那么模块将按依赖顺序构建。无论模块在 pom.xml 中指定的顺序如何,都会发生这种排序。
有几种方法可以解决这个问题:
选项1
你的 reactor pom 不需要和你的父 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'
在这种情况下,reactor pom 包含:
<modules>
<module>parent</module>
<module>module-a</module>
<module>module-b</module>
</modules>
mvn install
在顶层运行将构建你的父 pom,以及依赖顺序的两个模块。
选项 2
将你的父 pom 向上移动一个目录,并将它用作父 pom 和反应器 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,以及依赖顺序的两个模块。
选项 3
将您的父 pom 留在原处,并添加一个模块部分:
<modules>
<module>../module-a</module>
<module>../module-b</module>
</modules>
在这种情况下,运行 mvn install -f parent/pom.xml 将构建父 pom,以及依赖顺序的两个模块。
结论
我通常使用选项 2。它是 maven 本身最常用的模式,我尽量避免偏离被广泛理解和测试的“人迹罕至的路径”太远。
有关详细信息,请参阅使用多个模块的指南。