在 gradle 中,一个测试配置如何声明对另一个项目的测试配置的依赖?
In gradle, how can a test configuration declare a dependency upon another project's test configuration?
在gradle 5.6.2 中,我有一个包含子项目的项目。子项目中的测试共享很多代码,所以我希望子项目测试依赖于父项目测试。但是测试中的引用不会解析,即使主项目中的引用可以解析。 Gradle 文档说要使用“地图符号”依赖声明,并且此依赖块不会产生错误:
dependencies {
api project(":henchbot-api")
testImplementation project(path: ':henchbot-api', configuration: 'testRuntime')
}
...但是测试不会编译。如果我将 testRunTime
更改为 testRuntimeClasspath
,则 gradle 无法解决该项目依赖关系。
您还需要声明测试工件 - 请参阅 https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:project_jar_dependencies
在项目中henchbot-api
configurations {
testLib
}
task testLibJar(type: Jar) {
archiveBaseName = archivesBaseName + '-testLib'
from sourceSets.test.output
}
artifacts {
testLib testLibJar
}
在另一个中 - 依赖关系是
testImplementation project(path: ':henchbot-api', configuration: 'testLib')
在gradle 5.6.2 中,我有一个包含子项目的项目。子项目中的测试共享很多代码,所以我希望子项目测试依赖于父项目测试。但是测试中的引用不会解析,即使主项目中的引用可以解析。 Gradle 文档说要使用“地图符号”依赖声明,并且此依赖块不会产生错误:
dependencies {
api project(":henchbot-api")
testImplementation project(path: ':henchbot-api', configuration: 'testRuntime')
}
...但是测试不会编译。如果我将 testRunTime
更改为 testRuntimeClasspath
,则 gradle 无法解决该项目依赖关系。
您还需要声明测试工件 - 请参阅 https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:project_jar_dependencies
在项目中henchbot-api
configurations {
testLib
}
task testLibJar(type: Jar) {
archiveBaseName = archivesBaseName + '-testLib'
from sourceSets.test.output
}
artifacts {
testLib testLibJar
}
在另一个中 - 依赖关系是
testImplementation project(path: ':henchbot-api', configuration: 'testLib')