Maven 2.1.0 nicht vorbei auf Systemeigenschaften auf Java Virtual Machine
-
05-07-2019 - |
Frage
Wir verwenden die Befehlszeile zur Java weitergeben Systemeigenschaften virtuelle Maschine, wenn unser Hudson läuft auf einer Linux-Box baut. es wird verwendet, ganz gut in 2.0.9 zu arbeiten, da wir ein Upgrade es zu 2.1.0 hat gestoppt insgesamt arbeiten. Die Systemeigenschaften nur es nie schaffen auf der Java Virtual Machine.
Ich habe ein kleines Testprojekt erstellt und in der Tat ist es nicht bei allen.
Dies sollte mit gut funktionieren Maven 2.0.9:
mvn2.0.9 -Dsystem.test.property=test test
Dies wird jedoch fehlschlagen:
mvn2.1 -Dsystem.test.property=test test
Der Java-Code einfach tut dies
assertTrue( System.getProperty("system.test.property") != null);
Lösung
Ich glaube nicht, dass dies ein Problem in entweder Maven oder todsicheren Plug-in. Else die todsichere verhält anders. Es sieht aus wie jetzt, wenn todsichere Gabeln der JVM , werden nicht alle Systemeigenschaften von der Mutter nehmen JVM.
Aus diesem Grund sollten Sie, was Systemeigenschaften Sie für die Tests bestehen, mit argLine. Also, beide sollten diese Arbeit
mvn2.1 -Dsystem.test.property=test test -DforkMode=never
oder
mvn2.1 test -DargLine="-Dsystem.test.property=test"
Andere Tipps
Ich habe diese Erfahrung gemacht mit dem todsicheren Plug-in. Die Surefire-Plug-In ist, unter einer anderen Instanz JVM laufen, die von Maven gestartet wird. Die Befehlszeile params ist konfigurierbar unter der surefile-Plugin-Konfiguration in Ihrem pom.xml. Hier ist ein Beispiel unserer Konfiguration.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
<!--
By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns:
"**/Test*.java" - includes all of its subdirectory and all java filenames that start with "Test". "**/*Test.java" -
includes all of its subdirectory and all java filenames that end with "Test". "**/*TestCase.java" - includes all of
its subdirectory and all java filenames that end with "TestCase".
-->
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<systemProperties>
<property>
<name>app.env</name>
<value>dev</value>
</property>
<property>
<name>oracle.net.tns_admin</name>
<value>${oracle.net.tns_admin}</value>
</property>
</systemProperties>
</configuration>
</plugin>
Seien Sie vorsichtig, um nicht-Konfigurationsdatei mit Befehlszeilenargumente mischen. Konfigurationsdatei (pom.xml) überschreibt alle cmd Argumente. So konfigurieren nicht todsichere Plugin innerhalb pom.xml, wenn Sie es Befehlszeile Throught übergeben wollen wie raisercostin erläutert.