web-dev-qa-db-ja.com

Mavenを使用した環境変数

EclipseからMavenにプロジェクトを移植しました。プロジェクトを機能させるには、環境変数を設定する必要があります。

Eclipseでは、「実行->実行構成」に移動し、「環境」タブで「WSNSHELL_HOME」を値「conf」に設定します。

Mavenでこれを行うにはどうすればよいですか?

どうもありがとうございました!

71
Gianluca

次のようにコマンドラインで渡すことができます

mvn -DmyVariable=someValue install

[更新]パラメーターの順序は重要であることに注意してください-オプションの前に指定する必要がありますコマンド。[/ Update]

POMファイル内では、システム変数(コマンドラインまたはpomで指定)を${myVariable}として、環境変数を${env.myVariable}として参照できます。 (訂正してくれたコメント者に感謝します)

Update2

OK、システム変数をテストに渡します。 -私が推測するように、テストに Surefireプラグイン を使用する場合、pom内のpluginsセクションで必要なシステム変数を指定するのが最善です。

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            ...
            <configuration>
                ...
                <systemPropertyVariables>
                    <WSNSHELL_HOME>conf</WSNSHELL_HOME>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
106
Péter Török

-Dプロパティは、確実なプラグインからテストへの信頼性の高い伝播にはなりません(Eclipseで機能する理由はわかりません)。コマンドラインでmavenを使用する場合、 argLine プロパティを使用してプロパティをラップします。これでテストに合格します

mvn -DargLine="-DWSNSHELL_HOME=conf" test

System.getPropertyを使用して、コードの値を読み取ります。 this を見て、System.getenvSytem.getPropertyの違いについて投稿してください。

22
FrVaBe

properties-maven-plugin というmavenプラグインがあります。これは、システム変数を設定するための目標set-system-propertiesを提供します。これは、これらのすべてのプロパティを含むファイルがある場合に特に便利です。したがって、プロパティファイルを読み取り、システム変数として設定できます。

4
Christian Lutz

Mavenコマンドをbashスクリプトでラップできます。

#!/bin/bash

export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR
3
modle13

Mavenの環境変数については、以下を設定できます。

http://maven.Apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariableshttp://maven.Apache.org/surefire/maven- failsafe-plugin/integration-test-mojo.html#environmentVariables

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    ...
    <configuration>
        <includes>
            ...
        </includes>
        <environmentVariables>
            <WSNSHELL_HOME>conf</WSNSHELL_HOME>
        </environmentVariables>
    </configuration>
</plugin>
3
Kevin

別の解決策は、MAVEN_OPTS(またはWindowsでは${user.home}/.mavenrc)に%HOME%\mavenrc_pre.bat(または他の環境変数)を設定することです。

Maven 3.3.1以降 mvnコマンドラインパラメーターを設定する新しい可能性 があります。これが実際に必要な場合:

  • ${maven.projectBasedir}/.mvn/maven.config
  • ${maven.projectBasedir}/.mvn/jvm.config
1
René

あなたのコードに追加:

System.getProperty("WSNSHELL_HOME")

Mavenコマンドから値プロパティを変更または追加します。

mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue

Eclipseで実行する場合は、VM引数をデバッグ/実行構成に追加します

  • 実行->実行構成に移動します
  • タブの引数を選択
  • セクションVM引数に追加

-DWSNSHELL_HOME = yourvalue

See image example

pOMを変更する必要はありません