需要自动升级版本的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. 16、编译安装ansible

    16.1.python版本说明: Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点, 其中saltst ...

  2. 27、Tomcat服务的安装与配置

    服务器名称 ip地址 slave-node1 172.16.1.91 27.1. Tomcat简介: Tomcat是Apache软件基金会(Apache Software Foundation)的Ja ...

  3. 企业管理CRM不只是客户录入系统

    企业在举办营销活动或者展会之后,将会收集到大量的客户信息,将这些信息有效地整理.完善.储存也是一个不小的工程.如果您的企业经常面遇到这样的情况,不妨使用Zoho CRM系统来帮您完成.但是,Zoho ...

  4. CRM系统不仅给企业带来更多收益而且提升销售效率

    将客户信息记录在CRM系统的数据库中,同时共享沟通数据给售前.售后.SDR等上下游,客户资源还能够按照分配规则分配给适合的销售人员,帮助更快成单.全面使用CRM系统会给企业带来更多业绩. 1.全方位客 ...

  5. RabbitMQ重试机制

    消费端在处理消息过程中可能会报错,此时该如何重新处理消息呢?解决方案有以下两种. 在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些消息进行处理: ...

  6. Sublime3 markdown preview 修改输出的html页面默认宽度

    在sublime3 中安装了 Markdown Preview,Ctrl+B生成的HTML页面显示很窄,默认值为width: 45em,很多代码不能完整显示,需要拖动进度条,于是想要调整默认的宽度. ...

  7. yield生成器demo代码

    <?phpfunction get_val1($n = 10000*100){ $arr = []; for($i = 0; $i <= $n;$i++){ $arr[] = $i; if ...

  8. XCTF 进阶区 CAT

    这题脑洞是真的大,讲道理 看到这个,先尝试了一下命令拼接,发现字符被过滤了应该.fuzz一下看看,有哪些字符还没被过滤了 import requests dictory=["!", ...

  9. scrapy-redis的搭建 分布式爬虫 去重

    master:一.spider文件1.需要更改继承的类from scrapy_redis.spiders import RedisSpider 2.注释掉start_urls 3.在爬虫目录下新创建一 ...

  10. ESP32省电模式连接WIFI笔记

    基于ESP-IDF4.1版本 main.c文件如下: #include <string.h> #include "freertos/FreeRTOS.h" #inclu ...