Maven pom版本继承
Maven pom version inheritance
我有 3 个项目 Parent,Child,SubChild。
Project Parent pom如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<groupId>mu.parent</groupId>
<artifactId>parent-system</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
.....
Project Child pom 定义如下,其 Parent 定义如下:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>mu.parent</groupId>
<artifactId>parent-system</artifactId>
<version>1.0</version>
</parent>
<groupId>mu.dummy.child</groupId>
<artifactId>child-backend</artifactId>
<name>child-backend</name>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>subChild-app</module>
</modules>
...
现在 subChild pom 如下,子项被定义为 subChild 的父项:
<parent>
<groupId>mu.dummy.child</groupId>
<artifactId>child-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>mu.dummy.subchild</groupId>
<artifactId>subchild-backend</artifactId>
<name>subchild-backend</name>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.project.test</groupId>
<artifactId>project</artifactId>
<version></version> --version of parent-system???
</dependency>
</dependencies>
是否可以在不硬编码的情况下在子后端中获取父系统(1.0)的版本?
您可以使用 CI-friendly 版本并为版本编写 ${revision}
,在主 pom 中设置此 属性(您从中构建所有内容)。
不过,您需要使用 flatten Maven 插件才能在存储库中获取正确的 POM。
我刚才问了一个类似的问题,并确定 groovy-maven-plugin
可以解决这个问题。参见 this answer。
我有 3 个项目 Parent,Child,SubChild。
Project Parent pom如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<groupId>mu.parent</groupId>
<artifactId>parent-system</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
.....
Project Child pom 定义如下,其 Parent 定义如下:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>mu.parent</groupId>
<artifactId>parent-system</artifactId>
<version>1.0</version>
</parent>
<groupId>mu.dummy.child</groupId>
<artifactId>child-backend</artifactId>
<name>child-backend</name>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>subChild-app</module>
</modules>
...
现在 subChild pom 如下,子项被定义为 subChild 的父项:
<parent>
<groupId>mu.dummy.child</groupId>
<artifactId>child-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>mu.dummy.subchild</groupId>
<artifactId>subchild-backend</artifactId>
<name>subchild-backend</name>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.project.test</groupId>
<artifactId>project</artifactId>
<version></version> --version of parent-system???
</dependency>
</dependencies>
是否可以在不硬编码的情况下在子后端中获取父系统(1.0)的版本?
您可以使用 CI-friendly 版本并为版本编写 ${revision}
,在主 pom 中设置此 属性(您从中构建所有内容)。
不过,您需要使用 flatten Maven 插件才能在存储库中获取正确的 POM。
我刚才问了一个类似的问题,并确定 groovy-maven-plugin
可以解决这个问题。参见 this answer。