2011-09-26 24 views
14

mavenプラグインからプロパティを設定する方法(ほとんどの場合、アプリケーションのバージョン番号について話しました)に関するいくつかの質問をここで読んでいます。 これを実行する簡単な方法はないようですが、私が見つけた最良の解決策は、プラグインから更新され、メインのpomファイルが目的のリソースをフィルタリングするために使用するfilter.propertiesファイルを持つことです。プラグインからmavenプロパティを設定する

私はMavenのドキュメント(Maven filter plugin)からこれを読んだ後、私は別の解決策を試してみました:

変数は、あなたのリソースに含めることができます。これらの変数は、$ {...}デリミタによって と表示され、システムプロパティ、 プロジェクトプロパティ、フィルタリソース、およびコマンド 行から取得できます。

私は、システムのプロパティからバリデーションを読み取ることができますが、興味深いことが分かりました。

System.setProperty("currentVersion", appCurrentVersion); 

しかし、フィルタリングリソースは、この値を読み取るようには見えません。だから、私はこのようなシステムプロパティを設定するために、私のプラグインを変更しました。 このアプローチで何が間違っているか教えてもらえますか?

更新:段階でプラグインを実行しています。

ありがとうございます。

答えて

18

参照

// inject the project 
/** @parameter default-value="${project}" */ 
private org.apache.maven.project.MavenProject project; 

// and in execute(), use it: 
project.getProperties().setProperty("currentVersion", appCurrentVersion); 

のMavenプロジェクトのプロパティとして設定し、システムプロパティとして設定しないでください:私はすでに実行している

+0

パーフェクト!ありがとう、ショーン。 – PaquitoSoft

3

Mavenはプロパティをinitialize phaseに設定します。私はその段階でmavenがシステムのプロパティを読み込むと仮定します。その後、mavenはシステムプロパティを再度ロードしません。このフェーズの後にシステムプロパティを追加しようとすると、ロードされていない状態になります。

validate phaseでプラグインを実行してください。

+0

プラグインは検証段階にあります。申し訳ありませんが、以前は言及していませんでした。 – PaquitoSoft

関連する問題