Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs Gradle——从任务中执行多个命令_Extjs_Gradle - Fatal编程技术网

Extjs Gradle——从任务中执行多个命令

Extjs Gradle——从任务中执行多个命令,extjs,gradle,Extjs,Gradle,我有两个独立的应用程序(在一个项目中),需要两个独立的版本(senchacmd)。我被要求创建一个gradle脚本,用于为这两个应用程序进行构建 我创建了一个生成一个应用程序的任务,但在使用同一个任务生成第二个应用程序时遇到了问题 这就是我到目前为止所做的: task senchaCmdBuild (type: Exec) { workingDir 'src/main/app/MYAPP' commandLine 'cmd', 'c', 'sencha app build' } 这个很

我有两个独立的应用程序(在一个项目中),需要两个独立的版本(senchacmd)。我被要求创建一个gradle脚本,用于为这两个应用程序进行构建

我创建了一个生成一个应用程序的任务,但在使用同一个任务生成第二个应用程序时遇到了问题

这就是我到目前为止所做的:

task senchaCmdBuild (type: Exec) {
  workingDir 'src/main/app/MYAPP'
  commandLine 'cmd', 'c', 'sencha app build'
}
这个很好用

当我向上述任务添加以下两行时:

 workingDir 'src/main/app/MYOTHERAPP'
 commandLine 'cmd', 'c', 'sencha app build'
忽略第一个命令,仅执行第二个命令


那么,我是否可以用一个任务同时执行两个命令?

对于类型为
Exec
的任务,不可能配置(运行)多个命令<代码>命令行这只是一个二传手——最后一个赢了。如果您需要运行多个命令,最好的办法是按照注释中的@RaGe建议实现多个任务,或者编写一个自定义任务并使用groovy的本机机制--
execute
方法。

您可以使用第二种方法在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中,以便仅在执行流上执行

您还可以使用渐变方法而不是创建虚拟任务

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()
       }
    }

创建两个
Exec
任务并从主任务运行它们。我觉得必须有一个解决方案,您可以利用命令行上的
&&
执行多个任务。或者,您可以调用一个同时执行这两种操作的shell脚本。如果您在插件中执行此操作,则需要使用
project.exec
(以及
project.task
)来调用正确的DSL方法。是否有办法仅在第一个命令失败时运行第二个命令?@NoahAndrews我目前正在为此编写不同的语法,它取自groovy。用这个你可以执行一些东西:def result=“echo 1”。execute(),用这个你可以等到finish:result.waitFor(),用这个你可以得到结果值:result.exitValue(),太好了,这让我的生活(构建:)更容易了!