Несколько плагинов Maven с различными значениями системных свойств - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь выполнить приведенный ниже плагин более одного раза с другим значением системного свойства, которое называется testVar.У меня есть следующий плагин в моем pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.14.1</version>
    <configuration>
        <skip>false</skip>
        <forkCount>1</forkCount>
        <threadCount>3</threadCount>
    </configuration>
    <executions>
        <execution>
            <id>before-run</id>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <systemPropertyVariables>
                    <testVar>aaa</testVar>
                </systemPropertyVariables>
            </configuration>
        </execution>
        <execution>
            <id>main-run</id>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <systemPropertyVariables>
                    <testVar>bbb</testVar>
                </systemPropertyVariables>
            </configuration>
        </execution>
    </executions>
</plugin>

Я получаю null при запуске System.getProperty("testVar").Тем не менее, я могу получить доступ к testVar должным образом, когда он объявлен на уровне плагина.Что не так?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

В конфигурации maven-surefire-plugin имеется несколько тегов execution, т.е. цель test выполняется несколько раз в фазе по умолчанию test.На самом деле, конфигурация вашего плагина приводит к 3 тестовым исключениям:

  1. default-test (запускается автоматически по верному сигналу, пользовательские свойства системы не установлены)
  2. перед запуском(как определено первым в вашем POM, набор системных свойств)
  3. main-run (как определено вторым в вашем POM, набор системных свойств)

mvn test с Maven 3.5.4:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.app.ExampleTest
getProperty:null
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.078 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-surefire-plugin:2.14.1:test (before-run) @ app ---
[INFO] ...

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.app.ExampleTest
getProperty:aaa
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.078 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-surefire-plugin:2.14.1:test (main-run) @ app ---
[INFO] ...

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.app.ExampleTest
getProperty:bbb
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.078 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Рассмотрите возможность переопределения выполнения default-test, чтобы правильно применить вашу конфигурацию.Пример:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.14.1</version>
            <executions>
                <execution>
                    <id>before-run</id>
                    ...
                </execution>
                <execution>
                    <id>default-test</id>
                    ...
                </execution>
            </executions>
0 голосов
/ 27 февраля 2019

Вы неправильно используете системные свойства.Вы можете проверить это ниже, как использовать.

https://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

Пожалуйста, посмотрите на один пример:

 <systemPropertyVariables>


        <!-- Appium's VM Variables -->
        <target>${target}</target>
        <mobile>${mobile}</mobile>
        <deviceType>${deviceType}</deviceType>

 </systemPropertyVariables>

Нет необходимости требовать несколько systemPropertyVariables тег.Я не знаю, выполнение тег можно использовать в плагине Maven surefire.

Теперь используется для доступа к системному свойству.

System.getProperty("target");
System.getProperty("mobile");
System.getProperty("deviceType");

Как использовать в команде Maven

mvn test -Dtarget=Native -Dmobile=Android -DdeviceType=RealDevice

Надеюсь, это решит вашу проблему.

...