Maven Release Plugin自动递增自定义格式版本

时间:2018-07-11 13:26:52

标签: java maven continuous-integration devops

我希望能够通过在Maven发布插件(mvn -B release:prepare)中使用非交互模式来自动增加Java项目的发布版本。但是,我不想使用默认的Maven版本控制架构。

我要使用的架构是<major>.<minor>.<bugfix>-SNAPSHOT。我确实在pom文件中做到了这一点,但是Maven尝试按如下方式增加它:

1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.2-SNAPSHOT
...

但是,我希望能够对此进行控制,尽管有时候我确实有错误修复和上述增量工作,但大多数时候我想发布次要版本,因此,增量看起来像这样:

1.0.0-SNAPSHOT
1.1.0-SNAPSHOT
1.2.0-SNAPSHOT
...

2 个答案:

答案 0 :(得分:1)

您可以通过build-helper-maven-plugin这样处理:

mvn build-helper:parse-version versions:set \
   release:prepare \
      -DdevelopmentVersion =\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT \
   release:perform

这会将1.1.0-SNAPSHOT设置为下一个开发版本。下次调用发布插件时,它将从中生成1.1.0,如果您不喜欢,则会自动递增1.1.1-SNAPSHOT只需使用上面的电话...

答案 1 :(得分:0)

“ maven方式”是遵循maven规则或创建自定义插件。 只要您想做自己想做的事,Maven就可以很好地发挥作用。 也许适合您的解决方案是在大多数情况下仅使用“ 1.1”,如果要进行错误修复,则可以手动添加第三个数字。

但是,如果您真的想与Maven对抗,则可以从其他一些插件中设置属性。例如:

<profile>
  <id>customversionnumber</id>
  <build>
  <plugins>

      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>set-release-version</id>
            <phase>initialize</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                  project.properties.setProperty("releaseVersion","1.3.0")
                  System.out.println("releaseVersion set to 1.3.0")
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>
      </plugins>

然后,您将像这样调用发布插件 mvn -Pcustomversionnumber initialize release:prepare。 不管'version'标记中有什么内容,它都会将其发布为“ 1.3.0”。当然,我必须自己编码该数字。