抽象

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文件夹的引用对您来说应该很突出。 您必须为您的计算机更改此值。 请记住,目标是在本地工作! 此配置将您带到那里。

配置<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版本插件自动递增版本号相关推荐

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

    maven 版本号插件 抽象 Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本. 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式. 但是最近我需要在版本 ...

  2. 基于maven maven-replacer-plugin 插件对JS,CSS统一加版本号

    2019独角兽企业重金招聘Python工程师标准>>> 基于maven对JS,CSS统一加版本号 在写WEB应用的时候,每次对JS/CSS文件做的修改,对于用户来说,都很郁闷:一不注 ...

  3. 让软件版本信息自动引用SVN修订版本号

    软件发布出去后通常用户反馈一个BUG时往往需要知道程序版本号.当软件发布的版本多了后版本号的管理变的麻烦,当然正式版本发布周期较长手动管理版本号是合理的.如果是临时编译的测试版本,则可以让程序自动引用 ...

  4. asp按时间自动递增编号_小插件分享-自动递增编号

    每天积累一点,让自己更专业! 关注CAD制图有问必答 额不好意思昨晚图没插上.... 今天有网友提问桩位自动编号的问题,CAD君这里正好有一个这样的插件: 在复制(COPY)图块的时候,编号可以自动递 ...

  5. maven常用插件配置

    常用插件配置详解 Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proj ...

  6. 构建maven项目插件_如何构建一个Maven插件

    构建maven项目插件 使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 今天尝试Okta. 由于其插件生态系统的普 ...

  7. 升级maven编译插件_maven进阶插件

    父子项目都设置properties,子项目会覆盖父项目. 但是使用的jar包要覆盖全,比如logback有classic和core两个模块,之前只覆盖了classic模块,没有添加core的依赖.导致 ...

  8. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty\j ...

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

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

最新文章

  1. MySQL 里设置或修改系统变量的几种方法,这个写的非常清晰
  2. python新手入门教程-终于知晓python新手练习教程
  3. Java 将excel中的内容导入数据库中
  4. mysql8.0.19.0_分享MySql8.0.19 安装采坑记录
  5. 前端学习(2386):远程仓库的issue
  6. 分裂的奶牛群(洛谷P2907题题解,Java语言描述)
  7. acm java 类库_ACM java入门和基本技巧
  8. Vector Packet Processor(VPP) - 层二层三转发图谱
  9. Running 1 linux_yesterdaytodaytomorrow
  10. 为什么源码中很多方法就一行throw new RuntimeException(Stub!)
  11. 【Python】改变对象的字符串显示
  12. yolov2 损失函数_目标检测算法之YOLOv2损失函数详解
  13. 计算机图形函数,计算机图形学常用函数.ppt
  14. 安全架构--13--企业资产管理体系建设总结
  15. 三阶魔方 kociemba算法解析(IDA*的绝佳实际运用)
  16. ipsw —— iOS/macOS 研究瑞士军刀
  17. 2022年4月23日美团笔试
  18. 如何从Docker容器内部获取Docker主机的IP地址
  19. 顾问风采 | LF AI Data 基金会完成换届,堵俊平担任董事会主席、星爵担任会员总代表...
  20. 我学炒外汇 第十三篇影响瑞士法郎的因素

热门文章

  1. P1541-乌龟棋【多维dp】
  2. 【做题记录】 [HEOI2013]SAO
  3. Codeforces Round #669 (Div. 2)
  4. 【数学期望】【LCA】【树形DP】树
  5. 【图论】【高精】产生数(ssl 1021/ luogu 1037)
  6. art-template入门(九)之API
  7. jQuery 基础教程 (三)之jQuery的选择器
  8. 尽力去帮助一个陌生人
  9. 被黑客盯上了…数据都给打包带走了…
  10. 祝张远远和杨凯博同学生日快乐 | 班级日常分享