【问题标题】:gradle pass parameter to dependsOn taskgradle将参数传递给dependsOn任务
【发布时间】:2017-06-06 14:29:05
【问题描述】:

我有 3 个 gradle 任务:A、B、C。 B依赖于A。 C 依赖于 A。

如果在 A 中有一个 if 检查,我希望在 B 运行时为真,在 C 运行时为假。 我该怎么做?

为了清楚起见,真正的任务是:

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

【问题讨论】:

    标签: gradle


    【解决方案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.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2021-07-18
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多