java如何覆盖本地存储库中现有的Gradle插件?
我正在使用Gradle、jdk8、javafx和testfx构建一个应用程序。我需要在JDK 8上使用我们的应用程序才能在所有平台上使用我们的技术堆栈。我的问题是我无法将代码覆盖率引入到我们的构建中。我找到了这个链接
https://github.com/jacoco/jacoco/issues/74
。。。使用顶部的Jacoco预览构建,我能够替换intellij JAR并成功运行测试并获得覆盖率。然而,我很难将其应用到我的构建中。格拉德尔。据我所知,我需要在构建脚本中添加一个本地存储库
...
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(目录:“lib”)
- flatDir目录:“${projectDir}/lib”
- maven{url uri(“lib”)}
- 还有一两种方式我忘记了
。。。我的lib文件夹包含上面链接中预览构建zip的lib文件夹中的确切内容(未更改)。gradle似乎在查找本地回购协议时没有问题,但在查找JAR时遇到了困难。我假设我命名它的方式或它的“打包”方式有问题。我已经尝试过修改JAR名称,但我一直得到错误
- 出了什么问题:
配置根项目“myProject”时出现问题。
Could not resolve all dependencies for configuration ':classpath'. Could not find :org.jacoco.agent:. Required by: :myProject:unspecified
# 1 楼答案
“回答”我自己的问题,尽管事实上我还没有完全弄明白。无论如何,这里有两个链接,我发现,似乎解决了我的问题
http://forums.gradle.org/gradle/topics/jacocotestreport_is_skipping
。。。按照其中的一些说明可以运行我的测试,但我仍然无法运行“gradle jacocoTestReport”而不失败
更新
好的!我明白了,上面的链接确实帮我明白了。我的问题是asm all JAR,因为有几个,我不知道该使用哪一个。为了让jacoco使用Java1.8,您不需要指定toolVersion属性。您只需将以下内容添加到依赖项块(不是buildscript块,而是代码块)
jacocoAgent文件( “$projectDir/lib/org.jacoco.agent-0.6.4.201311160552.jar”)
JacoCant文件( “$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_测试版。jar来自组织。ow2。在以下位置找到asm组
http://mvnrepository.com/artifact/org.ow2.asm/asm-all/5.0_BETA
。。。希望这有帮助
# 2 楼答案
作为参考,最新的jacoo libs已更改,因此我将分享以下代码片段: