いくつかの Maven プロジェクトを Perforce から git に移行中です。Perforce では、これらのプロジェクトはbuild.number
、ビルド プロセスの一部として JVM arg として渡された Maven プロパティで構成されていました。git を使用して、git リポジトリ メタデータに基づいてプロパティを設定するjgit-buildnumber プラグインを調べています。
プラグインは素晴らしく機能しますが、Maven ライフサイクルの早い段階 (検証または初期化) で実行しても、Reactor ビルド プランが生成された後に発生します。exec-maven-plugin
プロジェクトはと を使用するため、これは問題ですmaven-antrun-plugin
。これらのプラグインのビルド プランは、プランの構築時にすべての Maven プロパティのスナップショットを取得しているようです。たとえば、これらのプラグインの 1 つに対する Reactor ビルド プランのデバッグ出力からのスニペットです。
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (RPMbuilderScript)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<basedir default-value="${basedir}"/>
<classpathScope default-value="runtime">${exec.classpathScope}</classpathScope>
<commandlineArgs>product=jas_etl
dir=/Users/dev/project
team=sanctuary
version=${git.buildnumber}
artifact=/Users/dev/project/target/project-${git.buildnumber}.zip
</commandlineArgs>
<executable>../parent/devops_scripts/mavenRpmBuilder.sh</executable>
<longClasspath default-value="false">${exec.longClasspath}</longClasspath>
<outputFile>${exec.outputFile}</outputFile>
<project default-value="${project}"/>
<session default-value="${session}"/>
<skip default-value="false">true</skip>
<sourceRoot>${sourceRoot}</sourceRoot>
<testSourceRoot>${testSourceRoot}</testSourceRoot>
<workingDirectory>${exec.workingdir}</workingDirectory>
</configuration>
git.buildnumber
jgit-buildnumber プラグインによって初期化フェーズの一部として設定されますが、実行プラグインのビルド プランの参照に影響を与えるには遅すぎます。
ビルドプランの生成前に jgit-buildnumber プラグインを実行する方法はありますか? または、Ant および exec プラグインを構成して、ビルド プランの生成時ではなく、実行フェーズの開始時にのみプロパティ値を読み取る方法はありますか?