android - 如果满足特定条件,如何停止 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 任务执行?.
解决方案
我找到了。我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
}
}
推荐阅读
- java - 如何更新特定的 Grails 域类属性?
- swagger - Swagger 试图在依赖项中公开 API 导致内部服务错误
- javascript - 如何覆盖marked.js ul 元素?
- http - 通过处理程序的条件中间件行为
- python - 如何使用正则表达式将数字与给定单词分开?
- algorithm - 如何将较大范围的值分布在较小范围的值上
- sql-server - SSIS 可以支持在每行中加载具有不同列长度的文件吗?
- javascript - 实现 Vue 可拖动
- c# - 如何在 .net 核心类库中使用 Automapper?
- pandas - 神经网络:TypeError:fitness() 得到了一个意外的关键字参数“嵌入”