Как добавить больше исключений Jacoco в дочерний проект?

В родительском POM у нас есть правила Jacoco, настроенные для обеспечения тестового покрытия. Это включает в себя некоторые исключения для классов, которые обычно не имеют поведения:

<execution>
    <id>default-check</id>
    <goals>
        <goal>check</goal>
    </goals>
    <configuration>
        <excludes>
            <!-- exclude largely auto-generated domain and model classes -->
            <exclude>**/model/*.class</exclude>
            <exclude>**/model/**/*.class</exclude>
            <exclude>**/domain/*.class</exclude>
            <exclude>**/domain/**/*.class</exclude>
            <exclude>**/dto/*.class</exclude>
            <exclude>**/dto/**/*.class</exclude>
        </excludes>
        <rules>
            <rule>
                <element>BUNDLE</element>
                <limits>
                    <limit implementation="org.jacoco.report.check.Limit">
                        <counter>INSTRUCTION</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>0.70</minimum>
                    </limit>
                </limits>
            </rule>
        </rules>
    </configuration>
</execution>

В дочернем POM, который использует этот родитель, что такое магия Maven для добавления дополнительных исключенных шаблонов классов?

Я пытаюсь использовать атрибуты combine... по-разному, но не могу заставить эффективный POM выйти правильно.

Любые идеи?


person Adam Vandenberg    schedule 28.06.2016    source источник


Ответы (2)


Вы не можете расширить список, но вы можете перезаписать его. В большинстве случаев вам понадобится конкретный список исключений для каждого модуля (как часто у вас одинаковые типы в разных модулях?)

Для этого не добавляйте никаких исключений в родительский POM. Просто поместите туда стандартные/общие исполнения и их конфигурацию. В дочернем POM:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>

                <configuration>
                    <excludes>
                        <exclude>ch/swissquant/toolbox/exceptions/**/*.class</exclude>
                        <exclude>ch.swissquant.toolbox.exceptions.*</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Maven прочитает эту конфигурацию и объединит ее с любым выполнением, которое он найдет в родительском POM (поэтому он будет применяться ко всем шагам сложного процесса Jacoco).

Слияние работает следующим образом: Maven читает родительский POM, а затем перезаписывает его любыми конкретными значениями из дочернего POM (выигрывает последняя запись). Это также верно для свойств, поэтому вы можете определить значения по умолчанию для таких вещей, как рационы покрытия в родительском элементе, используя свойства, и переопределить свойства в дочернем элементе.

Вы можете убедиться в этом, запустив mvn help:effective-pom.

person Aaron Digulla    schedule 30.05.2017

вместо использования отдельных тегов <exclude> используйте список, разделенный запятыми

Родитель Пом

<excludes>**/dto/**/*.class,${jacoco.exclusions}
</excludes>

Ребенок Пом

<properties>
    <jacoco.exclusions>**/model/*.class,**/model/**/*.class</jacoco.exclusions>
</properties>
person Marcus Chiu    schedule 26.05.2021