我有一个具有以下配置的父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。
谢谢,唐
发布于 2010-07-08 21:37:00
我尝试用(...)替换上面的代码和(...)但这两种方法都不管用。我使用的是Maven版本2.1.0。
不可能。在Maven2.x中,您必须在子模块中声明parent元素,并且parent元素必须包含硬编码的version (您不能省略它,也不能使用属性,请参阅this previous answer和MNG-624)。
然而,Maven3.1将支持无版本父元素(请参阅this previous answer)。
同时,一些插件可以使维护变得更容易一些,比如Maven Release Plugin或Versions Maven Plugin及其versions:set或versions:update-child-modules目标。
发布于 2010-07-08 19:44:11
你不应该定义一个版本...在子模块中,但您必须在父定义中给出它...
+--- 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>如果你这样做了,你永远不应该在你的parent...let中手动更改版本号发布插件做的工作,它会改变所有孩子(父母) appropietaley...if中的版本条目你真的需要改变东西,有时使用maven-version-plugin...
https://stackoverflow.com/questions/3203088
复制相似问题