問題タブ [buildnumber-maven-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - Maven リリース プラグインを使用して最新の svn リビジョン番号でアーティファクト バージョンを自動的に更新したい
私の成果物のバージョンは次のようになります。
1.0.0-スナップショット
次のバージョンを使用して、maven リリース プラグインを使用してアーティファクトをリリース リポジトリにデプロイしたいと考えています: 1.0.0.1234。1234 は最新の svn リビジョン番号です。
これは可能ですか?
org.codehaus.mojo:buildnumber-maven-plugin を使用して svn リビジョン番号を取得しようとし、次のセクションを追加しました。
しかし、次のコマンドを実行すると:
代わりに、タグでバージョンが 1.0.0.${buildNumber} に設定されているようです。
java - マニフェストへの書き込み時に Maven war マニフェスト エントリが空白になる
war のマニフェストにブランチとビルドの情報を追加しようとしていますが、キーがマニフェストに表示されますが、値は null です。buildnumber-maven-plugin から取得した値です。このプラグインを実行すると、ログに値が表示されます。また、maven-antrun-plugin タスクを追加して、war プラグインに渡す値をエコーし、ログにも表示します。そのため、マニフェストに書き込むときに null である理由を見つけるのに苦労しています。以下にいくつかの例を示します。
ここに私のビルド番号プラグインがあります:
このプラグインが実行されると、ログに表示されます..
次に、これらの値も出力する Ant タスクを追加しました。
そして、私が見るログで...
最後に、war プラグイン/アーカイバーを使用すると、ここで問題が発生します...ここにプラグインがあります..
そして、ブランチとシャが空白になっている結果のマニフェストを次に示します..
branchとshaは両方とも空白ですが、上記のログではそれらの値が明らかに利用可能です。これらの値を一掃する何かがありますか、またはこれらの値を Maven war プラグイン内のアーカイバーにバブルアップするためにさらに必要なものがありますか?
maven - mvn resources:resources が buildNumber を取得しないのはなぜですか?
を使用する Maven プロジェクトがありbuildnumber-maven-plugin
ます。実行するmvn validate
と、機能していることがわかります。
しかしmvn resources:resources
、フィルター処理されたファイルを実行すると、それが検出されません。
持っていpom.xml
ます:
version.txt
もっている:
しかし、Maven の実行後、フィルタリングは行われません。
のビルド番号構成pom.xml
:
私はMavenを十分に知りません。リソースの「ゴール」を実行してもbuildNumber
プロパティを取得するべきではありませんか?
maven - buildnumber-maven-plugin で svn の最後に変更されたリビジョン番号を取得する
現在、アプリケーション用のマイクロサービス ベースのアーキテクチャを開発しています。多くのサービスを含む Maven マルチモジュール プロジェクトがあるので、maven deploy コマンドとmaven docker pluginを使用して、それらを簡単に docker ハブにデプロイできます。
それでも、docker イメージ タグはプロジェクトのバージョン番号に基づいていますが、各リポジトリの最後に変更されたリビジョン番号でタグ付けしたいと考えています。とりあえず、 buildnumber-maven-pluginを使用して、このフィールドをマニフェスト エントリとして追加しようとしています。
それが私のマルチモジュールプロジェクトだとしましょう:
そして、module-a のモデルは次のようになります。
問題は、{buildNumber} が私の作業コピー番号に評価されることです。これは、scm:svn:http://myrepo.com/svn/application/module-a
場所ではなく、リポジトリに対して行われた最後のコミットを参照するものです。もっと分かりやすく説明すると、亀のモジュール a のプロパティを表示すると、次のようになります。
私が欲しいのは、プラグインから取得しているものである 3257 (作業コピー) ではなく、module-a に加えられた最後の実際の変更を参照する 3248 を取得することです。そうすれば、docker プラグインはそれが別のイメージ タグであるかどうかを認識し、リポジトリ内のモジュールに変更が加えられた場合にのみプッシュします。
git - マニフェストにブランチを取得する方法
Maven プラグインを使用してbuildnumber
、ブランチを jar マニフェストに保存したいと考えています。以下に示すように、2つの異なる方法で試しました。
これが私のビルドからの出力です(関連セクションのみ)
[INFO] --- buildnumber-maven-plugin:1.4:create (default) @ myproject ---
[INFO] ShortRevision tag detected. The value is '7'.
[INFO] Executing: /bin/sh -c cd '/workspace/myproject' && 'git' 'rev-parse' '--verify' '--short=7' 'HEAD'
[INFO] Working directory: /workspace/myproject
[INFO] Storing buildNumber: ed5ea17 at timestamp: 1479511476753
[INFO] Storing buildScmBranch: bug/abuginthesystem
試行 1 のプラグイン セクション (プラグイン Web サイトの SCMBranch キー):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<shortRevisionLength>7</shortRevisionLength>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifestEntries>
<Build-OS>${os.name} ${os.version}</Build-OS>
<Build-Java>Java ${java.version}</Build-Java>
<Build-Number>${buildNumber}</Build-Number>
<Build-Branch>${SCMBranch}</Build-Branch>
</manifestEntries>
</archive>
</configuration>
</plugin>
ビルドアウトを使用して 2 を試みます。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<shortRevisionLength>7</shortRevisionLength>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifestEntries>
<Build-OS>${os.name} ${os.version}</Build-OS>
<Build-Java>Java ${java.version}</Build-Java>
<Build-Number>${buildNumber}</Build-Number>
<Build-Branch>${buildScmBranch}</Build-Branch>
</manifestEntries>
</archive>
</configuration>
</plugin>
両方からのマニフェスト出力は次のとおりです。
Manifest-Version: 1.0
Build-Java: Java 1.7.0_79
Build-Number: ed5ea17
Build-OS: Linux 4.4.0-47-generic
Built-By: mondain
Build-Jdk: 1.7.0_79
Build-Branch:
Created-By: Apache Maven 3.3.9
Archiver-Version: Plexus Archiver