我有一个项目,当我使用废弃的 compile
和 testCompile
时,它构建得很好,但是当我将其切换到 implementation
时, testImplementation
,此引用中断。
def jmockit =configurations.testCompile.files.find { it.name.contains("jmockit") }.absolutePath
它给出错误无法在空对象上获取属性“absolutePath”
当我尝试像这样改变它时
def jmockit =configurations.testImplementation.files.find { it.name.contains("jmockit") }.absolutePath
我收到错误
不允许直接解析配置“testImplementation”
根据其他相关问题,我已经尝试过
def jmockit =configurations.compileClasspath.files.find { it.name.contains("jmockit") }.absolutePath
这再次给出了Cannot get property 'absolutePath' on null object
错误。
testImplementation 依赖项进入什么配置?我如何以这种方式访问它们?
不确定它是否相关,但这是 IntelliJ 中的一个 java 项目。
最佳答案
它会中断,因为 testCompile
不是从 testImplementation
扩展的。事实上恰恰相反。
您可以在图 3.Java 插件 - 测试源集依赖项配置中看到完整的测试配置层次结构 Dependency configurations文档。
您必须使用testCompileClasspath
来检索您要查找的absolutePath
。完整示例如下( Kotlin DSL ):
plugins {
id("java")
}
repositories {
mavenCentral()
}
group = "io.mateo.test"
dependencies {
testImplementation("org.apache.commons:commons-lang3:3.11")
testImplementation("org.jmockit:jmockit:1.49")
}
val jmockit = configurations.testCompileClasspath.get().files.filter { it.name.contains("jmockit") }[0]
println(jmockit.absoluteFile)
通过上述内容,您将看到您所追求的路径:
$ ./gradlew assemble
> Configure project :
C:\Users\fmate\.gradle\caches\modules-2\files-2.1\org.jmockit\jmockit\1.49\e281fc6778c43060402505f062f6515c2adeb037\jmockit-1.49.jar
BUILD SUCCESSFUL in 731ms
2 actionable tasks: 2 up-to-date
关于java - gradle:切换到实现/测试实现在访问配置时导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044549/