Maven-内部多个项目依赖自动升级版本的部署
需要自动升级版本的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 参数
Maven-内部多个项目依赖自动升级版本的部署的更多相关文章
- eclipse maven jar工程导出项目依赖的jar包
今天遇到个事,给业务开发/测试搞个了转换工具,是使用swing写的,依赖了很多的三方包,为了方便打算以bat方式提供,但是要导出依赖的三方jar,网上搜了下,如下(已测试): 一.导出到默认目录 ta ...
- 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例
1 若想让maven项目依赖另外一个maven项目.被依赖的项目要在maven仓库中有对应的jar包,所以要对依赖的项目运行mvninstall命令. 2 新建第二个项目模块HelloFrien ...
- Maven 基础环境搭建 项目依赖jar包导入
一.创建一个Maven工程 不清楚的话请查阅其它文档. 二.引入项目依赖的jar包 1.Spring 2.SpringMvc 3.Mybatis 4. 数据库连接池,驱动 5.其它(jstl.serv ...
- Eclipse下新建Maven项目、自动打依赖jar包
当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...
- Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)
不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...
- Maven解读:项目依赖管理如何优化
Github地址:https://github.com/zwjlpeng/Maven_Detail Maven最大的好处莫过于其强大的依赖管理系统,在Pom配置文件中指定项目需要的Jar包的坐标,Ma ...
- Maven多模块项目依赖管理
Maven多模块项目依赖管理及dependencies与dependencyManagement的区别 转自:http://blog.csdn.net/liutengteng130/article/d ...
- 【maven】maven查看项目依赖并解决依赖冲突的问题
一.问题 项目开发过程中,经常会遇到jar冲突,然后maven根据自己的规则进行冲突解决,导致项目在运行的过程中报错. 1.maven自动解决依赖冲突的规则是什么? 2.如何查看当前项目的maven的 ...
- 导出maven项目依赖的jar包
注意使用mvn命令是需要配置好maven的环境变量 一.导出到自定义目录中 在maven项目下创建lib文件夹,输入以下命令: mvn dependency:copy-dependencies -Do ...
随机推荐
- winform/WPF 多语言的实现
WPF实现起来非常现代化,可以参考 https://www.cnblogs.com/yang-fei/p/4854460.html winform主要说一下实现过程和注意点,实现参考AutoUpdat ...
- 关于MySql数据库误操作数据找回的办法
先讲个事,前段时间,系统长时间不用的一个功能被开放出来了,想当然的我没有在测试平台上测试,直接操作了正式系统(的确是我不严谨),导致好多数据异常,页面展示错乱了.于是我想到的第一个就是进行备份还原.项 ...
- 旋转的球(animation与 transform)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 在vue中下拉框切换事件中改新建表单中的一个值,页面不显示
事件中改新建表单中的一个值,页面不显示,当另一个对象值发生改变时,这个页面上的值才会显示 由于新建表单是弹窗,在弹出时会重新给每个字段重新赋值,在赋值时没给这个字段赋值(常见新加功能时,加了一个字段, ...
- 重新整理 .net core 实践篇————熔断与限流[三十五]
前言 简单整理一下熔断与限流,跟上一节息息相关. 正文 polly 的策略类型分为两类: 被动策略(异常处理.结果处理) 主动策略(超时处理.断路器.舱壁隔离.缓存) 熔断和限流通过下面主动策略来实现 ...
- 2021年Wordpress手把手教你做个独立站——部署篇
2021年Woocommerce电商主题的安装部署教程 Woocommerce是一个Wordpress的一个流行的电商插件.完成Wordpress的安装即已完成80%.剩下的便是去寻找一款合适的自己喜 ...
- Android开发万能Utils(工具大全)
AndroidUtils Android开发不得不收藏的Utils About AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo ...
- 13、linux中用户和用户组
linux是多用户多进程的系统: 每个文件和进程都需要应对一个用户和用户组: linux系统通过uid和gid来识别用户和组的: 一个用户必须要有唯一的uid和一个主组来识别身份,不同的用户可以使用同 ...
- 96、linux之rpm包定制
96.1.rpm包定制介绍: 编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. yum安装软件,优点是全自动化安装, ...
- 什么是forward和include?
请求包含的例子 第一个Servlet (DispatcherServlet) @Override protected void doGet(HttpServletRequest req, HttpSe ...