Maven Surefire и Failsafe в многомодульном проекте - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть многомодульный проект Maven. В родительском POM я пытаюсь пометить определенные тесты как интеграционные тесты и использовать maven surefire для исключения IT и отказоустойчивые для включения IT. Вот что я попробовал:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
        </includes>
        <excludedGroups>
            com.pea.ceoa.choammon.IntegrationTest
        </excludedGroups>
        <excludes>
          <exclude>ceoa-choammon-modality</exclude>
        </excludes>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
        </includes>
        <groups>
            com.pea.ceoa.choammon.IntegrationTest
        </groups>
        <skipTests>${skipIntegrationTests}</skipTests>
        <excludes>
          <exclude>ceoa-choammon-modality</exclude>
        </excludes>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>integration-test</goal>
          <goal>verify</goal>
        </goals>
      </execution>
    </executions>
</plugin>

Некоторые из модулей этого проекта не имеют junit на пути сборки, потому что они не связаны ни с чем из этого. Однако failsafe + surefire выдают эту ошибку для проектов, не имеющих junit на пути сборки:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project oeca-commons-model: groups/excludedGroups require TestNG or JUunit48+ on project test classpath -> [Help 1

Один из способов, которым я могу решить эту проблему, - поместить эту конфигурацию плагина не в родительский pom, а в каждый из соответствующих субмодули. Мне не нравится это делать, потому что это копирование и вставка. Я бы предпочел настроить его один раз в родительском POM. Как я могу использовать это в родительском POM, не имея ошибок для подмодулей, у которых нет jUnit?

Как вы можете видеть выше, перечисление проектов, исключаемых в теге exclude, похоже, не работает. Может быть, я просто не настроил это правильно.

...