私は両方とも同じJVMプロパティを定義していると思っていましたが、明らかにその2つの違いがあり、私は明確な説明を見つけることができません。 Jenkins Mavenを両方ともビルドすると、-Dで設定されたプロパティだけがSystem.getProperties()によってJavaアプリケーションに表示されます。 MAVEN_OPTSもJVMに渡す必要があります。私は何かが欠けているようです。MAVEN_OPTSとmvn -D
説明のためにThx。
私は両方とも同じJVMプロパティを定義していると思っていましたが、明らかにその2つの違いがあり、私は明確な説明を見つけることができません。 Jenkins Mavenを両方ともビルドすると、-Dで設定されたプロパティだけがSystem.getProperties()によってJavaアプリケーションに表示されます。 MAVEN_OPTSもJVMに渡す必要があります。私は何かが欠けているようです。MAVEN_OPTSとmvn -D
説明のためにThx。
MAVEN_OPTSは、Mavenを実行しているJava VMにパラメータを渡すための環境変数です。
このように、ヒープとパーマサイズを設定することができます(MAVEN_OPTS = -XX:MaxPermSize = 256mなど)。
対照的に、-Dパラメータはコマンドラインパラメータです。 Mavenは既にJavaで動作しているため、Java関連のパラメータを制御することはできません。
コマンドラインパラメータとMAVEN_OPTSについては、this pageを参照してください。
これに基づいて、プロパティではなくJVM引数として使用されているため、変数が表示されない理由を推測しています。
おそらくthis answerあなたがそれらを手に入れるのに役立ちますか?
私は既に両方のリンクを通過しました。しかし、ドキュメントによると、MAVEN_OPTS = -Dname = valueがSystem.getProperty( "name")によってアクセス可能なjava -Dname = valueと同じになることが期待されます。 –
説明のためにありがとう。 JenkinsでMAVEN_OPTSを設定し、mvn help:systemを実行すると、System Propertiesのパラメータが表示されます。Javaアプリケーションへの途中で何とか途切れてしまったのだろうかと思います。 –
それを取得しないでください。そのとき私はmvn help:systemを試してみる。アプリケーションを起動しているときにそこにあります。[ott-qa-test-custom-maven_opts] $ /usr/lib64/etnpol-sun-java-1.8.0/bin/java -Dseb.cra.ott.environment = DEV -Dtest = LoginTest -Dseb.caps.browserName = chromeですが、System.getProperties()によってアプリケーション内部からプロパティを取得しようとすると、そこにはありません。 -Dtest = LoginTestだけがmaven-surefire-pluginによって消化されなければならないので、何とか認識されます。そうでなければ、他のテストも実行されます(ただし、プロパティには見られません)。 –