我需要Gradle构建文件的一些帮助。我有一些子项目依赖于顶层文件夹中的任务。我只需要执行test
任务并将其拆分为两个单独的测试任务。目前文件系统结构如下(选项卡指示目录中的文件):
top-level-project-folder
A.gradle
B.gradle
C-subproject-folder
C.gradle
D-subproject-folder
D.gradle
A.gradle的内容(重构前):
subprojects {
tasks.test.dependsOn {
bTask
}
}
apply from: 'B.gradle'
C.gradle的内容(重构前):
test {
...
}
在重构之后,C.gradle需要看起来像:
test {
...
}
task runDifferentTests(type : Test) {
...
}
棘手的部分是C.gradle
test
任务目前取决于bTask
。但是,在重构后,C.gradle
的{{1}}任务应该不依赖于test
,但新的bTask
任务应该依赖于在runDifferentTests
。 (目前,bTask
' D.gradle
任务被标记为依赖于test
,但实际上并不依赖于它 - 我想删除该依赖项。依赖于bTask
的两个子项目中唯一的任务是新的bTask
任务。)
我尝试了一些不同的东西,但似乎无法找到有效的解决方案。
答案 0 :(得分:1)
只需删除subprojects
中的声明,并在C.gradle
中直接在子项目中声明您的相关性:
runDifferentTests.dependsOn rootProject.bTask
答案 1 :(得分:0)
这里有一些语法解决方案:
runDifferentTests.dependsOn (":bTask")
runDifferentTests.dependsOn rootProject.bTask
task runDifferentTests(type : Test, dependsOn: [":bTask"]) {
...
}
task runDifferentTests(type : Test) {
dependsOn rootProject.bTask
...
}
//in the root build.gradle to apply to all subprojects at once.
subprojects {
runDifferentTests.dependsOn (":bTask")
}
runDifferentTests.dependsOn {
tasks.findAll { task -> task.name.startsWith('bTask') }
}
:
可用于升级而不是rootProject取决于首选项和项目结构