gradle 将参数传递给依赖任务



我有 3 个渐进任务:A、B、C。B 取决于 A。C 依赖于 A。

如果在 A 中有一个 if 检查,我希望在 B 运行时为 true,在 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操作中设置war.flag,war.ext.flag之前依赖On,但是什么都没有...

我找到了一个使用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.
}

最新更新