maven 版本号插件_测试Maven版本插件自动递增版本号

maven 版本号插件

抽象

Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本。 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式。 但是最近我需要在版本号中添加一个限定符,例如1.0-beta-SNAPSHOT1.0.0-fix-bug-description-SNAPSHOT 。 在我第一次尝试添加限定符之后,Maven发行插件以意外的方式自动增加了版本号。 因此,我需要研究Maven发行版插件版本的自动递增行为,但要在生产Git存储库中做很多废话(我没有开发库)。 本博客的目的是展示如何配置Maven发行插件,使其可以在本地运行而不更改生产源代码控制。

免责声明

这篇文章仅供参考。 在使用所提供的任何信息之前,请认真思考。 从中学到东西,但最终自己做出决定,风险自负。

要求

我使用以下主要技术完成了本文的所有工作。 您可能可以使用不同的技术或版本来做相同的事情,但不能保证。

  • NetBeans 11.2
  • Maven 3.3.9(与NetBeans捆绑在一起)
  • Maven发布插件2.5.1
  • Java 11(zulu11.35.15-ca-jdk11.0.5-win_x64)
  • 适用于Windows 2.25.0的Git

注意 Maven版本插件假定可执行文件(如git)在PATH 。 如果遇到找不到git命令的错误,则需要确保Git的安装独立于IDE且位于PATH

下载

访问我的GitHub页面https://github.com/mjremijan以查看我所有的开源项目。 这篇文章的代码位于: https : //github.com/mjremijan/thoth-maven-release-plugin

安装Git

您需要做的第一件事是安装Git。 即使Git已集成到您的IDE中(与NetBeans一样),Maven发行版插件仍假定其所需的可执行文件在PATH上可用。 为您的环境下载,安装和配置PATH。

POM <scm>标签

您需要做的第二件事是配置POM <scm>标签。 当Maven版本插件运行时,它使用<scm>标记值来标识源控制系统的位置。

相关配置如下,请参阅GitHub上的完整pom.xml

因为我想在本地运行并且不连接到生产源代码控制系统,所以我的示例使用了Git。 Git不需要服务器就可以很好地运行。 让我们看一下<scm>标签。

清单1 – <scm>标签

 <scm> 
   <url>scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git</url> <url>scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git</url> 
   <connection> 
     scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git</connection> scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git</connection> 
   <developerConnection> 
     scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git scm:git:file: //D:/Projects/thoth-maven-release-plugin/.git 
   </developerConnection>  </scm> 

清单1中的代码显示了<scm>标记的配置。 显然,在我的计算机的文件系统上对该项目的.git文件夹的引用应该很.git您必须为您的计算机更改此值。 请记住,目标是在本地工作! 此配置将您带到那里。

配置<scm>标记后,下一步是配置maven-release-plugin。 接下来让我们看看。

POM Maven-发布插件

第三件事是配置maven-release-plugin工件。 此配置用于Maven登台存储库。

相关配置如下,请参阅GitHub上的完整pom.xml 。 让我们看一下这个配置。

清单2 – maven-release-plugin标签

 <build> 
   <plugins> 
     <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-release-plugin</artifactId> 
       <version> 2.5 . 1 </version> 
       <dependencies> 
         <dependency> 
           <groupId>org.apache.maven.shared</groupId> 
           <artifactId>maven-invoker</artifactId> 
           <version> 2.2 </version> 
         </dependency> 
       </dependencies> 
       <configuration> 
         <stagingRepository> 
           localforme:: default ::file: //C:/Users/Michael/.m2/repository ::file: //C:/Users/Michael/.m2/repository 
         </stagingRepository> 
       </configuration> 
     </plugin> 
     ....  </build> 

第6行将maven-release-plugin设置为2.5.1版。 这是我研究时(2019年第二季度)的最新情况。 使用低于2.5.2的版本还有一些其他问题,我将在接下来的内容中介绍。

第8行将maven-invoker依赖项设置为2.2版。 Maven 3.3将脚本名称(在Windows上)从mvn.bat更改为mvn.cmd2.5.2版以下的maven-release-plugin假设使用mvn.bat 。 将maven-invoker更改为2.2版会将假设更改为mvn.cmd以便可以使用Maven 3.3+(Lucas,2015年)。 如果您使用大于或等于2.5.2版的maven-release-plugin,则不需要此maven-invoker配置。

第15行设置Maven登台存储库的位置。 通常,您可以在settings.xml中进行settings.xml 。 如果未设置,则会出现构建错误。 我在这里展示了如何配置它。 如果您在settings.xml拥有它,则可以删除此配置。

现在已经配置了pom.xml ,接下来让我们看看如何运行它。

MVN命令

现在已经设置好配置,是时候运行Maven项目并测试一切正常了。 清单3显示了mvn的属性和开关。

清单3 – mvn命令

 mvn 
   -Dmaven.test.skip= true 
   -Dmaven.javadoc.failOnError= false 
   --batch-mode release:clean release:prepare release:stage 

此命令行没有太多内容。 第4行是最重要的。 它指定要执行的Maven-release-plugin目标。

现在您可以进行测试了。 运行命令,看看会发生什么。

摘要

如果您使用的是NetBeans之类的IDE,当在文件系统上检测到更改时自动监视并重新加载文件,则可以打开pom.xml ,然后运行mvn命令,最后观察<version>标记随Maven的变化而自动更改。运行。 这样,您可以从<version>标记的任意值开始,并研究如何自动更改它。 请享用!

参考资料

卢卡斯 (2015年7月1日)。 无法执行目标Maven准备的 [Web日志注释]。 堆栈溢出。 从https://stackoverflow.com/questions/29755620/failed-to-execute-goal-maven-releaseprepare检索。

翻译自: https://www.javacodegeeks.com/2020/02/testing-maven-release-plugin-auto-increment-version-number.html

maven 版本号插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值