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); 
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top