我有一个带有以下配置的父POM
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.2-SNAPSHOT</version>
从此父POM继承的每个子项目都具有如下配置:
<parent>
<groupId>com.amadeus.jcp.ui.skinning.skinning-system</groupId>
<artifactId>parent</artifactId>
<version>1.2-SNAPSHOT</version>
</parent>
我希望所有这些项目版本号保持同步。目前,如果我将父版本更改为1.3,则必须将所有子项目版本更改为1.3。有什么方法可以避免重复所有子项目中的版本号吗?
我尝试用
替换上面的内容<parent>
<groupId>com.amadeus.jcp.ui.skinning.skinning-system</groupId>
<artifactId>parent</artifactId>
</parent>
和
<parent>
<groupId>com.amadeus.jcp.ui.skinning.skinning-system</groupId>
<artifactId>parent</artifactId>
<version>${project.version}</version>
</parent>
但这些都不奏效。我正在使用Maven 2.1.0版。
谢谢, 唐
答案 0 :(得分:3)
我尝试用(...)和(...)替换上面的内容,但这些都不起作用。我正在使用Maven 2.1.0版。
不可能。使用Maven 2.x,您必须在子模块中声明parent
元素,并且parent
元素必须包含硬编码的version
(您不能省略它,但您不能使用属性,请参阅this previous answer和MNG-624)。
但是,Maven 3.1将支持无版本的父元素(请参阅this previous answer)。
同时,某些插件可以使维护更轻松,例如Maven Release Plugin或Versions Maven Plugin及其versions:set
或versions:update-child-modules
目标。
答案 1 :(得分:0)
你不应该在子模块中定义一个版本...但你必须在父定义中给出...
+--- root
+--- pom.xml (Parent)
+--- module1
+-- pom.xml (child 1)
您还应该在孩子中定义一个relativePath ...
<parent>
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</version>
</parent>
<groupId>...</groupId>
<artifactId>...</artifactId>
如果你这样做了,你永远不应该在你的父母那里手动更改版本号...让发布插件完成工作它将改变所有孩子(父母)的版本条目appropietaley ...如果你真的需要更改内容有时会使用maven-version-plugin ...