Maven自动增量发布版

时间:2014-11-06 07:27:08

标签: maven maven-3 maven-release-plugin maven-scm

我正致力于在构建过程中自动增加X.Y.Z版本。在这种情况下,我们不会删除SNAPSHOT后缀(使其成为已发布的版本),而是增加版本的次要部分:

  • X.Y.Z-SNAPSHOT => X.Y.Z+1-SNAPSHOT
  • X.Y.Z-SNAPSHOT => X.Y.Z

我无法使用maven发布插件,因为它只能切断SNAPSHOT后缀以使其发布版本。所以,我最终创建了一个自定义脚本,它具有增加版本的逻辑。

我的问题是如何才能最好地实施以下步骤:

  1. 从perforce中查看pom.xml
  2. 运行自定义脚本以增加版本。
  3. 如果部署成功,则提交pom.xml更改。
  4. 我创建了一个部分满足上述需求的maven个人资料autoversion。 Maven首先将版本增加为生成资源阶段的一部分。但是,它最终部署了旧版本的项目。

    mvn -Pautoversion clean deploy
    
             <profile>
            <id>autoversion</id>
            <build>
                <plugins>
                                        <plugin>
                                          <artifactId>exec-maven-plugin</artifactId>
                                          <groupId>org.codehaus.mojo</groupId>
                                          <executions>
                                                <execution>
                                                  <id>Calculate version</id>
                                                  <phase>generate-resources</phase>
                                                  <goals>
                                                        <goal>exec</goal>
                                                  </goals>
                                                  <configuration>
                                                        <executable>${basedir}/autoincrementversion.sh</executable>
                                                        <arguments>
                                                                <argument>-bdj</argument>
                                                        </arguments>
                                                  </configuration>
                                                </execution>
                                          </executions>
                                        </plugin>
                                        <plugin>
                                                <groupId>org.apache.maven.plugins</groupId>
                                                <artifactId>maven-scm-plugin</artifactId>
                                                <version>1.9</version>
                                                <executions>
                                                        <execution>
                                                                <phase>generate-resources</phase>
                                                                <goals>
                                                                        <goal>edit</goal>
                                                                        <goal>checkin</goal>
                                                                </goals>
                                                                <configuration>
                                                                        <username>jenkins</username>
                                                                        <basedir>./</basedir>
                                                                        <includes>pom.xml</includes>
                                                                        <message>Auto increment pom version</message>
                                                                </configuration>
                                                        </execution>
                                                </executions>
                                        </plugin>
                </plugins>
            </build>
        </profile>
    
    
    [INFO] ------------------------------------------------------------------------
    [INFO] Building project 99.22.8
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- versions-maven-plugin:1.3.1:set (default-cli) @ project ---
    [INFO] Searching for local aggregator root...
    [INFO] Local aggregation root: /opt/project/auto-increment-release
    [INFO] Processing com.project
    [INFO]     Updating project com.project
    [INFO]         from version 99.22.8 to 99.22.9
    [INFO] 
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.135s
    [INFO] Finished at: Wed Nov 05 23:15:13 PST 2014
    [INFO] Final Memory: 11M/152M
    [INFO] ------------------------------------------------------------------------
    

    非常感谢任何达到此要求的指示。

1 个答案:

答案 0 :(得分:1)

我们正在考虑在类似情况下实际使用Maven Release Plugin(MRP)将所有版本号更改为X.Y.Z.N

  • X.Y.Z语义部分,在适当的人为指导发布期间很少发生变化
  • N增量部分(除了序列排序无意义)MRP能够自动增加

是的,MRP将创建另外两个提交(已发布版本和下一个SNAPSHOT版本),但是......如果您的开发人员进行快照构建,则需要X.Y.Z.N-SNAPSHOT个版本。如果你想要增量发布,你也需要X.Y.Z.N。因此,同样的两个提交。

您只能avoid optionally is X.Y.Z.N tagging等待X.Y.Z