Maven-内部多个项目依赖自动升级版本的部署

内部多个项目依赖自动升级版本的部署实战模拟

Posted by 飞云 on August 20, 2020

需要自动升级版本的AAA项目发布 (有内部依赖时) 步骤比较复杂, 有一些需要根据实际情况调整.

考虑了以下几种可能性:

  • 依赖模块的版本有更新
  • 依赖模块版本没更新
  • 依赖模块的版本号: 直接定义, 用属性定义的
  • 依赖项目已经升级过多次版本, 本项目没有跟进
  • 依赖项目跳过了几个版本(没有发布直接跳过), 发布了一个新版本

发布步骤:

一般有以下步骤:

2.0 (递归操作) 如果有依赖项目, 先发布依赖项目

人工决定发布顺序 (定好后则可以使用构建工具定义好运行顺序, 自动发布)

2.1 检测代码是否有更新, 如果没有, 则不需要重新编译. (步骤: 2.2, 2.3, 2.4, 2.5)

git pull 可以自己做一个git log 的hash缓存, 来做检测. (检测的依据是2.7步骤之后做标记) 如果不是自动发布, 则人工判断.

2.2 AAA项目依赖的项目版本更新到正式版

	#属性里面的版本号更新到最新正式版
	mvn versions:update-properties -DallowDowngrade=true -Dincludes=com.xxx:*,com.xxx.example:*   ---允许回溯到上一个正式版, 如果没有新的正式版
	
	#正常版本里面的版本号更新到最新正式版
	// mvn versions:use-releases -Dincludes=com.xxx:*,com.xxx.example:*
	mvn versions:force-releases -Dincludes=com.xxx:*,com.xxx.example:*   ---允许回溯到上一个正式版, 如果没有新的正式版		
	mvn versions:use-latest-releases -Dincludes=com.xxx:*,com.xxx.example:*

2.3 提交git修改 (可能: 如何判断)

	git add -u   仅监控已经被add的文件
	git commit -m "update dep version to product version"
	否则无法调用release

2.4. AAA项目正式发布

	本项目发布正式版本: 更新本项目版本为正式版本, 发布到仓库, 然后切换为下一个版本的snapshot. 同时在git仓库打了一个TAG
		mvn -B -DskipTests=true   release:clean release:prepare
		mvn -DskipTests=true   release:perform

2.5. 依赖的项目的版本更新到下一个snapshot版本

	mvn versions:update-properties  -DallowSnapshots=true -Dincludes=com.xxx:*,com.xxx.example:*   ---针对属性的更新, 必须有 allowSnapshots=true 
	//mvn versions:use-next-snapshots -Dincludes=com.xxx:*,com.xxx.example:*   --- 针对直接版本的依赖, 更新到下一个snapshot版本
	mvn versions:use-latest-snapshots -Dincludes=com.xxx:*,com.xxx.example:*   --- 针对直接版本的依赖, 更新到最新的snapshot版本

2.6. AAA项目发布snapshot版本 (准备开始下一个版本的开发)

	mvn -DskipTests=true deploy   ---发布到开发的仓库

2.7 推送到git

	git add -u
	git commit -m "update to next snapshot version for develop"
	git push	

	更新发布hash记录(参见2.1说明)

2.x. AAA项目开分支开发 (人工操作)

继续进行开发…

后续情况/优化方向

  • 分支修复 查看 release:branch 文档.
  • 预发布 release:stage
  • release:prepare 的 completionGoals参数,preparationGoals 参数

Page PV: