在开始这篇文章之前,我需要指出我在去年才开始认真地与Git合作 。 不幸的是,我从事的许多项目仍在使用SVN或CVS,但现在我终于开始使用Git了 。

在过去的几年中,我使用Maven Release Plugin完成了许多软件发行。 我仍然记得我花了整整一个星期的时间才在我的一个项目中设置插件。 在大多数情况下,它都运行良好,但是如果出现问题,您可以花几个小时来解决问题。 天哪,噩梦!

最近,我想对Git项目执行相同的操作,并且遇到了Maven JGit-Flow插件 ,我必须告诉你,这太棒了! 设置非常容易,并且在第一次尝试时就可以完美地工作!

该插件基于Vincent Driessen在A成功的Git分支模型一 文中描述的开发模型。 花点时间阅读它,因为它非常有趣。

我将向您展示如何使用此插件执行发布。 我将使用有关Spring Batch的最新文章中的项目作为Wildfly Module 。

设定

设置非常简单,只需将以下内容添加到pom.xml

om-jgitflow-maven-plugin.xml

<plugin><groupId>external.atlassian.jgitflow</groupId><artifactId>jgitflow-maven-plugin</artifactId><version>1.0-m3</version><configuration><noDeploy>true</noDeploy></configuration>
</plugin>

我刚刚添加了noDeploy配置,因为我没有发布到Maven存储库。 而已!

释放

让我们看看我的项目分支和版本:

分行

radcortez:wildfly-spring-batch radcortez$ git branch -avv
* master                0b2364b [origin/master] Added documentation.remotes/origin/master 0b2364b Added documentation.
radcortez:wildfly-spring-batch radcortez$ mvn help:evaluate -Dexpression=project.version
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building wildfly-spring-batch 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.2:evaluate (default-cli) @ wildfly-spring-batch ---
[INFO] No artifact parameter specified, using 'com.cortez.wildfly.batch:wildfly-spring-batch:war:1.0-SNAPSHOT' as project.
[INFO]
1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

现在,只需运行mvn jgitflow:release-start

发布准备

radcortez:wildfly-spring-batch radcortez$ mvn jgitflow:release-start
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building wildfly-spring-batch 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jgitflow-maven-plugin:1.0-m3:release-start (default-cli) @ wildfly-spring-batch ---
[INFO] ensuring origin exists...
[INFO] (develop) Checking for SNAPSHOT version in projects...
[INFO] (develop) Checking dependencies and plugins for snapshots ...
What is the release version for "wildfly-spring-batch"? (com.cortez.wildfly.batch:wildfly-spring-batch) [1.0]:
[INFO] ensuring origin exists...
[INFO] (release/1.0) adding snapshot to pom versions...
[INFO] (release/1.0) updating poms for all projects...
[INFO] turn on debug logging with -X to see exact changes
[INFO] (release/1.0) updating pom for wildfly-spring-batch...
What is the development version for "wildfly-spring-batch"? (com.cortez.wildfly.batch:wildfly-spring-batch) [1.1-SNAPSHOT]:
[INFO] (develop) updating poms with next development version...
[INFO] (develop) updating poms for all projects...
[INFO] turn on debug logging with -X to see exact changes
[INFO] (develop) updating pom for wildfly-spring-batch...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

您将获得一个交互式菜单,以选择要发布的版本号,方法与Maven Release Plugin相同。 我开发的master分支,但在这个过程中release分支与发行版本和创建development分支与新开发版本。

发行准备分支

radcortez:wildfly-spring-batch radcortez$ git branch -avvdevelop               728856a [origin/develop] updating poms for 1.1-SNAPSHOT developmentmaster                0b2364b [origin/master] Added documentation.
* release/1.0           9f88a42 updating poms for branch '1.0' with snapshot versionsremotes/origin/master 0b2364b Added documentation.

现在,这很酷的事情是,一切仍在您的本地环境中! 如果您对更改不满意,则可以摆脱分支并重新开始。 此时未执行构建。

如果要发布,只需运行mvn jgitflow:release-finish

释放完成

radcortez:wildfly-spring-batch radcortez$ mvn jgitflow:release-finish
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building wildfly-spring-batch 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jgitflow-maven-plugin:1.0-m3:release-finish (default-cli) @ wildfly-spring-batch ---
[INFO] ensuring origin exists...
[INFO] running jgitflow release finish...
[INFO] ensuring origin exists...
[INFO] (release/1.0) Updating poms for RELEASE
[INFO] (release/1.0) removing snapshot from pom versions...
[INFO] (release/1.0) updating poms for all projects...
[INFO] turn on debug logging with -X to see exact changes
[INFO] (release/1.0) updating pom for wildfly-spring-batch...
[INFO] (release/1.0) Checking for RELEASE version in projects...
[INFO] (release/1.0) Checking dependencies and plugins for snapshots ...[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building wildfly-spring-batch 1.0

在此步骤中,将按照A成功的Git分支模型中所述合并release分支并创建标签。 记住,什么都没有推送,所以您可以随时还原该过程。

现在让我们看看分支和标签:

分支标签

radcortez:wildfly-spring-batch radcortez$ git branch -avv
* develop               a8e762b [origin/develop] Updating develop poms back to pre merge statemaster                b6fbda0 [origin/master: ahead 3] Merge branch 'release/1.0'remotes/origin/master 0b2364b Added documentation.
radcortez:wildfly-spring-batch radcortez$ git tag
1.0

现在,您可以轻松完成发行,并准备继续在新的更新development分支中进行development 。 那有多容易?

结论

研究原始发行插件和jgitflow之间的一些区别:

  • 您不必担心阶段提交。 一切都是本地的,直到您推送。
  • 在此过程中,其他人更改pom.xml不再有问题。
  • 您的项目仅构建一次,从而节省了发布时间。
  • 设置非常简单。 一切都从您的Git配置中选取。

当我调查/撰写文章时,我发现了这篇非常有趣的文章,关于执行发布的另一种方法。 值得阅读: Axel Fontaine的 http://axelfontaine.com/blog/final-nail.html 。

翻译自: https://www.javacodegeeks.com/2014/08/maven-git-release.html

Maven Git发布相关推荐

  1. 使用Ant 和 Maven打包发布命令行程序(转载)

    From:https://www.linux178.com/Java/maven-release.html 用Java写了一个命令行的小程序,使用的Intellij IDE是IDEA13原来一直使用A ...

  2. 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署

    上面安装和配置好Jenkins之后,就可以开始配置构建项目了 新建 因为需要构建的项目是maven项目,所以这里填好项目的名称之后选择"构建一个maven项目",然后点左下的ok ...

  3. Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程

    服务器系统 centOS 8.2 1. 运行环境安装 1.1 安装 jdk 上传安装包,然后解压 [root@ianly ~]# tar -zxvf jdk-8u144-linux-x64.tar.g ...

  4. VS2013中使用git发布解决方案master分支的时候出现错误

    VS2013中使用git发布解决方案master分支的时候出现错误 参考文章: (1)VS2013中使用git发布解决方案master分支的时候出现错误 (2)https://www.cnblogs. ...

  5. maven远程发布jar

    #maven远程发布jar 利用deploy实现将jar包直接更新到maven私服中 ##maven远程部署配置 指定需要发送的地址 <distributionManagement>< ...

  6. Maven项目发布的配置

    摘要:要想发布maven结构的项目到nexus私服上,可以通过两种方式来,一种是在项目的pom.xml文件里面配置,另一种是通过命令的方式发布到nexus私服上,但是这种方式的前提也得在setting ...

  7. maven项目发布到tomcat后没有lib目录解决方案

    maven项目发布到tomcat后没有lib目录解决方案 参考文章: (1)maven项目发布到tomcat后没有lib目录解决方案 (2)https://www.cnblogs.com/beppez ...

  8. Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记 - passover【毕成功的博客】 - 51CTO技术博客...

    Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记 - passover[毕成功的博客] - 51CTO技术博客

  9. maven子项目传git_Maven Git发布

    maven子项目传git 我需要在开始这篇文章时指出我在去年才开始认真地与Git合作. 不幸的是,我从事的许多项目仍在使用SVN或CVS,但是现在我终于开始使用Git了. 在过去的几年中,我使用Mav ...

最新文章

  1. 医学与人工智能交叉融合,打开眼科理疗新窗
  2. chrome 插件精选之 github 篇
  3. 化工设备与反应器 第二章 直杆的拉伸与压缩
  4. HDU 2570 迷瘴
  5. 链表应用——多项式相加
  6. 如何在矩池云GPU云中安装MATLAB 2019b软件
  7. FTP相关命令(手机FTP服务启动应用)
  8. datax 不识别字段过滤_初效空气过滤器种类
  9. 【数据结构】八种常见数据结构介绍
  10. 解锁Insyde的BIOS隐藏设置
  11. 机器人抓取中物体3D定位算法介绍
  12. 洛谷P4518 [JSOI2018]绝地反击(计算几何+二分图+退流)
  13. vue打包多个html,vue多页面应用打包配置
  14. Reactor(反应器)模式
  15. Unity3D 自由视角代码之解析
  16. 5.6.3 分组总计查询
  17. [Python深度学习入门]实战一·Numpy梯度下降求最小值
  18. Cacheable、CacheEvict、Caching使用示例
  19. 基于树莓派4b(raspberry pi 4b)内核编译流程,交叉编译环境搭建,loadable kernel module (LKM)编译方法
  20. 憎恨之心最强套装攻略_憎恨之心新手刷BOSS攻略 最强武器介绍[多图]

热门文章

  1. Java标识符与命名规则
  2. 实体类为什么要用包装类而不用基本类型
  3. maven的三种packaging方式
  4. oracle 10741 trace,RedHat5.3上安装Oracle 10.2.0.1
  5. python找不到指定的文件夹里_Python环球网在Unix中的指定文件路径中找不到*.txt
  6. java运行环境变量及自定义变量
  7. redis集群信息分析-cluster info-cluster nodes
  8. java字节码指令简介(仅了解)
  9. 带有Prometheus的弹簧靴和Micrometer第5部分:旋转Prometheus
  10. junit 静态方法_预期异常规则和模拟静态方法– JUnit