在gradle中运行shell命令但不在任务内部运行

时间:2014-03-17 08:27:59

标签: shell gradle build.gradle

我目前拥有的是:

task myTask (type : Exec) {
   executable "something.sh"
   ... (a lot of other things)
   args "-t"
   args ext.target
}

task doIt {
   myTask.ext.target = "/tmp/foo"
   myTask.execute();

   myTask.ext.target = "/tmp/gee"
   myTask.execute();
}

有了这个我以为我可以跑#34; myTask"当我开始时,使用不同的参数" doIt"。但只是第一次执行脚本,因为gradle会注意一个任务只运行一次。 我怎样才能重写" myTask"这样我可以多次调用它?没有必要将它作为一项单独的任务。

1 个答案:

答案 0 :(得分:32)

您可以执行以下操作:

def doMyThing(String target) {
    exec {
        executable "something.sh"
        args "-t", target
    }
}

task doIt {
    doLast {
        doMyThing("/tmp/foo")
        doMyThing("/tmp/gee")
    }
}

exec此处不是任务,而是Project.exec()方法。