我正在使用maven 3.0.4,JRE 1.7.0_09
。
当我使用mvn clean install
我的所有测试通过并且一切看起来都很好 - 这是我的surefire插件配置:
<plugin>
<version>2.12.4</version>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- -XX:-UseSplitVerifier is for java 7 -->
<argLine>-XX:-UseSplitVerifier</argLine>
</configuration>
</plugin>
现在,当我mvn cobertura:cobertura
我的一些测试有这样的错误时:
Expecting a stackmap frame at branch target ....
还有一些错误让我明白它没有使用JRE7运行(例如,Encountered " "|" "| "" at line...
)
这是我的cobertura插件配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
报告是:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</plugins>
</reporting>
我看到很多threads讨论了这个问题,解决方案是添加这一行<argLine>-XX:-UseSplitVerifier</argLine>
,但它没有帮助。
我在这里做错了什么?
答案 0 :(得分:5)
我们使用Cobertura插件版本2.6与Java 7没有任何问题。这包括一些带有Java 7语法的文件(例如多捕获),这些文件曾经在早期的插件版本中失败。我也不需要再在SureFire插件中使用-XX:-UseSplitVerifier
。
<properties>
<coberturaMavenPlugin>2.6</coberturaMavenPlugin>
<mavenSurefirePlugin>2.12</mavenSurefirePlugin>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${mavenSurefirePlugin}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${coberturaMavenPlugin}</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
</plugins>
</reporting>
答案 1 :(得分:1)
除此之外,我们遇到的问题与Cobertura和Xalan / Xerces的版本有关。
查看http://mojo.codehaus.org/cobertura-maven-plugin/dependencies.html,可以看出cobertura插件在Xalan 2.6.0&amp;上有传递依赖关系。 Xerces at 2.6.2。
为了解决这个问题,我补充说:
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
<scope>test</scope>
</dependency>
测试通过,在初始测试阶段都有确定的火力和cobertura阶段。
答案 2 :(得分:0)
也许您可以将编译器源和目标版本选项设置为版本“1.6”。不同版本的构建工具可以为此设置选择不同的默认值。 (Buildr 1.4默认为源和目标1.7这些天; Maven 2.x仍然使用1.6或更早。)