我有以下 POM 结构:
/home/projects/parent/pom.xml
<project>
<groupId>com.my.group</groupId>
<artifactId>project-super-parent</artifactId>
<version>${major.version}.${minor.version}</version>
<packaging>pom</packaging>
<properties>
<major.version>7</major.version>
<minor.version>5</minor.version>
<current.release.version>${major.version}.${minor.version}-SNAPSHOT</current.release.version>
...
</properties>
....
</project>
/home/projects/module1/pom.xml
<project>
<groupId>com.my.group</groupId>
<artifactId>module1</artifactId>
<version>${current.release.version}</version>
<packaging>jar</packaging>
<parent>
<groupId>com.my.group</groupId>
<artifactId>project-super-parent</artifactId>
<version>${major.version}.${minor.version}</version>
<relativePath>../parent</relativePath>
</parent>
...
</project>
请注意,模块不知道其父级的版本 - 它使用父级中定义的属性,因此这是一种鸡与蛋的问题。
奇怪的是 - 这有效 - 所以当我想更改产品的主要版本时 - 我只更改一个 pom 文件(父文件)。
此解决方案的限制是我必须在文件系统上拥有所有 POM 文件。
我的问题是:这是否可行?它究竟是如何工作的?当我升级到 maven 3 时它可能会停止工作吗?这是常用的解决方案还是滥用系统?
当前使用 Maven 2.2.1 和 Java 7。