使用Java 8的cobertura-maven-plugin

Hil*_*kus 18 java cobertura maven maven-cobertura-plugin

它只是我或cobertura-maven-plugin不适用于java 8?当它运行我得到

[INFO] --- cobertura-maven-plugin:2.6:instrument (default) @ provider-impl ---
[INFO] Cobertura 2.0.3 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[cobertura] WARN  [main] net.sourceforge.cobertura.instrument.CoberturaInstrumenter - Unable to instrument file /var/lib/jenkins/workspace/BranchBuilder/implementations/provider-impl/target/generated-classes/cobertura/com/foo/impl/internal/ServiceProviderImpl$JoinRunner.class
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:147)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:121)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.addInstrumentationToSingleClass(CoberturaInstrumenter.java:234)
at net.sourceforge.cobertura.instrument.Main.addInstrumentationToSingleClass(Main.java:298)
at net.sourceforge.cobertura.instrument.Main.addInstrumentation(Main.java:307)
at net.sourceforge.cobertura.instrument.Main.parseArguments(Main.java:399)
Run Code Online (Sandbox Code Playgroud)

我知道ASM和java 8存在问题所以我怀疑问题是maven-plugin还没有更新为使用兼容java-8的ASM版本

作为参考,我在这里问了这个问题,但没有得到答案

有没有人设法使用java 8的cobertura-maven-plugin?

小智 18

我能够通过手动更新cobetura-maven-plugin使用的ASM依赖来实现它.以下链接包含更多详细信息:http: //www.befreeman.com/2014/09/getting-cobertura-code-coverage-with.html

  • 当我使用lambdas时,对我不起作用 - 有没有办法解决这个问题? (6认同)
  • 实际上,当您开始更频繁地使用Java 8的更具异国情调的功能时,不幸的是,这种解决方法似乎停止了工作.:( (2认同)

Jig*_*shi 6

让它理解新的类格式是一个悬而未决的问题,
https://github.com/mojohaus/cobertura-maven-plugin/issues/21

  • 此问题现已修复,版本为"2.7" (12认同)