我正在使用 Gradle、JDK 8、Java FX 和 Test FX 构建应用程序。我需要使用 JDK 8 才能让我们的应用程序在所有平台上使用我们的技术堆栈。我的问题是我无法将代码覆盖率纳入我们的构建。我找到了这个链接...
https://github.com/jacoco/jacoco/issues/74
...并使用顶部的 Jacoco 预览构建,我能够替换我的 intellij JAR 并成功运行我的测试并获得覆盖。但是,我无法将它放入我的 build.gradle 中。据我所知,我需要在我的构建脚本中添加一个本地存储库...
...
apply plugin: "jacoco"
...
buildscript {
repositories {
// Local Repo
// MVN Repo(s)
}
dependencies {
// Classpaths
}
}
jacoco {
toolVersion = "0.6.4.201311160552" // I need this specific version, which isn't on a MVN repo
}
...我尝试通过多种方式添加我的本地存储库,包括...
- flatDir(dirs: "lib")
- flatDir 目录:“${projectDir}/lib”
- maven { url uri("lib") }
- 我忘记的其他一两种方式
...我的 lib 文件夹包含上面链接中预览构建 zip 的 lib 文件夹中的确切内容,没有变化。看起来 gradle 在定位本地 repo 时没有问题,但它在查找 JAR 时遇到了问题。我认为我命名它的方式或它的“打包”方式有问题。我尝试修改 JAR 名称,但我一直收到错误...
- 出了什么问题:
配置根项目“myProject”时出现问题。
Could not resolve all dependencies for configuration ':classpath'. Could not find :org.jacoco.agent:. Required by: :myProject:unspecified
最佳答案
“回答”我自己的问题,尽管事实上我还没有完全弄明白。不管怎样,我发现这里有两个链接似乎可以解决我的问题......
http://forums.gradle.org/gradle/topics/jacocotestreport_is_skipping
...遵循其中一些说明允许我的测试运行,但我仍然无法在没有失败的情况下运行“gradle jacocoTestReport”。
更新
好的!我想通了,上面的链接确实帮助我弄清楚了。我的问题是 asm-all JAR,因为有好几个,我不知道该用哪一个。为了让 jacoco 使用 Java 1.8,您不需要指定 toolVersion 属性。您需要做的就是将以下内容添加到您的依赖项 block (不是构建脚本 block ,代码块)...
jacoco代理文件( "$projectDir/lib/org.jacoco.agent-0.6.4.201311160552.jar")
jacocoAnt 文件( "$projectDir/lib/org.jacoco.ant-0.6.4.201311160552.jar", "$projectDir/lib/org.jacoco.core-0.6.4.201311160552.jar", “$projectDir/lib/org.jacoco.report-0.6.4.201311160552.jar”, "$projectDir/lib/asm-all-5.0_BETA.jar")
...其中 asm-all-5.0_BETA.jar 取自位于...的 org.ow2.asm 组
http://mvnrepository.com/artifact/org.ow2.asm/asm-all/5.0_BETA
...希望这对您有所帮助!
关于java - 如何从本地存储库覆盖现有的 Gradle 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056566/