Java 类路径上具有asm的cobertura问题
我已经使用maven、Spring2.5.6、Hibernate3.2.6和最近添加的用于代码覆盖率分析的Cobertura1.9rc1进行了项目设置 我遇到的第一个问题是与类路径相关的错误,因为类路径上有两个不同版本的asm.jar。只有在运行JUnit测试并尝试加载spring应用程序上下文时,才会出现此问题 根据cobertura项目主页上的常见问题: 为什么Cobertura导致我与ASM发生类路径冲突 Cobertura使用ASM修改字节码。还有一些其他流行的程序使用ASM;Groovy和Hibernate,举两个例子。如果Cobertura使用不同版本的asm,并且将两个版本都添加到类路径中,则可能会出现问题 Cobertura仅在检测时使用ASM。在运行测试时,Cobertura在类路径中不需要ASM。如果您看到类路径冲突,只需确保Cobertura附带的asm jar仅由Cobertura使用,并且仅在检测时使用 因此,在我的项目pom中,我将依赖项配置如下:Java 类路径上具有asm的cobertura问题,java,hibernate,spring,maven,cobertura,Java,Hibernate,Spring,Maven,Cobertura,我已经使用maven、Spring2.5.6、Hibernate3.2.6和最近添加的用于代码覆盖率分析的Cobertura1.9rc1进行了项目设置 我遇到的第一个问题是与类路径相关的错误,因为类路径上有两个不同版本的asm.jar。只有在运行JUnit测试并尝试加载spring应用程序上下文时,才会出现此问题 根据cobertura项目主页上的常见问题: 为什么Cobertura导致我与ASM发生类路径冲突 Cobertura使用ASM修改字节码。还有一些其他流行的程序使用ASM;Groov
<dependency>
<groupId>net.sourceforge.cobertura</groupId>
<artifactId>cobertura</artifactId>
<version>1.9rc1</version>
<exclusions>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm-attrs</artifactId>
</exclusion>
</exclusions>
</dependency>
net.sourceforge.cobertura
科贝图拉
1.9rc1
asm
asm
asm
asm属性
现在我可以从eclipse运行单元测试了,我的应用程序也可以在服务器上正常运行
但是,当我在我的项目上运行mvn cobertura:cobertura时,我得到以下错误:
java.lang.NoClassDefFoundError:net/sourceforge/cobertura/coveragedata/TouchCollector
我认为这是因为类路径上有错误的asm.jar。但是,如cobertura常见问题解答中所述,我还可以如何解决这个类路径冲突呢?要配置maven cobertura插件,您应该将其添加到
部分,而不是作为
-我假设您的项目代码不需要cobertura来编译
运行mvn cobertura:cobertura
时,您引用的
部分将不会被引用
例如:
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
...
</configuration>
</plugin>
</plugins>
...
org.codehaus.mojo
cobertura maven插件
2.4
...
即使在2013年也有不错的建议。应该被标记为答案。