在Maven中,你能否继承父POM的版本号?

27

我有一堆类似这样的项目:

project1
project2
project3
........
project111

我是否可以在父文件夹中添加pom.xml文件,以便我可以为所有项目定义版本号一次?

3个回答

39

如果省略<version/>,则继承自父级。但是<parent/>元素必须包含一个<version/>用于父级,因此该版本必须出现在每个POM中,但只需出现一次。


1
你仍然需要在子POM中指定(父)版本号... - SScholl

25
你可以这样做:
parent pom.xml:
<project>
  ...
  <version>${my-project-version}</version>
  ...
  <properties>
    <my-project-version>1.1.1</my-project-version>
  </properties>
</project>

child pom.xml:
<project>
  ...
  <parent>
    <relativePath>../parent/pom.xml</relativePath>
    <version>${my-project-version}</version>
  </parent>
  ...
</project>

至少,对我来说是管用的。


1
但是你是否使用“-D”在命令行上设置了“my-project-version”? - oberlies
如果我没记错的话,我没有这样做。但是它确实需要父级目录已经在正确的相对路径中被检出。 - Alexey Romanov
8
很遗憾,这个解决方案在 Maven 3.0.4 中完全无效。 - cbaldan
这似乎在Maven 3中得到解决,警告信息为[WARNING] 'version' contains an expression but should be a constant. - haventchecked
2
要获取POM文件中的实际版本,您可以按照这里的详细信息操作:https://maven.apache.org/maven-ci-friendly.html - johnstosh
显示剩余3条评论

7
使用属性并引用它是可行的...除非您正在使用发布插件进行发布,在这种情况下,它会从版本中删除“-SNAPSHOT”,并自动将所有实例替换为真实版本号-这将覆盖您设置的任何替换变量。您最好在每个POM中设置它,并使用发布插件标记、增量和发布项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接