问题描述
我遇到了类似于 [https://stackoverflow.com/questions/25432810/error-when-trying-to-use-org-codehaus-mojocobertura-maven-plugin2-6] 的问题。
日志: 目标 org.codehaus.mojo 的执行 default-cli:cobertura-maven-plugin:2.6:instrument Failed: Plugin org.codehaus.mojo:cobertura-maven-plugin:2.6 或其依赖项之一无法解析:找不到artifact com.sun:tools:jar:0 在指定路径 /usr/local/Cellar/openjdk/15.0.2/libexec/openjdk.jdk/Contents/Home/../lib/tools.jar
研究:
当我执行 java --version
时,我得到:
java 11.0.6 2020-01-14 LTS
搜索 SO 后,我发现由于我使用的是 JDK 11,因此 tools.jar
已被删除 [https://stackoverflow.com/a/60549167/13241701]。当我运行 jacoco 时,测试用例会运行。但是
问题:我只想报告 cobertura 覆盖率报告。
我能得到一些帮助吗?
解决方法
我建议使用插件的最新版本,它是 2.7 并且内置了针对 Java 11 的修复。
如果您由于某种原因无法使用最新的插件,可以尝试以下一些方法
使用 'mvn dependency:tree' 查找调用该 jar 的位置并像这样排除它
catch
或者你可以在你的 mvn 中引用它
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
其中系统路径是指向您的库的链接
另一种方法是提供 jdk vm 作为运行参数
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.11.6\lib\tools.jar</systemPath>
</dependency>