我正在一个多项目系统中工作(有 40 多个子项目)。每个子项目都有自己的布局(大多数子项目遵循通用布局,但有些不同)。在我的子项目中,有这两个:
- testjunit
- sourceSets
- lptfExperimental
- other source sets
- basicservices
- sourceSets
- testacceptance
- other source sets
Run Code Online (Sandbox Code Playgroud)
我需要使源集basicservices-testacceptance
依赖于源集的输出testjunit-lptfExperimental
。
我尝试这样做:
dependencies{
testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}
Run Code Online (Sandbox Code Playgroud)
和
dependencies{
project.parent.subprojects.each{prj ->
if(prj.name == "testjunit")
testacceptanceCompile prj.sourceSets.findByName('lptfExperimental').output
}
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下我都会收到以下错误:
失败:构建失败并出现异常。
其中:脚本'C:\Development\defaults.gradle'行:144
出了什么问题:评估脚本时出现问题。在 SourceSet 容器上找不到属性“lptfExperimental”。
defaults.gradle
只是一个额外的信息:此依赖项在应用到build.gradle
项目的名为的文件中声明basicservices
。
apply plugin: 'java'
apply plugin: 'eclipse'
...
sourceSets {
...
// test acceptance
testacceptance{
java{
srcDir 'test/acceptance/src/java'
}
resources {
srcDir 'test/acceptance/src/java'
}
}
...
}
// default dependencies
dependencies{
testacceptanceCompile project(':testjunit')
testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}
...
Run Code Online (Sandbox Code Playgroud)
...
sourceSets{
...
lptfExperimental{
java {
srcDir 'lptf-experimental/src/java'
}
resources {
srcDir 'lptf-experimental/src/java'
}
}
...
Run Code Online (Sandbox Code Playgroud)
apply plugin: 'java'
apply plugin: 'eclipse'
apply from: '../defaults.gradle'
dependencies{
...
compile project(':testjunit')
...
}
Run Code Online (Sandbox Code Playgroud)