需要自动升级版本的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. winform/WPF 多语言的实现

    WPF实现起来非常现代化,可以参考 https://www.cnblogs.com/yang-fei/p/4854460.html winform主要说一下实现过程和注意点,实现参考AutoUpdat ...

  2. 关于MySql数据库误操作数据找回的办法

    先讲个事,前段时间,系统长时间不用的一个功能被开放出来了,想当然的我没有在测试平台上测试,直接操作了正式系统(的确是我不严谨),导致好多数据异常,页面展示错乱了.于是我想到的第一个就是进行备份还原.项 ...

  3. 旋转的球(animation与 transform)

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. 在vue中下拉框切换事件中改新建表单中的一个值,页面不显示

    事件中改新建表单中的一个值,页面不显示,当另一个对象值发生改变时,这个页面上的值才会显示 由于新建表单是弹窗,在弹出时会重新给每个字段重新赋值,在赋值时没给这个字段赋值(常见新加功能时,加了一个字段, ...

  5. 重新整理 .net core 实践篇————熔断与限流[三十五]

    前言 简单整理一下熔断与限流,跟上一节息息相关. 正文 polly 的策略类型分为两类: 被动策略(异常处理.结果处理) 主动策略(超时处理.断路器.舱壁隔离.缓存) 熔断和限流通过下面主动策略来实现 ...

  6. 2021年Wordpress手把手教你做个独立站——部署篇

    2021年Woocommerce电商主题的安装部署教程 Woocommerce是一个Wordpress的一个流行的电商插件.完成Wordpress的安装即已完成80%.剩下的便是去寻找一款合适的自己喜 ...

  7. Android开发万能Utils(工具大全)

    AndroidUtils Android开发不得不收藏的Utils About AndroidUtilCode  是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo ...

  8. 13、linux中用户和用户组

    linux是多用户多进程的系统: 每个文件和进程都需要应对一个用户和用户组: linux系统通过uid和gid来识别用户和组的: 一个用户必须要有唯一的uid和一个主组来识别身份,不同的用户可以使用同 ...

  9. 96、linux之rpm包定制

    96.1.rpm包定制介绍: 编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. yum安装软件,优点是全自动化安装, ...

  10. 什么是forward和include?

    请求包含的例子 第一个Servlet (DispatcherServlet) @Override protected void doGet(HttpServletRequest req, HttpSe ...