Pregunta

Usamos la línea de comando para pasar las propiedades del sistema a Java máquina virtual al ejecutar nuestras Hudson se basa en una caja de Linux. Solía funcionar bastante bien en 2.0.9 desde que actualizamos a 2.1.0 tiene dejó de funcionar por completo. Las propiedades del sistema nunca lo hacen a la máquina virtual Java.

He creado un pequeño proyecto de prueba y, de hecho, no funciona en absoluto.

Esto debería funcionar bien con Maven 2.0.9:

mvn2.0.9 -Dsystem.test.property=test test 

Pero esto fallará:

mvn2.1 -Dsystem.test.property=test test 

El código Java simplemente hace esto

assertTrue( System.getProperty("system.test.property") != null); 
¿Fue útil?

Solución

No creo que esto sea un problema en el complemento Maven o Surefire. De lo contrario, el surefire se comporta de manera diferente. Parece que ahora, cuando Surefire bifurca las JVM , no tomará todas las propiedades del sistema del padre JVM

Es por eso que debe pasar las propiedades del sistema que desee para las pruebas, utilizando argLine. Entonces, ambos deberían funcionar

mvn2.1 -Dsystem.test.property=test test -DforkMode=never 

o

mvn2.1 test -DargLine="-Dsystem.test.property=test"

Otros consejos

He experimentado esto con el Surefire . El complemento Surefire se ejecuta en una instancia de JVM diferente que Maven lanza. Los parámetros de la línea de comandos son configurables bajo la configuración de plugin surefile en su pom.xml. Aquí hay una muestra de nuestra configuración.

        <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>

Tenga cuidado de no mezclar el archivo de configuración con los argumentos de la línea de comandos. El archivo de configuración (pom.xml) anula todos los argumentos de cmd. Por lo tanto, no configure el complemento surefire dentro de pom.xml si desea pasarlo a través de la línea de comandos como se explica en raisercostin.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top