Java 如何在Gradle中共享通用测试依赖项版本?
我在Java 如何在Gradle中共享通用测试依赖项版本?,java,gradle,kotlin,build-tools,Java,Gradle,Kotlin,Build Tools,我在kotlinDSL中遵循这一点,试图使子项目使用根项目中指定的依赖版本。下面是rootbuild.gradle.kts的一部分: plugins { `java-platform` } dependencies { constraints { api("com.google.guava:guava:28.0-jre") api("org.testng:testng:6.14.3") } } 以下是子项目的build.gradle.
kotlin
DSL中遵循这一点,试图使子项目使用根项目中指定的依赖版本。下面是rootbuild.gradle.kts的一部分:
plugins {
`java-platform`
}
dependencies {
constraints {
api("com.google.guava:guava:28.0-jre")
api("org.testng:testng:6.14.3")
}
}
以下是子项目的build.gradle.kts
:
plugins {
`java-library`
}
dependencies {
testImplementation("org.testng:testng")
}
val test by tasks.getting(Test::class) {
useTestNG()
}
当我在项目根目录中运行/gradlew run
时,一切正常。但是,当我运行/gradlew test
时,它会抱怨:
失败:生成失败,出现异常。
*出了什么问题:
任务“:misc:java:compileTestJava”的执行失败。
>无法解析配置的所有文件:misc:java:testCompileClasspath。
>找不到组织。testng:testng:。
要求:
项目:杂项:java
我在网上到处搜索,但运气不好。我想我应该在根构建脚本中使用类似于testapi(“org.testng:testng:6.14.3”)
的东西。正如评论中已经回答的,您在子项目中缺少对平台的引用:
dependencies {
implementation(platform(rootProject)) // Will use the constraints defined in the platform
testImplementation("org.testng:testng")
}
鉴于您在配置testImplementation中使用依赖项,我宁愿猜测您应该使用testImplementation,而不是testapi。@JBNizet这也行不通:“未解析引用:testImplementation”OK。所以我读了手册:。平台项目使用java平台插件,允许使用两种配置:api和运行时。要使用平台项目中定义的约束的项目配置需要依赖于该项目。所以在你的例子中,我想:testImplementation(platform(rootProject))@jbnize如果你是对的,implementation(platform(rootProject))
适合我。谢谢我的朋友!给你一个大大的拥抱!