我有一个项目,我的所有项目都有一个像这样定义的父pom:
<parent>
<groupId>MyProject</groupId>
<artifactId>MyApp</artifactId>
<version>1.0</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
但是,此父pom不指定modules元素中的模块.
因此,当我运行mvn install -f parent/pom.xml命令时它不会做任何事情.
是否有其他方式我可以建立整个项目的顺序,以便所有的poms都建立?
"按顺序"我的意思是"建立依赖顺序".因为有几个项目依赖于其他项目,所以我们不能按字母顺序构建每个项目.
Mar*_*lis 13
如果你有一个reactor pom(带有<modules>元素的pom ,并<packaging>定义为pom),那么模块将按依赖顺序构建.无论pom中指定模块的顺序如何,都会发生这种排序.
有几种方法可以解决这个问题:
选项1
您的反应堆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'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,反应堆pom包含:
<modules>
<module>parent</module>
<module>module-a</module>
<module>module-b</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
mvn install在顶层运行将构建您的父pom,以及依赖顺序的两个模块.
选项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'
Run Code Online (Sandbox Code Playgroud)
其中的模块部分看起来像这样
<modules>
<module>module-a</module>
<module>module-b</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
同样,mvn install在顶层运行将构建您的父pom,以及依赖顺序的两个模块.
选项3
将您的父pom保留在原来的位置,并添加模块部分:
<modules>
<module>../module-a</module>
<module>../module-b</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,运行mvn install -f parent/pom.xml将构建父pom,并按依赖顺序构建两个模块.
结论
我通常使用选项2.这是maven本身最常用的模式,我尽量避免偏离"被打败的路径"太远,这被广泛理解和测试.
| 归档时间: |
|
| 查看次数: |
6642 次 |
| 最近记录: |