私はmavenをビルドツールとして使用しています。という環境変数を設定しましたenv
。pom.xml
ファイル内のこの環境変数の値にアクセスするにはどうすればよいですか?
${env.XYZ}
参照を赤で示しています。変数は実行時に正しく展開されますが、コンパイル時に赤で表示されます。したがって、私は最初に尋ねられたのと同じ質問をします。
私はmavenをビルドツールとして使用しています。という環境変数を設定しましたenv
。pom.xml
ファイル内のこの環境変数の値にアクセスするにはどうすればよいですか?
${env.XYZ}
参照を赤で示しています。変数は実行時に正しく展開されますが、コンパイル時に赤で表示されます。したがって、私は最初に尋ねられたのと同じ質問をします。
回答:
Mavenプロパティガイドを確認してください...
セシャギリがコメントで指摘したように、${env.VARIABLE_NAME}
あなたがやりたいことをやります。
警告の言葉を追加してpom.xml
、プロジェクトを完全に説明する必要があると言うので、環境変数は慎重に使用してください。ビルドを環境に依存させると、再現が難しくなります
環境変数を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
また、環境変数が大文字の文字のみで構成されていることを確認してください。理由はわかりません(ドキュメントでは、それについて明示的に何も述べられていません。少なくとも、@ Andrew Whiteによって提供されたリンク)。変数は小文字の単語(例:env.dummy)で、変数は常に空またはnullになります...
大文字の変数を試すことにし、問題が解決するまで、1時間ほど苦労していました。
OK変数の例:
(注:私はmaven v3.0.5を使用していました)
これが誰かに役立つことを願っています...
使えない
<properties>
<my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
私は同じことで苦労していて、変数を設定するシェルスクリプトを実行してから、共有変数で変数を使用したいと考えていました。目標は、com.google.code.maven-replacer-pluginを使用して、プロジェクトファイルの文字列を環境変数で置き換えることでした。
使用している${env.foo}
か${env.FOO}
、動作しませんでした。Mavenは変数を見つけていませんでした。うまくいったのは、変数をMavenのコマンドラインパラメーターとして渡すことでした。これが設定です:
シェルスクリプトで変数を設定します。サブスクリプトでMavenを起動する場合は、変数が設定されていることを確認してください。たとえばsource ./maven_script.sh
、親スクリプトからそれを呼び出すために使用します。
shared-pomで、環境変数を取得するコマンドラインパラメーターを作成します。
<プラグイン> ... <実施> <実施> ... <実行> ... <構成> <param> $ {foo} </ param> <!-これは*ではありません* $ {env.foo}-> </構成>
com.google.code.maven-replacer-pluginで、置換値を作成します${foo}
。
mavenを呼び出すシェルスクリプトで、これをコマンドに追加します。 -Dfoo=$foo
<properties>
タグを使用してカスタム変数と${variable}
それを使用するパターンを定義できます
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- define -->
<properties>
<property.name>1.0</property.name>
</properties>
<!-- using -->
<version>${property.name}</version>
</project>