消除Maven POM冗余

我有一个父POM与以下配置

com.example parent 1.2-SNAPSHOT 

从此父POMinheritance的每个子项目都具有如下配置:

  com.amadeus.jcp.ui.skinning.skinning-system parent 1.2-SNAPSHOT  

我希望所有这些项目版本号保持同步。 目前,如果我将父版本更改为1.3,则必须将所有子项目版本更改为1.3。 有什么办法可以避免重复所有子项目中的版本号吗?

我尝试用以上代替

  com.amadeus.jcp.ui.skinning.skinning-system parent  

  com.amadeus.jcp.ui.skinning.skinning-system parent ${project.version}  

但这些都不奏效。 我正在使用Maven 2.1.0版。

谢谢,唐

我尝试用(…)和(…)替换上面的内容,但这些都不起作用。 我正在使用Maven 2.1.0版。

不可能。 使用Maven 2.x,您必须在子模块中声明parent元素,并且parent元素必须包含硬编码version (您不能省略它并且您不能使用属性,请参阅此前一个答案和MNG-624 )。

但是,Maven 3.1将支持无版本的父元素 (参见前面的答案 )。

同时,一些插件可以使维护更容易,如Maven Release Plugin或Versions Maven Plugin及其versions:setversions:update-child-modules目标。

你不应该在子模块中定义一个版本…但你必须在父定义中给出…

 +--- root +--- pom.xml (Parent) +--- module1 +-- pom.xml (child 1) 

您还应该在您的孩子中定义一个relativePath …

  com.example parent 1.2-SNAPSHOT ../pom.xml  ... ... 

如果你这样做了,你永远不应该在你的父母那里手动更改版本号…让发布插件完成工作它将改变所有孩子(父母)的版本条目appropietaley …如果你真的需要改变事情有时候使用maven-version-plugin …