【问题标题】:How to stop a gradle sync if a certain condition is met如果满足特定条件,如何停止 gradle 同步
【发布时间】:2019-12-23 07:34:19
【问题描述】:

我有一个依赖于preProcessing 任务的doNecessaryJob 任务。如果preProcessing 中的某个条件为真,我想立即停止同步。我该怎么做?

我的部分 gradle 在这里:

task preProcessing() {
    Gradle gradle = getGradle()
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
    Pattern pattern
    if (tskReqStr.contains("assemble"))
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")
    Matcher matcher = pattern.matcher(tskReqStr)
    if (matcher.find()) {
        // do processing here
    } else {
        println "Error, stopping the sync."
        // !STOP THE GRADLE SYNC HERE DUE TO ERROR!
    }
}
task doNecessaryJob() {
    dependsOn preProcessing

    // do necessary processing here that depends on variables from preProcessing task
}

我在 SO 中检查了其他解决方案,但似乎都指向命令行解决方案,例如 How to stop Gradle task execution in Android Studio?。

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    我找到了。我像这样使用GradleException:

    task preProcessing() {
        Gradle gradle = getGradle()
        String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
        Pattern pattern
        if (tskReqStr.contains("assemble"))
            pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
        else
            pattern = Pattern.compile("generate(\\w+)(Release|Debug)")
        Matcher matcher = pattern.matcher(tskReqStr)
        if (matcher.find()) {
            // do processing here
        } else {
            throw new GradleException("Error, stopping the sync.")  // <--- THE FIX
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多