【发布时间】:2014-02-14 08:30:35
【问题描述】:
我有两个任务,task_1应该压缩png文件,task_2不应该压缩png文件,所以我想添加一个参数来控制它。
project.ext.set("compressPngs", 1);
task taskCompressPngs(type:Exec){
commandLine "myshell.sh"
args compressPngs
}
task task_1(dependsOn:'taskCompressPngs'){}
task task_2(dependsOn:'taskCompressPngs'){}
gradle.taskGraph.whenReady { taskGraph ->
if (taskGraph.hasTask(task_1))
{
compressPngs=1
}
if (taskGraph.hasTask(task_2))
{
compressPngs=0
}
}
但是当我运行 task_1 或 task_2 时,在任务 'taskCompressPngs' 中,传递给我的脚本 'myshell.sh' 的 'compressPngs' 总是为 1,为什么?如何解决?
【问题讨论】:
-
为什么task_2在不应该压缩的时候依赖于taskCompressPngs?
-
整个任务图是:task_2(task_1) -> task 'osbuild' -> sign -> package -> taskCompressPngs,'->' 表示依赖。我只是希望任务图清晰。
-
也许在 doLast{} 中移动 'args compressPngs' 可以解决问题。这样它是在 配置之后设置的。但正如聪明的@PeterNiederwieser 所说;条件配置很少是一个好的解决方案。
-
我听从 Peter N 的建议,但如果您坚持尝试以下链接,可能会有用 - stackoverflow.com/questions/10554950/…
-
我试过了,但对我不起作用。