maven 版本号插件
抽象
Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本。 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT
格式。 但是最近我需要在版本号中添加一个限定符,例如1.0-beta-SNAPSHOT
或1.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.cmd
。 2.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检索。
maven 版本号插件