命令行中的Maven覆盖属性用于子模块交叉引用

时间:2013-12-20 08:36:18

标签: maven dependencies maven-3 pom.xml

我有一个多模块maven项目,它有一个父pom和两个子child1和child2。 child1和child 2中的每一个都是两个子模块,每个都是

Child1 - >孩子11,孩子12 Child2 - > 21岁的孩子,Child22。

Child 12对子21的依赖,版本为$ {my.version}。 Child 22对子12有依赖,版本为$ {my.version}。

最顶级的父pom的默认属性为1.0.0,所有子项都使用$ {my.version}进行版本编辑。

现在如果我运行“mvn clean install -Dmy.version = 1.0.2”,我在模块Child 22中失败,它无法找到版本1.0.0的依赖项Child 21。我猜这里没有正确完成某些事情,并且当跨子模块存在跨模块依赖关系时,属性my.version不会被命令行100%覆盖。

如果我从最顶层的pom.xml中删除1.0.0并运行命令mvn clean install -Dmy.version-1.0.2,它可以正常工作。

我创建了一个示例项目,以便在需要时证明这一点。

由于

1 个答案:

答案 0 :(得分:0)

我不明白为什么你想在同一个父母中有不同的版本。尝试对所有(子)模块使用相同的版本,并使用$ {project.version}进行引用。即使您更改版本,这也会保持稳定。

要更改所有模块的版本,请使用maven-version-plugin或maven-release-plugin。