Maven 2.1.0 não passar em propriedades do sistema para a máquina virtual Java
-
05-07-2019 - |
Pergunta
Nós usamos a linha de comando para passar sobre as propriedades do sistema para o Java máquina virtual ao executar o nosso Hudson baseia-se em uma caixa de Linux. Costumava funcionar muito bem em 2.0.9 por uma vez que atualizado para 2.1.0 tem parou de funcionar completamente. As propriedades do sistema apenas nunca fazê-lo para a máquina virtual Java.
Eu criei um pequeno projeto de teste e de fato ele não funciona em todos.
Isso deve funcionar muito bem com Maven 2.0.9:
mvn2.0.9 -Dsystem.test.property=test test
Mas isso irá falhar:
mvn2.1 -Dsystem.test.property=test test
O código Java simplesmente que isso
assertTrue( System.getProperty("system.test.property") != null);
Solução
Eu não acho que este é um problema em qualquer Maven ou Surefire plug-in. Caso contrário, o infalível está se comportando de forma diferente. Parece que agora, quando Surefire bifurca os JVM , não vai tomar todas as propriedades do sistema do pai JVM.
É por isso que você deve passar o que quer que as propriedades do sistema que você deseja para os testes, usando argLine. Assim, ambos estes devem trabalhar
mvn2.1 -Dsystem.test.property=test test -DforkMode=never
ou
mvn2.1 test -DargLine="-Dsystem.test.property=test"
Outras dicas
Eu experimentei isso com o Surefire plug-in. O plug-in infalível é executado no âmbito de um exemplo diferente JVM que é lançada pelo Maven. Os parâmetros de linha de comando são configuráveis ??sob a configuração-plugin surefile em seu pom.xml. Aqui está um exemplo da nossa configuração.
<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>
Tenha cuidado para não misturar o arquivo de configuração com argumentos de linha de comando. arquivo de configuração (pom.xml) está substituindo todos os argumentos cmd. Então não configurar infalível plug-in dentro pom.xml se você quiser passar throught linha de comando como raisercostin explicou.