4

X.Y.Zビルド プロセス中にバージョンを自動インクリメントするためのイニシアチブに取り組んでいます。この場合、SNAPSHOT(リリース済みバージョンにするために) サフィックスを削除するのではなく、バージョンのマイナー部分を増やします。

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

SNAPSHOTmaven リリース プラグインはサフィックスを切り離してリリース バージョンにすることしかできないため、使用できません。そのため、バージョンをインクリメントするロジックを持つカスタム スクリプトを作成することになりました。

ここでの私の質問は、次の手順をどのように実装するのが最善かということです:

  1. pom.xmlfrom 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 Release Plugin (MRP) を実際に使用して、すべてのバージョン番号を次のように変更することを検討していますX.Y.Z.N

  • X.Y.Z人間が誘導する適切なリリース中にめったに変更されないセマンティック部分です
  • NMRPが自動的にインクリメントできるインクリメンタルパーツ (シーケンス オーダー以外は意味がない) です。

はい、MRP は 2 つの追加のコミット (リリース済みバージョンと次のSNAPSHOTバージョン) を作成しますが... 開発者がスナップショット ビルドを作成する場合、X.Y.Z.N-SNAPSHOTバージョンが必要です。また、増分リリースが必要な場合は、それも必要ですX.Y.Z.N。したがって、同じ 2 つのコミットがあります。

オプションで回避できるのは、X.Y.Z.Nタグ付けの待機X.Y.Zのみです。

于 2015-07-22T16:46:51.650 に答える