物业
excludes的
report目标指定哪些文件应该从分析产生报告时被排除在外。如果
/path/tp/my/project/target/classes/meta-INF/bundled-dependencies/some-third-party-1-jar-with-dependencies.jar@org/slf4j/event/EventConstants.class文件是
/path/tp/my/project/target/classes/meta-INF/bundled-dependencies/some-third-party-1-jar-with-dependencies.jar,其余的关于JAR文件中的类。
因此,作为正确配置的示例之一:
<configuration> <excludes> <exclude>meta-INF/**</exclude> </excludes></configuration>
作为证明
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>example</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.1</version> </plugin> </plugins> </build></project>
src/main/java/Example.java
public class Example {}和
src/test/java/ExampleTest.java
public class ExampleTest { @org.junit.Test public void test() { }}执行
mvn clean jacoco:prepare-agent packagemkdir target/classes/meta-INF/cp ~/.m2/repository/org/slf4j/slf4j-api/1.4.2/slf4j-api-1.4.2.jar target/classescp ~/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar target/classes/meta-INFmvn jacoco:report
将失败并显示消息
Error while analyzing /private/tmp/j/target/classes/slf4j-api-1.4.2.jar@org/slf4j/helpers/BasicMarker.class. Can't add different class with same name: org/slf4j/helpers/BasicMarker
同时执行
pom.xml包含排除
meta-INF/**
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>example</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.1</version> <configuration> <excludes> <exclude>meta-INF/**</exclude> </excludes> </configuration> </plugin> </plugins> </build></project>
将会成功。
附带说明:目标属性
excludes的语义
prepare-agent是不同的
-它指定了类名(无论其在磁盘上的位置如何),在执行测试期间应从工具中排除该类名。



