Maven 2.1.0 не передает системные свойства виртуальной машине Java - PullRequest
38 голосов
/ 05 мая 2009

Мы используем командную строку для передачи системных свойств Java виртуальная машина при работе нашей Hudson основана на Linux-системе. Он использовал работать очень хорошо в 2.0.9, так как мы обновили до 2.1.0, он имеет перестал работать вообще. Системные свойства просто никогда не делают это к виртуальной машине Java.

Я создал небольшой тестовый проект, и он действительно не работает вообще.

Это должно прекрасно работать с Maven 2.0.9:

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

Но это не удастся:

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

Java-код просто делает это

assertTrue( System.getProperty("system.test.property") != null); 

Ответы [ 3 ]

52 голосов
/ 05 мая 2009

Не думаю, что это проблема в плагине Maven или Surefire. Иначе верный ведет себя по-другому. Похоже, теперь, когда Surefire разветвляется JVM , не будет принимать все системные свойства от родительской JVM.

Вот почему вы должны передавать любые системные свойства, которые вы хотите для тестов, используя argLine. Итак, оба они должны работать

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

или

mvn2.1 test -DargLine="-Dsystem.test.property=test"
12 голосов
/ 15 мая 2009

Я испытал это с плагином Surefire . Плагин Surefire запускается под другим экземпляром JVM, который запускается Maven. Параметры командной строки настраиваются под конфигурацией плагинов surefile в вашем pom.xml. Вот образец нашей конфигурации.

        <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>
2 голосов
/ 15 июля 2010

Будьте осторожны, чтобы не перепутать файл конфигурации с аргументами командной строки. Файл конфигурации (pom.xml) переопределяет все аргументы cmd. Поэтому не настраивайте плагин surefire в pom.xml, если вы хотите передать его через командную строку, как объяснил raisercostin.

...