我有2个独立的应用程序(在一个项目中),需要2个独立的构建(sencha cmd)。我被要求创建一个gradle脚本,它将为两个应用程序执行构建。
我创建了一个构建一个应用程序的任务,但是使用相同的任务构建第二个应用程序时遇到了麻烦。
这是我到目前为止所做的:
task senchaCmdBuild (type: Exec) {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
这很好。
当我将以下2行添加到上述任务时:
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
忽略第一个命令,只执行第二个命令。
那么无论如何我可以用一个任务执行这两个命令吗?
答案 0 :(得分:49)
您可以使用第二种方式在gradle上声明任务类型。
task senchaCmdBuild {
doLast {
exec {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
exec {
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
}
}
您需要将exec方法放在doLast中才能仅在执行流程上执行
答案 1 :(得分:7)
无法为Exec
类型的任务配置(运行)多个命令。 commandLine
它只是一个二传手 - 最后一个获胜。如果你需要运行多个命令,最好的想法是在注释中建议@RaGe实现多个任务,或编写自定义任务并使用groovy的本机机制 - execute
方法。
答案 2 :(得分:3)
您还可以使用 gradle方法来创建虚拟任务
task senchaBuild() {
doLast {
senchaBuild_steps()
}
}
void senchaBuild_steps() {
exec {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
exec {
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
}
答案 3 :(得分:0)
在doLast块上使用.execute()
task myTask(group: "my-group") {
doLast {
println "Starting..."
println "echo \"MyEcho1\"".execute().text.trim()
println "echo \"MyEcho2\"".execute().text.trim()
}
}