如何使用Java7和spring工具运行Jacoco?

如何使用Java7和spring工具运行Jacoco?,java,maven,code-coverage,java-7,jacoco,Java,Maven,Code Coverage,Java 7,Jacoco,因为我在Java7中使用cobertura时遇到了一些问题,所以我正在尝试Jacoco。 我的项目有父pom.xml和子项目。 在一个项目中,我使用spring来运行一些集成测试,因此我在该项目的pom.xml中使用了这个插件: <plugin> <version>2.12.4</version> <groupId>org.apache.maven.plugins</groupId> <artifactId

因为我在Java7中使用cobertura时遇到了一些问题,所以我正在尝试Jacoco。 我的项目有父
pom.xml
和子项目。 在一个项目中,我使用spring来运行一些集成测试,因此我在该项目的
pom.xml
中使用了这个插件:

<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 
            -javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar
        </argLine>
    </configuration>
</plugin>
<plugin>
    <version>2.5.1</version>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    <optimize>true</optimize>
    <debug>true</debug>
    <showDeprecation>true</showDeprecation>
    <showWarnings>true</showWarnings>
    <encoding>utf8</encoding>
    </configuration>
</plugin>
现在,当我使用
mvn clean install
时,所有项目的
/target
文件夹中都有这个文件:
jacoco.exec
; 但此使用
弹簧工具的项目没有此文件。
我认为问题在于Jacoco希望使用
spring instrument
asm
,但失败了(但我不确定我是否正确)

Jacoco版本为
0.6.3.201306030806

在这种情况下,为什么Jacoco无法使用仪器? 我怎样才能克服这个问题


我想也许我可以配置maven编译器插件将代码编译为1.6,这样我就不需要maven surefire插件了。这有意义吗?

我猜JaCoCo也使用java命令行,因为它可能是作为javaagent实现的


可能是spring instrument javaagent重写了Jacoo one吗?

Jacoo Maven插件定义的argLine值正在被Surefire插件重写

在“jacoco maven插件”配置中设置属性名称,如下所示:

<propertyName>coverageAgent</propertyName>
coverageAgent
然后在surefire插件配置中编辑argLine,使其包含Jacoco的代理:

<argLine>
    -XX:-UseSplitVerifier
    ${coverageAgent} 
    -javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar
</argLine>

)。

我不这么认为:
[DEBUG](s)argLine=-javaagent:C:\Users\noaml\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=…\target\jacoco.exec
然后也许是另一种方式——jacoco覆盖sprint工具的java代理,代码也因此无法运行?谢谢你的重播-但这不太可能,在这种情况下,测试根本无法通过。。。