Maven重写子模块交叉引用的命令行属性

Maven重写子模块交叉引用的命令行属性,maven,dependencies,maven-3,pom.xml,Maven,Dependencies,Maven 3,Pom.xml,我有一个多模块maven项目,它有一个父pom和两个孩子child1和child2。child1和Child2各为两个子模块,各为 儿童1->儿童11,儿童12 Child2->child21,Child22 子12对版本为${my.version}的子21具有依赖关系。 子22对版本为${my.version}的子12具有依赖性 最顶层的父pom的默认属性为1.0.0,所有子项都使用${my.version}进行版本设置 现在,如果我运行“mvn clean install-Dmy.versi

我有一个多模块maven项目,它有一个父pom和两个孩子child1和child2。child1和Child2各为两个子模块,各为

儿童1->儿童11,儿童12 Child2->child21,Child22

子12对版本为${my.version}的子21具有依赖关系。 子22对版本为${my.version}的子12具有依赖性

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

现在,如果我运行“mvn clean install-Dmy.version=1.0.2”,我在模块Child 22中会遇到一个故障,即无法找到版本为1.0.0的依赖项Child 21。我猜这里有些地方做得不正确,当子模块之间存在跨模块依赖关系时,命令行不会100%重写属性my.version

如果我从最顶层的pom.xml中删除1.0.0并运行命令mvncleaninstall-Dmy.version-1.0.2,它将正常工作

我有一个样本项目创建,以证明在需要的情况下这一点


谢谢

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


要更改所有模块的版本,请使用maven版本插件或maven发布插件。

谢谢您的回答。我确实希望所有模块和子模块都具有由my.version属性引用的相同版本。仅当未通过命令行提供-Dmy.version时,将使用默认的my.version(1.0.0)生成所有模块。如果我用1.0.2覆盖my.version,我希望所有模块都是1.0.2版本