4

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

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

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

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

  1. pom.xml从 perforce 中查看。
  2. 运行自定义脚本以增加版本。
  3. pom.xml如果部署成功,则提交更改。

我创建了一个autoversion部分满足上述需求的 Maven 配置文件。作为生成资源阶段的一部分,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] ------------------------------------------------------------------------

非常感谢任何实现该要求的指针。

4

1 回答 1

1

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

  • X.Y.Z语义部分,在适当的人工引导发布期间很少更改
  • N是MRP 能够自动递增的增量部分(除了顺序排序之外无意义)

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

您可以选择避免的只是X.Y.Z.N标记等待X.Y.Z

于 2015-07-22T16:46:51.650 回答