需要自动升级版本的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-内部多个项目依赖自动升级版本的部署的更多相关文章

  1. eclipse maven jar工程导出项目依赖的jar包

    今天遇到个事,给业务开发/测试搞个了转换工具,是使用swing写的,依赖了很多的三方包,为了方便打算以bat方式提供,但是要导出依赖的三方jar,网上搜了下,如下(已测试): 一.导出到默认目录 ta ...

  2. 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例

     1 若想让maven项目依赖另外一个maven项目.被依赖的项目要在maven仓库中有对应的jar包,所以要对依赖的项目运行mvninstall命令. 2 新建第二个项目模块HelloFrien ...

  3. Maven 基础环境搭建 项目依赖jar包导入

    一.创建一个Maven工程 不清楚的话请查阅其它文档. 二.引入项目依赖的jar包 1.Spring 2.SpringMvc 3.Mybatis 4. 数据库连接池,驱动 5.其它(jstl.serv ...

  4. Eclipse下新建Maven项目、自动打依赖jar包

    当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...

  5. Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)

    不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...

  6. Maven解读:项目依赖管理如何优化

    Github地址:https://github.com/zwjlpeng/Maven_Detail Maven最大的好处莫过于其强大的依赖管理系统,在Pom配置文件中指定项目需要的Jar包的坐标,Ma ...

  7. Maven多模块项目依赖管理

    Maven多模块项目依赖管理及dependencies与dependencyManagement的区别 转自:http://blog.csdn.net/liutengteng130/article/d ...

  8. 【maven】maven查看项目依赖并解决依赖冲突的问题

    一.问题 项目开发过程中,经常会遇到jar冲突,然后maven根据自己的规则进行冲突解决,导致项目在运行的过程中报错. 1.maven自动解决依赖冲突的规则是什么? 2.如何查看当前项目的maven的 ...

  9. 导出maven项目依赖的jar包

    注意使用mvn命令是需要配置好maven的环境变量 一.导出到自定义目录中 在maven项目下创建lib文件夹,输入以下命令: mvn dependency:copy-dependencies -Do ...

随机推荐

  1. hackthebox TheNotebook

    前言 只拿到了user,提权没成功--有wp说是CVE-2019-5736,我没打成. 打点 nmap-sV -v -A 10.10.10.230 端口扫描结果: PORT STATE SERVICE ...

  2. Apache Hudi在Hopworks机器学习的应用

    Hopsworks特征存储库统一了在线和批处理应用程序的特征访问而屏蔽了双数据库系统的复杂性.我们构建了一个可靠且高性能的服务,以将特征物化到在线特征存储库,不仅仅保证低延迟访问,而且还保证在服务时间 ...

  3. 入门Kubernetes - 滚动升级/回滚

    一.前言 上一篇文章中对yaml文件格式进行了解,并对k8s中各种主要资源通过yaml创建时的定义模板.接来下就进一步学习k8s的各种特点.并应用在示例中. 接下来先实现.Net Core Api程序 ...

  4. 24、dhcp服务搭建

    1.dhcp介绍: DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配 TCP/IP 信息的网络协 ...

  5. Vue 消除Token过期时刷新页面的重复提示

    1.问题现象   页面长时间未操作,再刷新页面时,第一次弹出"token失效,请重新登录!"提示,然后跳转到登录页面,接下来又弹出了n个"Token已过期"的后 ...

  6. 查看JVM中的线程名

    实例说明 在Java虚拟机中(JVM):除了用户创建的线程,还有服务于用户线程的其他线程.它们根据不同的用途被分到不同的组中进行管理.本实例将演示JVM中线程的名字及其所在组的名称. 关键技术 线程组 ...

  7. Ubuntu 更换内核

    Ubuntu 更换内核步骤: 下载内核源码,例如wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz 按照需要的环境,sudo ap ...

  8. 「万字图文」史上最姨母级Java继承详解

    摘要:继承是面向对象软件技术中的一个概念.它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用. 本文分享自华为云社区<「万字图文」史上最姨母级Java继承详解丨[奔跑吧!JAVA] ...

  9. 资源:jenkins下载路径

    Jenkins版本下载路径 所有版本:http://mirrors.jenkins.io/war/

  10. Docker部署Redis集群(主从复制 高可用)

    环境 vmware12+centos7 关于环境安装可以参考我的另一篇博客 https://www.cnblogs.com/pengboke/p/13063168.html 1.清理环境 我这里用的虚 ...