web-dev-qa-db-ja.com

POM.xmlで環境変数を参照する方法は?

ビルドツールとしてmavenを使用しています。 envという環境変数を設定しました。 pom.xmlファイルでこの環境変数の値にアクセスするにはどうすればよいですか?

141
user1016403

Maven Properties Guide ...をご覧ください。

セサギリがコメントで指摘したように、${env.VARIABLE_NAME}はあなたが望むことをします。

警告の言葉を追加し、pom.xmlはプロジェクトを完全に説明する必要があると言うので、環境変数を慎重に使用してください。ビルドを環境に依存させると、再現が難しくなります

180
Andrew White

環境変数をMavenシステムプロパティに直接渡す方が安全な場合があります。たとえば、Linuxで環境変数MY_VARIABLEにアクセスするとします。 pomファイルでシステムプロパティを使用できます。

<properties>
    ...
    <!-- Default value for my.variable can be defined here -->
    <my.variable>foo</my.variable>
    ...
</properties>
...
<!-- Use my.variable -->
... ${my.variable} ...

Mavenコマンドラインでプロパティ値を設定します。

mvn clean package -Dmy.variable=$MY_VARIABLE
23
EricGreg

また、環境変数大文字のみで構成されているであることを確認してください。 、少なくとも@Andrew Whiteによって提供されるリンク)、変数が小文字のWord(たとえばenv.dummy)の場合、変数は常に空またはnullになりました...

大文字の変数を試してみることにし、問題が解決するまで、私はこれに1時間ほど苦労していました。

OK変数の例:

  • ダミー
  • DUMMY_ONE
  • JBOSS_SERVER_PATH

NOTE:Maven v3.0.5を使用していました)

これが誰かを助けることを願っています。

19
Carlitos Way

使えない

<properties>
    <my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
10
tmjee

変数を設定するシェルスクリプトを実行し、共有pomで変数を使用したいという同じことに苦労していました。目標は、com.google.code.maven-replacer-pluginを使用して、プロジェクトファイル内の文字列を環境変数に置き換えることでした。

${env.foo}または${env.FOO}を使用してもうまくいきませんでした。 Mavenは変数を見つけられませんでした。うまくいったのは、変数をMavenのコマンドラインパラメーターとして渡すことでした。セットアップは次のとおりです。

  1. シェルスクリプトで変数を設定します。サブスクリプトでMavenを起動する場合は、変数が設定されていることを確認してください。 source ./maven_script.shを使用して、親スクリプトから呼び出す。

  2. Shared-pomで、環境変数を取得するコマンドラインパラメーターを作成します。

 <plugin> 
 ... 
 <executions> 
 <executions> 
 ... 
 <execution> 
 ... 
 <configuration> 
 <param> $ {foo} </ param> <!-これは$ {env.foo}ではないことに注意してください-> 
 </ configuration> 
  1. Com.google.code.maven-replacer-pluginで、置換値を${foo}にします。

  2. Mavenを呼び出すシェルスクリプトで、これをコマンドに追加します:-Dfoo=$foo

3
fjones