如何通过maven属性配置来统一管理多级项目的版本号(maven 子项目统一版本管理)

项目需求

可以通过配置来动态管理项目的版本号,包括snapshot版本。

问题描述

工程结构:A(父工程)–》B(子工程)–》C(孙工程)–》D重孙工程

B工程的parent指向A,C工程的parent指向B,D工程的parent指向C。

A应该保持相对版本稳定,所有的项目的parent指向A,这个办法看似可以,这个办法不能解决BC之间和CD之间的parent,编译的时候会报错,根本原因是parent中的version不能用表达式,必须是常量值。

解决办法

工程结构不变,在A下添加新工程E,让BCD的parent指向E,这样解决版本号问题。在E中将版本号作为一个属性来管理,A作为构建的入口工程,E用于配置工程的入口,AE版本号可以固定不变,BCD作为业务工程动态调整版本号码。工程A用于聚合,工程E用来继承;将聚合和继承分开管理,带来业务系统版本号的灵活处理。

工程结构:A(父工程)–》B(子工程)–》C(孙工程)–》D重孙工程

为了解决这个问题,我们引入了用于资源共享的父工程E,主要共享版本号和依赖包,所有工程的父工程都依赖这个工程,这样就解决了CD和DE项目依赖的版本问题。

E工程的pom里设置属性my.version,所有子工程BCD引用这个版本号。还有个好处是,使用mvn直接指定版本号,项目版本问题能得到灵活的解决。

mvn clean install -Dmy.version=5.0.0-SNAPSHOT

总结

这样我们就定义了两个工程A和E,A用于构建任务,我们通过聚合实现,E用于管理共享资源,我们通过继承来实现,A和E的版本号正式发版的时候来调整,测试和开发时保持不变,BCD业务工程的版本号,可以灵活设置,包括snapshot版本。这样就可以根据需要动态设置版本号,这种工程搭建方法,尤其适合是1个产品n个项目型的公司使用。

参考链接:

pom文档地址:https://maven.apache.org/pom.html
Maven 完全参考:http://books.sonatype.com/mvnref-book/reference/index.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(1)
上一篇 2022年10月7日 上午8:16
下一篇 2022年10月7日 上午8:18

相关推荐