maven-surefire-plugin включает / исключает приоритет
При использовании maven-surefire-plugin и включает, и исключает, в каком порядке они обрабатываются? Кроме того, если у вас есть 3 набора тестов, первый из которых является базовым набором, а второй и третий - особыми случаями, можете ли вы использовать профили для дальнейшего включения / исключения? Как профиль будет включать / исключать настройки будут объединены? Например, я хотел бы сделать что-то вроде этого:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<excludes>
<exclude>/org/mycompany/dataset/test/ExtractProd*.java</exclude> <!-- requires special network connectivity -->
<exclude>/org/mycompany/dataset/test/LargeDataset*.java</exclude> <!-- requires lengthy processing -->
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>connectedToProdNetwork</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>/org/mycompany/dataset/test/ExtractProd*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>runForAsLongAsYouNeed</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>/org/mycompany/dataset/test/LargeDataset*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
И тогда сможет бежать так:
mvn package -P connectedToProdNetwork
или же
mvn package -P runForAsLongAsYouNeed
или же
mvn package -P connectedToProdNetwork,runForAsLongAsYouNeed
---- UPDATE -----
С помощьюmvn help:effective-pom -P [profileA]
Я смог определить, что если я укажу один профиль, то эффективный результат будет:
<configuration>
<includes>
<include>[includeFromProfileA]</include>
</includes>
<excludes>
<exclude>/org/mycompany/dataset/test/ExtractProd*.java</exclude> <!-- requires special network connectivity -->
<exclude>/org/mycompany/dataset/test/LargeDataset*.java</exclude> <!-- requires lengthy processing -->
</excludes>
</configuration>
И если я поставлю более одного профиля,mvn help:effective-pom -P [profileA],[profileB]
:
<configuration>
<includes>
<include>[includeFromProfileAOrBSeeminglyArbitraryChoice]</include>
</includes>
<excludes>
<exclude>/org/mycompany/dataset/test/ExtractProd*.java</exclude> <!-- requires special network connectivity -->
<exclude>/org/mycompany/dataset/test/LargeDataset*.java</exclude> <!-- requires lengthy processing -->
</excludes>
</configuration>
И, наконец, если я добавлю атрибутcombine.children="append"
к<includes>
элемент конфигурации профиля, и поставьте оба профиля,mvn help:effective-pom -P [profileA],[profileB]
:
<configuration>
<includes combine.children="append">
<include>[includeFromProfileA]</include>
<include>[includeFromProfileB]</include>
</includes>
<excludes>
<exclude>/org/mycompany/dataset/test/ExtractProd*.java</exclude> <!-- requires special network connectivity -->
<exclude>/org/mycompany/dataset/test/LargeDataset*.java</exclude> <!-- requires lengthy processing -->
</excludes>
</configuration>
Однако теперь, когда каждый файл указан как<include>
и<exclude>
, что просходит?
---- UPDATE 2 ----
На самом деле запустить сборку с этой конфигурацией:
<configuration>
<includes>
<include>**/TestA.java</include>
</includes>
<excludes>
<exclude>**/TestA.java</exclude>
</excludes>
</configuration>
Есть лиNOT запустить TestA, так что появляется<exclude>
пересилит<include>
. Note that for completeness sake, I did reverse the order and put <excludes>
before <includes>
but the behavior did not change. Если кто-то может найти где-то, кроме исходного кода, где это поведение изложено, я был бы рад дать им ответ ...