web-dev-qa-db-fra.com

Exclure un dossier dans le rapport de couverture jacoco

Dans mon Java j'ai généré des classes qui sont à l'intérieur du même dossier de package que les autres classes. Je voudrais configurer le plugin jacoco maven pour exclure ces classes générées et utiliser uniquement des classes dans le dossier principal/src/Java (pas généré par src/main/Java)

Structure du projet:
src/main/Java/com/company/john/Good.Java <---- cela inclut
src/main/généré par Java/com/company/john/AutoGeneratedClass.Java <---- ceci exclut

<plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
            <configuration>
                <includes>
                </includes>
                <excludes>
                    <exclude>**/*Dto.*</exclude>
                </excludes>
            </configuration>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-check</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Je sais que cette option consiste à ajouter le préfixe à la classe générée, f.i. _ et l'utiliser pour le filtrage, mais je me demande s'il existe une autre option. Comment spécifier le dossier du projet source (src/main/Java) et exclure ainsi tous les autres dossiers? Le plugin est-il basé uniquement sur les noms de packages?

20
troger19

Je pense que ce n'est pas possible car vos classes compilées sont dans le même répertoire dans target. Et Jacoco a besoin des classes compilées et donc vous ne pouvez pas faire de filtre sur les sources.

Vous pouvez exclure des classes dans le rapport Jacoco en définissant un chemin d'exclusion mais les valeurs doivent être le chemin des classes compilées par rapport au répertoire cible/classes /.

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>**/*.class</exclude>
        </excludes>
    </configuration>
</plugin>

La meilleure solution serait de générer les classes dans un package spécifique. Mais peut-être que vous ne pouvez pas.

17
dams

Faire simplement ci-dessous a résolu mon problème d'ignorer un paquet plutôt que les fichiers.

<configuration>
    <excludes>
        <exclude>**/basepkg/subpkg1/subpkg2/*</exclude>
    </excludes>
</configuration>
7
Vero J