我有3个gradle任务:A,B,C。 B取决于A. C依赖A。
如果有一个if检查A,我希望在B运行时为真,当C运行时为false。 我该怎么做?
为清楚起见,真正的任务是:
war { // task A
webAppDirName = 'src/main/webapp'
if (flag) {
rootSpec.exclude("**/*.json")
rootSpec.exclude("**/*.xml")
}
}
ospackage { // task B
buildRpm {
dependsOn war
}
}
task localTomcat { // task C
dependsOn war
}
我在doFirst动作中尝试在dependsOn之前设置war.flag,war.ext.flag,但没有...
答案 0 :(得分:1)
我找到了一个使用 dependsOn 链和 mustRunAfter 的解决方案。
代码:
task war4pkg {
doLast {
war.rootSpec.exclude("**/*.json")
war.rootSpec.exclude("**/*.xml")
}
}
war {
webAppDirName = 'src/main/webapp'
}
ospackage {
buildRpm {
dependsOn war4pkg, war # order doesn't matter
war.mustRunAfter war4pkg # order set here
}
}
task localTomcat {
dependsOn war # nothing here.
}