Maven & JaCoCo - Как исключить класс из отчета, который был введен из зависимости? - PullRequest
0 голосов
/ 30 апреля 2020

Я добавляю JaCoCo в проект и изо всех сил стараюсь исключить класс (который был введен через зависимость) из отчета для подмодуля. Это ошибка, которую я получаю:

Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site):
Error generating jacoco-maven-plugin:0.8.4:report:
Error while creating report:
Error while analyzing ~/proj/submod/target/classes/mydep-jar-with-dependencies.jar@com/jlb/proj/pkg/MyClass.class. Can't add different class with same name: com/jlb/proj/pkg/MyClass

И рассматриваемый кувшин помещается в субмодуль следующим образом:

<dependencies>
  <dependency>
    <groupId>com.jlb.pkg</groupId>
    <artifactId>mydep</artifactId>
    <version>${revision}</version>
    <classifier>jar-with-dependencies</classifier>
    </dependency>
</dependencies>

Отчеты о jacoco генерируются с помощью блока в Общее родительское POM проекта, однако я добавил здесь переопределение в рассматриваемый подмодуль, который должен исключить класс (версию класса из зависимости), на который он жалуется, но он не имеет никакого эффекта:

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
              <report>report-integration</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
            <excludes>
                <exclude>**/com/jlb/proj/pkg/MyClass.class</exclude>
            </excludes>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

Так как же исключить класс-нарушитель из отчета?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Итак, это было специально в jacoco exe c для интеграционных тестов, где происходил конфликт, но в разделе отчетов я добавил туда include, который должен исключать любые классы, приходящие из JAR:

<reporting>
  <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <configuration>
          <includes>
            <include>com/jlb/**/*.class</include>
          </includes>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
              <report>report-integration</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
0 голосов
/ 30 апреля 2020

Пожалуйста, попробуйте, где com.jlb.pkg должен быть вашим базовым пакетом t ie генерация отчета jacoco с вашей фазой тестирования вашей сборки maven

<plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
                <configuration>
                    <includes>
                        <include>com/jlb/pkg/**/*</include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...