Как я могу предотвратить запуск тестов при использовании exec-maven-plugin

Я запускаю модульные тесты JavaScript в проекте maven, используя exec-maven-plugin.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <id>run-karma</id>
            <phase>test</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>${node.bin.folder}/node</executable>
                <workingDirectory>${project.basedir}</workingDirectory>
                <arguments>
                    <argument>node_modules/karma/bin/karma</argument>
                    <argument>start</argument>
                    <argument>--single-run</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

Я предполагал, что если я пройду -DskipTests, вся фаза тестирования будет пропущена, но это не так, skipTests флаг учитывается только при использовании Surefire, Failsafe и подключаемого модуля компилятора

Вопрос: Как сделать так, чтобы выполнение зависело от флага skipTests?


person Juan Mendes    schedule 16.06.2016    source источник
comment
Я предполагаю, что вы либо заключаете запуск теста кармы в сценарий и проверяете там, установлено ли свойство skipTests, а затем решаете запустить команду node/karma. Другим решением может быть перемещение этой конфигурации в профиль и использование активации: maven.apache.org/pom .html#Activation или активируйте его только при необходимости.   -  person wemu    schedule 16.06.2016


Ответы (1)


Вы можете использовать параметр skip для exec-maven-plugin следующим образом: :

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.5.0</version>
            <executions>
                <execution>
                    <id>run-karma</id>
                    <phase>test</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>cmd</executable>
                        <arguments>
                            <argument>/C</argument>
                            <argument>echo</argument>
                            <argument>hello</argument>
                        </arguments>
                        <skip>${skipTests}</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Обратите внимание на использование ${skipTests} как часть его значения. Также обратите внимание, что я использовал более новую версию, 1.5.0, рекомендуемую.

Бег:

mvn clean test -DskipTests

Вывод будет содержать:

[INFO] Tests are skipped.   
[INFO]   
[INFO] --- exec-maven-plugin:1.5.0:exec (run-karma) @ sample-project ---   
[INFO] skipping execute as per configuration   
[INFO] ------------------------------------------------------------------------   
[INFO] BUILD SUCCESS   

Во время выполнения:

mvn clean test

Результат будет

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

[INFO]   
[INFO] --- exec-maven-plugin:1.5.0:exec (run-karma) @ sample-project ---   
hello   
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS   
person A_Di-Matteo    schedule 16.06.2016
comment
Спасибо за ссылку на exec-maven-plugin, мне стыдно, что я не пошел туда первым :) Кстати, на версии 1.3 он отлично работал. - person Juan Mendes; 16.06.2016