Cobertura不适用于Java 7

Noa*_*oam 5 java cobertura maven java-7 jenkins

我正在使用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> 
Run Code Online (Sandbox Code Playgroud)

现在,当我的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>
Run Code Online (Sandbox Code Playgroud)

报告是:

<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>
Run Code Online (Sandbox Code Playgroud)

我看到很多线程谈论这个问题,解决方案是添加这一行,<argLine>-XX:-UseSplitVerifier</argLine>但它没有帮助.

我在这做错了什么?

Spe*_*cer 5

我们使用Cobertura插件版本2.6与Java 7没有任何问题.这包括一些带有Java 7语法的文件(例如多捕获),这些文件曾经在早期的插件版本中失败.我也不需要再-XX:-UseSplitVerifier在SureFire插件中使用了.

<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>
Run Code Online (Sandbox Code Playgroud)


Dzh*_*ghn 0

也许您可以将编译器源和目标版本选项设置为版本“1.6”。不同版本的构建工具可能会为此设置选择不同的默认值。(如今,Buildr 1.4 默认使用源和目标 1.7;Maven 2.x 仍然使用 1.6 或更早版本。)