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 ...
随机推荐
- Centos7 unzip文件名中文乱码
Centos7 unzip文件名中文乱码 前言 今天在批量处理windos文件时为了方便操作,将windos下面的文件夹打成zip包上传至centos7中解压处理,发现解压后中文文件名变成了乱码,如下 ...
- .NET 云原生架构师训练营(Identity Server)--学习笔记
目录 OAuth 2.0 OpenID Connect QuickStart OAuth 2.0 概念 过程 通信 组件 示例代码 概念 OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是 ...
- 『心善渊』Selenium3.0基础 — 14、Selenium对单选和多选按钮的操作
目录 1.页面中的单选按钮和多选按钮 2.判断按钮是否选中is_selected() 3.单选按钮的操作 4.多选按钮的操作 5.选择部分多选按钮的操作 1.页面中的单选按钮和多选按钮 页面中的单选按 ...
- LevelDB学习笔记 (2): 整体概览与读写实现细节
1. leveldb整体介绍 首先leveldb的数据是存储在磁盘上的.采用LSM-Tree实现,LSM-Tree把对于磁盘的随机写操作转换成了顺序写操作.这是得益于此leveldb的写操作非常快,为 ...
- Blazor Server 和 WebAssembly 应用程序入门指南
翻译自 Waqas Anwar 2021年3月12日的文章 <A Beginner's Guide To Blazor Server and WebAssembly Applications&g ...
- 腾讯互动白板+即时通讯+实时音视频,Android学生端接入
腾讯互动白板+即时通讯+实时音视频,Android学生端接入 一.简介 线上教学方案:腾讯云互动白板(Tencent Interactive Whiteboard,TIW)+即时通信(Instant ...
- 前端 JavaScript 实现一个简易计算器
前端使用 JavaScript 实现一个简易计算器,没有难度,但是里面有些小知识还是需要注意的,算是一次基础知识回顾吧. 题目 实现一个简易版的计算器,需求如下: 1.除法操作时,如果被除数为0,则结 ...
- CentOS-yum安装Nginx
查看系统版本 $ cat /etc/redhat-release Nginx 不在默认的 yum 源中,使用官网的 yum 源 $ rpm -ivh http://nginx.org/packages ...
- Nginx:Nginx的安装
Nginx安装 首先安装依赖 #安装Nginx需要gcc openssl-devel pcre-devel zlib-devel依赖 yum -y install gcc openssl-devel ...
- Linux下使用Ansible处理批量操作
Ansible介绍: ansible是一款为类unix系统开发的自由开源的配置和自动化工具.它用python写成,类似于saltstack和puppet,但是不同点是ansible不需要再节点中安装任 ...