gradle传递参数到dependsOn任务

时间:2017-01-21 19:06:42

标签: gradle

我有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,但没有...

1 个答案:

答案 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.
}