首页 > 解决方案 > 如果满足特定条件,如何停止 gradle 同步

问题描述

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

我的部分毕业典礼在这里:

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 中检查了其他解决方案,但似乎都指向命令行解决方案,例如如何在 Android Studio 中停止 Gradle 任务执行?.

标签: androidgradle

解决方案


我找到了。我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
    }
}

推荐阅读