如何将语义版本控制应用于 java maven 项目以自动增加 pom.xml 中的版本
how to apply semantic versioning to the java maven project to automatically increment the version inside pom.xml
任何人都可以告诉我如何将 semver 应用到 java maven 项目吗?我尝试了很多方法,但我没有找到任何有用的资源来在我将代码推送到分支时自动增加版本。我正在使用 Github 操作工作流将项目部署到 GitHub.
谢谢。
我的第一种方法是使用命令行,但您必须先在 pom 文件中配置以下内容。当然可以直接use the command line and put everything on the plain command without this setup但是很不方便
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.9.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.9.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<executions>
<execution>
<id>major</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.nextMajorVersion}.0.0-SNAPSHOT</newVersion>
</configuration>
</execution>
<execution>
<id>minor</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT</newVersion>
</configuration>
</execution>
<execution>
<id>patch</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT</newVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
通过使用上面的配置你可以change/update你的项目的版本是这样的:
mvn build-helper:parse-version versions:set@major
这将增加主版本并将次版本和补丁版本设置为 0
。
mvn build-helper:parse-version versions:set@minor
这将增加次要版本并将补丁版本设置为零。
mvn build-helper:parse-version versions:set@patch
这将增加补丁版本。之后,您必须将更改提交回您的版本控制系统(例如 git)。
我建议将这种设置定义到父 pom 中,并将其重复用于多个项目。可以在此处找到详细解释为什么以及如何工作 https://blog.soebes.de/blog/2021/04/05/maven-plugin-configuration/
使用 maven-release-plugin 也是一种选择。它还会在您的版本控制中生成标签。
任何人都可以告诉我如何将 semver 应用到 java maven 项目吗?我尝试了很多方法,但我没有找到任何有用的资源来在我将代码推送到分支时自动增加版本。我正在使用 Github 操作工作流将项目部署到 GitHub.
谢谢。
我的第一种方法是使用命令行,但您必须先在 pom 文件中配置以下内容。当然可以直接use the command line and put everything on the plain command without this setup但是很不方便
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.9.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.9.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<executions>
<execution>
<id>major</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.nextMajorVersion}.0.0-SNAPSHOT</newVersion>
</configuration>
</execution>
<execution>
<id>minor</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT</newVersion>
</configuration>
</execution>
<execution>
<id>patch</id>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT</newVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
通过使用上面的配置你可以change/update你的项目的版本是这样的:
mvn build-helper:parse-version versions:set@major
这将增加主版本并将次版本和补丁版本设置为 0
。
mvn build-helper:parse-version versions:set@minor
这将增加次要版本并将补丁版本设置为零。
mvn build-helper:parse-version versions:set@patch
这将增加补丁版本。之后,您必须将更改提交回您的版本控制系统(例如 git)。
我建议将这种设置定义到父 pom 中,并将其重复用于多个项目。可以在此处找到详细解释为什么以及如何工作 https://blog.soebes.de/blog/2021/04/05/maven-plugin-configuration/
使用 maven-release-plugin 也是一种选择。它还会在您的版本控制中生成标签。