我有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'
第一个命令被忽略,只执行第二个命令。
那么无论如何我可以用一个任务执行两个命令吗?
您可以使用第二种方式在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中才能仅在执行流程上执行
为Exec
类型的任务配置(运行)多个命令是不可能的。 commandLine
它只是一个二传手 - 最后一个获胜。如果你需要运行多个命令,最好的想法是在注释中建议@RaGe实现多个任务,或编写自定义任务并使用groovy的本机机制--execute
方法。
您也可以使用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'
}
}
在doLast块使用.execute()
task myTask(group: "my-group") {
doLast {
println "Starting..."
println "echo \"MyEcho1\"".execute().text.trim()
println "echo \"MyEcho2\"".execute().text.trim()
}
}