プロジェクトをEclipseからMavenに移植しましたが、プロジェクトを機能させるには環境変数を設定する必要があります。
Eclipseで、「実行」->「構成の実行」に移動し、「環境」タブで「WSNSHELL_HOME」を値「conf」に設定します。
Mavenでこれを行うにはどうすればよいですか?
どうもありがとうございました!
プロジェクトをEclipseからMavenに移植しましたが、プロジェクトを機能させるには環境変数を設定する必要があります。
Eclipseで、「実行」->「構成の実行」に移動し、「環境」タブで「WSNSHELL_HOME」を値「conf」に設定します。
Mavenでこれを行うにはどうすればよいですか?
どうもありがとうございました!
回答:
次のように、コマンドラインで渡すことができます。
mvn -DmyVariable=someValue install
[更新]パラメータの順序が重要であることに注意してください。コマンドの前にオプションを指定する必要があります。[/更新]
POMファイル内では、システム変数(コマンドラインまたはpomで指定)を、、${myVariable}
環境変数をとして参照でき${env.myVariable}
ます。(訂正してくれたコメント投稿者に感謝します。)
では、システム変数をテストに渡します。私が想定しているように、テストに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>
mvn -DWSNSHELL_HOME=conf test
。
System.getenv("WSNSHELL_HOME");
それは正しいですか?
${argLine}
プレースホルダーを追加します。そうしないと、コマンドラインからパラメーターが取得されません。例:<argLine>-Duser.timezone=UTC ${argLine}</argLine>
mavenコマンドをbashスクリプトでラップできます。
#!/bin/bash
export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR
mvn install
どういうわけか隠されています。ただし、シェルスクリプトから実行すると、正常に機能します。なぜこれが起こるのか理解できたらいいのにと思います。
Mavenの環境変数については、以下を設定できます。
http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html #環境変数
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
...
<configuration>
<includes>
...
</includes>
<environmentVariables>
<WSNSHELL_HOME>conf</WSNSHELL_HOME>
</environmentVariables>
</configuration>
</plugin>
properties-maven- pluginと呼ばれるmavenプラグインがありset-system-properties
ます。これはシステム変数を設定するための目標を提供します。これは、これらすべてのプロパティを含むファイルがある場合に特に便利です。したがって、プロパティファイルを読み取り、それらをシステム変数として設定することができます。
別の解決策はMAVEN_OPTS
、${user.home}/.mavenrc
(または%HOME%\mavenrc_pre.bat
Windowsで)設定(または他の環境変数)することです。
Maven 3.3.1以降、mvnコマンドラインパラメーターを設定する新しい可能性があります。これが実際に必要な場合:
${maven.projectBasedir}/.mvn/maven.config
${maven.projectBasedir}/.mvn/jvm.config
コードに次を追加します。
System.getProperty("WSNSHELL_HOME")
mavenコマンドからvalueプロパティを変更または追加します。
mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue
Eclipseで実行する場合は、デバッグ/実行構成にVM引数を追加します
-DWSNSHELL_HOME = yourvalue
POMを変更する必要はありません
@Kevinの回答からのドキュメントに従って、以下のドキュメントは、mavenのsure-fireプラグインで環境変数を設定するために私のために働きました
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<environmentVariables>
<WSNSHELL_HOME>conf</WSNSHELL_HOME>
</environmentVariables>
</configuration>