5

私はmavenプロジェクトを持っています。ではpom.xml、環境変数を として参照します${env.MyProjectVersion}export MyProjectVersion=1.0.0プロジェクトをビルドする前に、コマンド プロンプトから変数の値 ( ) を設定しました。ビルドは成功しました。Maven プロジェクトをEclipseにインポートすると、m2eclipseはビルドに失敗しました。

xyz-{$env.MyProjectVersion} 依存関係をダウンロードできません

Eclipseは環境変数の値を解決できません。環境変数の値をEclipseで指定して、Eclipseのmavenプラグインで選択できるようにする方法はありますか?

4

2 に答える 2

3

どうやら、Eclipse Maven プラグインは Maven ビルド中に環境変数を無視するようです。可能な回避策 (状況によっては機能する可能性があります) は、settings.xml のプロパティを使用することです。唯一の欠点は、これらの変数を環境変数として定義し、settings.xml でもう一度定義する必要があることです。

私の答えでは、次のシナリオについて説明しています。標準の Maven プラグイン機能を使用して Eclipse でアーティファクトを構築し、さらに Maven コマンド ラインを介して同じアーティファクトを構築します。また、コマンドラインビルド中に、リポジトリフォルダーを直接参照しています mvn -Dmaven.repo.local=/PATH_TO_M2_FOLDER/repository/ -f parent.pom install

セットアップは次のとおりです。環境変数のプロキシとして機能するように、pom.xml にプロパティを追加する必要があります。コマンド ライン シナリオでは、これらのプロパティは直接入力されます。Eclipse のシナリオでは、プロファイルを定義することにより、ユーザーの settings.xml によってプロパティを入力する必要があります。

環境変数 $FOO のプロパティがあるとします。

Maven settings.xml でプロファイルを使用し、fooProperty を定義します。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
    http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>default</id>
            <properties>
                <fooProperty>bar</fooProperty >
            </properties>
        </profile>
    </profiles>
    ...     
  <activeProfiles>
    <activeProfile>default</activeProfile>
  </activeProfiles>
</settings>

次に、Eclipse maven プラグインをユーザー設定にポイントするだけです。CLI を機能させるには、pom.xml で fooProperty をもう一度定義する必要があります: ${env.foo}

どうやらEclipse Mavenプラグインは、pom.xmlのプロパティよりも高いsettings.xmlのプロパティを優先します。残念ながら、環境変数を介して settings.xml でプロパティを定義する方法がわかりません。

pom.xml で変数を使用する場合は、次のようにプロキシ プロパティのみを使用します。 ... ${fooProperty} ...

使用しています * Eclipse Mars: Release (4.5.0) * Embedded Maven: 3.3.3/1.6.0.20150526-2031 * OSX El Capitan: 10.11.4 (15E65)

于 2016-07-11T18:31:30.490 に答える
2

実行構成に移動し、環境タブに移動し、変数を追加すると、変数の値よりもその値が解決されます

于 2013-03-26T08:56:09.053 に答える