【问题标题】:how to apply semantic versioning to the java maven project to automatically increment the version inside pom.xml如何将语义版本控制应用于 java maven 项目以自动增加 pom.xml 中的版本
【发布时间】:2022-01-22 22:12:47
【问题描述】:

谁能告诉我如何将 semver 应用到 java maven 项目?我尝试了很多方法,但是在我将代码推送到分支时,我没有找到任何有用的资源来自动增加版本。我正在使用 Github 操作工作流将项目部署到 GitHub。

谢谢。

【问题讨论】:

标签: java maven github-actions semantic-versioning


【解决方案1】:

我的第一种方法是使用命令行,但您必须先在 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>

通过使用上述配置,您可以像这样更改/更新项目的版本:

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 也是一种选择。它还会在您的版本控制中创建标签。

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 2014-01-14
    • 2013-12-12
    • 1970-01-01
    • 2016-03-16
    • 2020-03-11
    • 2018-04-28
    • 2017-04-16
    相关资源
    最近更新 更多