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 版本号插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中Date

在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中&#xff0c;将使用下面的表示形式&#xff1a;年份 y 由整数 y - 1900 表示。月份由从 0 至 11 的整数表示&#xff1b;0 是一月、1 是二月等等&#xff1b;因此 11 是十二月。日期&#xff08;一月中的某…

如何配置android的adb环境变量,如何配置adb环境变量?win7配置adb环境变量的方法...

本文教程小编分享就是win7系统配置adb环境变量的方法&#xff0c; windows7系统 电脑安装adb工具时&#xff0c;提示“adb不是内部或外部命令”这时候我们需要重新配置adb环境变量&#xff0c;那么win7系统怎么配置adb环境变量&#xff1f;网上介绍配置adb环境变量的方法比较少…

jep290涉及jdk版本_JDK 14 / JEP 305模式匹配“ Smart Casts”实例

jep290涉及jdk版本我通常将Java代码中instanceof运算符的存在视为“ 红色标志 ”&#xff0c;这意味着在某些情况下使用instanceof不一定是错误的&#xff0c;但是使用它有时表示可以通过更干净的方式解决设计问题&#xff0c;如所述本文结尾处引用的一些资源中的内容&#xff…

java中Date与DateFormat的格式输出

一、DateFormat java.text.DateFormat 使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法&…

二叉堆的操作总结(insert+deleteMin+increaseKey+decreaseKey+percolateDown+percolateUp)

【0】README 本文idea 均为原创&#xff0c; for source code, please visit https://github.com/pacosonTang/dataStructure-algorithmAnalysis/tree/master/chapter6/p140_binaryheap_conclusion 【1】insert操作 // Attention, the index of the heap starts from 1 void …

aws生态系统集成商_通过通用数据访问扩展AWS生态系统

aws生态系统集成商Amazon Web Services&#xff08;AWS&#xff09;可帮助组织托管和管理其数据流程&#xff0c;例如构建数据可视化和执行ETL任务。 在CData&#xff0c;我们可以轻松地将AWS Services与异构业务应用程序和分布式数据存储连接起来&#xff0c;以最终帮助企业对…

HTML.parser和正则解析,正则表达式+HTMLParser使用详.ppt

getText:/body getText: getText:/htmlgetText:除了前面3.2中输出的几个Tag&#xff0c;其余的Tag都在这里了。 3.4 XorFilter 把前面的AndFilter换成NotFilter测试代码&#xff1a; NodeFilter filterID new HasAttributeFilter( "id" );NodeFilter filterChild n…

FileDescriptor的作用

一、FileDescriptor 文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄&#xff0c;该结构表示开放文件、开放套接字或者字节的另一个源或接收者。文件描述符的主要实际用途是创建一个包含该结构的 FileInputStream 或 FileOutputStream。 二、静态标准文件描述…

java流与文件——内存映射文件

【0】README 0.1&#xff09; 本文描述转自 core java volume 2&#xff0c; 旨在理解 java流与文件——内存映射文件 的相关知识&#xff1b; 0.2&#xff09;内存映射文件的目的是&#xff1a; 提高访问速度&#xff0c; 缓冲区Buffer&#xff1b; 0.3&#xff09; 本文干…

java 函数式编程 示例_功能Java示例 第8部分–更多纯函数

java 函数式编程 示例这是第8部分&#xff0c;该系列的最后一部分称为“示例功能Java”。 我在本系列的每个部分中开发的示例是某种“提要处理程序”&#xff0c;用于处理文档。 在上一期文章中&#xff0c;我们已经使用Vavr库看到了一些模式匹配&#xff0c;并且还将故障也视…

html加css作品,我的影视作品,如何在博客园发布带有CSS样式的HTML

总结一下&#xff0c;我做过的视频&#xff1a;(顺便试试在博客园如何发HTML网页)发布网页总结&#xff1a;HTML可以正常发送&#xff0c;但最好将你要发布的html文件放在一个带有ID的div中&#xff0c;这样方便后期添加样式时通过ID添加&#xff0c;不会影响到网页中的其他布局…

FileInputStream

java.ioClass FileInputStream java.lang.Object java.io.InputStream java.io.FileInputStream 所有已实现的接口: Closeable public class FileInputStream extends InputStream FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。 Fil…

android console命令,我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2....

Don’t use /usr 这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误, 可指定交叉编译器用到的头文件所在路径. 如 $make -I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/lib…

selenium 示例_Selenium测试中所需的功能和示例

selenium 示例所需功能是用于声明一组基本要求&#xff08;例如浏览器&#xff0c;操作系统&#xff0c;浏览器版本等的组合&#xff09;的类&#xff0c;以对Web应用程序执行自动跨浏览器测试。 当我们尝试通过Selenium自动化测试来自动化测试脚本时&#xff0c;我们需要考虑…

java流与文件——正则表达式

【0】README 0.1&#xff09; 本文描述转自 core java volume 2&#xff0c; 旨在理解 java流与文件——正则表达式 的相关知识&#xff1b; 0.2&#xff09; there are my original source code below, and for them , please visit https://github.com/pacosonTang/core-ja…

pandoc讲html转换为pdf,mac下利用Pandoc、LaTeX 转换markdown成html,pdf

环境所使用的插件有pandoc,tlmgr,fc-listcssbrew install pandoc由于mac ox 系统生成pdf 须要找到对应的编码集 全部还须要去下载LaTeX&#xff0c;进行安装html5使用tlmgr工具安装全部要的包先进行更新&#xff0c;若是提示所须要的字体没有找到安装gitsudo tlmgr update --se…

java程序连接kafka_Java的Kafka:构建安全,可扩展的消息传递应用程序

java程序连接kafka使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 当今的用户希望可以通过其计算机&#xff0c;手机&#xff0c;平板电脑或任何其他设备访问您的应用…

信息系html5论文,基于HTML5的智力游戏设计电子信息工程本科学生毕业论文.doc

基于HTML5的智力游戏设计电子信息工程本科学生毕业论文本科学生毕业论文(设计)题目(中文)&#xff1a;基于HTML5的智力游戏设计(英文)&#xff1a;Design of Intelligent Game Based on HTML5姓 名 xxx学 号 xxx院 (系) 电子与信息工程学院专业、年级 电子信息工程指导教师 xxx…

优先队列——左式堆

【0】README 0.1&#xff09; 本文文字描述部分转自 数据结构与算法分析&#xff0c; 旨在理解 优先队列——左式堆 的基础知识&#xff1b; 0.2&#xff09; 本文核心思路均为原创&#xff0c; 源代码部分借鉴 数据结构与算法分析 &#xff1b; 0.3&#xff09; for origin…

Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别

一、getEnclosing* 当前类在……中闭合Class<?>getEnclosingClass() 返回底层类的立即封闭类。 Constructor<?>getEnclosingConstructor() 如果该 Class 对象表示构造方法中的一个本地或匿名类&#xff0c;则返回 Constructor 对象&#xf…