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.  Если кто-то может найти где-то, кроме исходного кода, где это поведение изложено, я был бы рад дать им ответ ...

Ответы на вопрос(2)

Ваш ответ на вопрос