ITPub博客

首页 > 数据库 > 数据库开发技术 > maven父子工程多模块如何管理统一的版本号?

maven父子工程多模块如何管理统一的版本号?

原创 数据库开发技术 作者:hblog 时间:2024-09-12 19:37:37 0 删除 编辑

1.为什么要统一管理?

maven父子工程多模块,每个模块还都可以独立存在,子模块往往通常希望和父工程保持一样的版本,如果每个工程单独定义版本号,后期变更打包也非常麻烦,如何维护一个全局的版本号呢?

2.如何解决呢?

Maven官方文档说:自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。

即在maven多模块项目中,可配合插件flatten-maven-plugin及${revision}属性来实现全局版本统一管理。

父工程


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> <version>2.7.18</version> </parent> <groupId>com.xxx.project</groupId> <artifactId>xxx-parent</artifactId> <packaging>pom</packaging> <version>${revision}</version> <modules> <module>module1</module> <module>module2</module> <module>module3</module> </modules>
<properties> <!-- globe version,if you can update the version for all project --> <revision>1.1.1</revision> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <build> <plugins> <!-- 添加flatten-maven-plugin插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> <version>1.3.0</version> <inherited>true</inherited> <executions> <execution> <id>flatten</id> <phase>process-resources</phase> <goals> <goal>flatten</goal> </goals> <configuration> <updatePomFile>true</updatePomFile> <flattenMode>resolveCiFriendliesOnly</flattenMode> <pomElements> <parent>expand</parent> <distributionManagement>remove</distributionManagement> <repositories>remove</repositories> </pomElements> </configuration> </execution> <execution> <id>flatten.clean</id> <phase>clean</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>

子模块


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>xxx-parent</artifactId> <groupId>com.xxx.project</groupId> <version>${revision}</version> </parent> <modelVersion>4.0.0</modelVersion>
<artifactId>module3</artifactId>
<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies>
<dependency> <groupId>com.xxx.project</groupId> <artifactId>module1</artifactId> <version>${revision}</version> </dependency> </dependencies>

</project>

编译

mvn clean package

  基于以上操作,每次版本号变更,只需要修改父模块POM文件中的revision即可

3.引用

  • https://maven.apache.org/maven-ci-friendly.html

原文作者:HBLOG;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-05-04

  • 博文量
    210
  • 访问量
    111735