web-dev-qa-db-ja.com

Javaプロジェクトのビルド番号を自動的にインクリメントする

私はabbuildで表されるバージョン管理システムを使用しています。ここで、aは全体のバージョン(プロトタイプ、アルファおよびベータバージョンの場合は0、メジャーリリースの場合は1になります)、bはマイルストーンバージョンです(プロトを表す線に沿って) 、アルファ、ベータ段階)およびビルドは、プロジェクトがコンパイルされた回数を文字通り表します。

現時点では、デバッグフラグを設定してアプリを実行すると、テキストファイルからアプリを読み取って数値を増分し、テキストファイルに保存します。

JavaとNetbeansを使用してこれを行うより「正しい」方法を探しています。ビルド番号をビルドプロセスのどこかに挿入できる方法はありますか?できれば数値をプロジェクトに付属しているソースファイル-近くのファイルの存在に依存するのではなく。

27
Scott Drew

この偉業を達成する人気のあるMavenプラグインがいくつかあります。

Apache MavenプロジェクトのMavenリリースプラグインは、バージョン番号を単に更新するための少し overkill です。したがって、 後者を使用 プラグインでバージョン番号を作成します(MAJOR.MINOR.BUILDの形式で、例:3.1.4 どこ 4は次のように自動インクリメントされます)。

  1. プロジェクトのpom.xmlファイル。
  2. プラグインをbuildセクション内に含めます(dependenciesセクションの後):
  <scm>
    <connection>scm:svn:http://127.0.0.1/dummy</connection>
    <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
    <tag>HEAD</tag>
    <url>http://127.0.0.1/dummy</url>
  </scm>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <id>buildnumber</id>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <format>{0,number}</format>
          <items>
            <item>buildNumber</item>
          </items>                    
          <doCheck>false</doCheck>
          <doUpdate>false</doUpdate>
          <revisionOnScmFailure>unknownbuild</revisionOnScmFailure>   
        </configuration>
      </plugin>    
    </plugins>
    <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
  </build>
  1. pom.xmlは、ファイルの先頭近くにあるバージョン要素でメジャーバージョンとマイナーバージョンを定義します。例えば:
<version>3.1</version>
  1. を助けて pom.xmlファイル。
  2. プロジェクトをリビルドします。

バージョン番号が増えるはずです。


プラグインには、構成済みのソースコード管理リポジトリ(<scm>)要素。リポジトリのチェックイン番号を気にしない場合は、代わりに dummy scm を使用してください。これを使用して、リポジトリのリビジョン番号を含めることができます。これは reader の練習問題です。

20
Dave Jarvis

現在のブランチのgit commit countをビルド番号として使用できます。次のコマンドラインを使用して、コミットカウントを取得します:git rev-list HEAD --count

ビルドツールとの統合は非常に簡単です。 Gradleを使用している場合は、このプラグインを使用できます。 https://github.com/rockerhieu/Versionberg/

1
Hieu Rocker

「デイブ・ジャービス」の答えを使用していて問題があります。これにより、myProject-3.1.1234.jarのように、ローカルで生成されたjarファイルに正しいバージョンとビルド番号が追加されます。しかし、mavenリポジトリーでは、アーティファクトは(予想していた)「3.1.1234」ではなく、バージョン「3.1」としてインストールされます。ビルド番号はまだそこにありません...

正しいバージョンとビルド番号(「3.1.1234」)でアーティファクトをmavenリポジトリーにインストールするには、(「Dave Jarvis」の回答に加えて)次の操作を行う必要があります。

  1. メジャー/マイナーバージョンプロパティを追加します。
<properties>
  <!-- !!!!!!!!! SETTING HERE THE CORRECT MAJOR/MINOR VERSION NUMER !!!!!!!!!! -->
  <major.minor.version>1.0</major.minor.version>
</properties>
  1. nashorn-maven-pluginを使用して、アーティファクトに正しいバージョン番号を設定する:
<!-- set "major.minor.revision" version -->
<plugin>
  <groupId>io.github.michaldo</groupId>
  <artifactId>nashorn-maven-plugin</artifactId>
  <version>0.0.1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>eval</goal>
      </goals>
      <configuration>
        <script>
          $project.artifact.version = "${major.minor.version}.${buildNumber}";
        </script>
      </configuration>
    </execution>
  </executions>
</plugin>    

プロジェクトを再ビルド/インストールした後、アーティファクトはバージョン "3.1.1234"としてmavenリポジトリにあります:-)

注:メジャーバージョンまたはマイナーバージョンをインクリメントするには、major.minor.versionプロパティのみを変更する必要があります。

0
Steffen