让android gradle打开windows cmd并在构建完成后运行命令?

时间:2018-03-09 16:16:34

标签: android gradle cmd

我正在使用这个标准构建脚本构建一个android模块:

buildscript {// top-level    
  repositories {
      google()
      jcenter()
  }
  dependencies {
      classpath 'com.android.tools.build:gradle:3.0.1'
  }
}
allprojects {
  repositories {
      google()
      jcenter()
  }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

我已经google了很多知道如何让gradle打开windos cmd(我在win7上)并运行命令。我发现任务Exec并添加了,但它对我不起作用,也许我还不懂groovy和gradle。请让我明白如何做到这一点。

修改
通过使用评论中提到的论坛帖子,我将其添加到android {..}部分:

    task testingit(type:Exec) {
      println('try open cmd...............')
      commandLine "cmd","/k",'node', '-v'
    }

我得到了字符串输出,但cmd没有打开,也没有错误信息。

2 个答案:

答案 0 :(得分:1)

如果要在构建结束时执行此任务,可以使用build.finalizedBy

task endBuildTask(type: Exec) {
   commandLine  'cmd','/c','start', 'cmd.exe' ,'@cmd' , '/k', 'echo', 'Hello'
}
build.finalizedBy(endBuildTask)
// or gradle.buildFinished{endBuildTask.execute()}

这将在构建结束时创建一个新命令行,将命令在@cmd之后传递给新创建的命令行。如果要在执行命令后关闭此新命令行,请使用' / c'而不是' / k'。

答案 1 :(得分:1)

我只是回复我如何将上面接受的答案放在我的应用程序中,以防万一对任何人都有用(因为build.finalizedBy(endBuildTask)没有用,我无法理解为什么,但是gradle .buildFinished(...)做了这个工作)

这就是我的工作方式:

task endBuildTask(type: Exec) {
  workingDir 'C:\\tmp\\1\\'
  commandLine  'cmd','/c','node', '%FILE_JS%'
}

gradle.buildFinished{
    endBuildTask.execute()
}

我有一个nodejs应用程序,我想在android构建结束后执行。