我正在使用这个标准构建脚本构建一个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没有打开,也没有错误信息。
答案 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构建结束后执行。