由于执行顺序,使用子项作为模块时,父级中的Maven dependencyManagement失败

时间:2012-06-19 12:01:52

标签: maven maven-dependency-plugin

是否有更简单的方法强制maven在模块之前构建父级?

用例: 我试图了解解决以下问题的最佳做法是什么

我有两个项目,我将其命名为'A'和'B' 他们都有一个父母,我将其命名为'P'

'P'具有共享资源的依赖关系管理,这将允许对共享工件使用相同的版本。

'P'也用于运行'A'和'B'作为模块。

问题: 添加新工件时,我将在'P'中添加版本,在'A'中添加依赖项(例如)。现在,在进行maven clean安装时,我的'dependencies.dependency.version'缺失了。

这是因为maven首先在自己之前构建模块,然后'A'没有版本。

我知道我可以在下面输入'A'pom: ../ 它有效(但并非总是如此)。

回到我的问题:是否有更简单的方法强制maven在模块之前构建父级?

2 个答案:

答案 0 :(得分:1)

我发现我的问题不仅仅是上面提到的相对路径,而是我的父pom版本是变量$ {version}并且在构建期间没有被替换。

为了解决这个问题,我硬编码在父POM中编写了父版本。

答案 1 :(得分:0)

在你的情况下,就是模块'parent == modules'聚合器的情况,Maven应该在模块之前构建父模块,只要它们在同一个构建反应器中,这通常意味着你应该从模块中构建所有模块。 P项目级别。即使你不这样做,如果你有适当的<relativePath&gt;,父母应该得到解决。模块“<parent>中的pom.xml块中的标记(例如,查看here)。默认情况下,此处有..值,表示工件的父级位于文件系统的父目录中。