用于运行grails命令的Groovy脚本

时间:2013-11-20 16:51:06

标签: java grails groovy

我想创建一个groovy脚本来运行grails clean,grails compile和grails run-app,但是,我注意到我无法运行任何grails命令。实际上我尝试在Groovy控制台上运行以下脚本:

 def envs = System.getenv().collect{"$it.key=$it.value"}
    //println envs
    println "java -version".execute(envs, new File("c:\\")).err.text
    println "grails -version".execute(envs, new File("c:\\")).text

这本身给了我以下输出:

groovy> def envs = System.getenv().collect{"$it.key=$it.value"} 
groovy> //println envs 
groovy> println "java -version".execute(envs, new File("c:\\")).err.text 
groovy> println "grails -version".execute(envs, new File("c:\\")).text 


    java version "1.7.0_06"
    Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
    Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

    Exception thrown

    java.io.IOException: Cannot run program "grails" (in directory "c:\"): CreateProcess error=2, The system cannot find the file specified

        at ConsoleScript26.run(ConsoleScript26:4)

    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified

        ... 1 more

以前有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:1)

在Windows上,grails命令是.bat文件,您无法使用.batRuntime.exec直接运行ProcessBuilder个文件(这是"...".execute最终委托的内容。

使用cmd /c

println ["cmd", "/c", "grails -version"].execute(envs, new File("c:\\")).text

或可能

println ["cmd", "/c", "grails", "-version"].execute(envs, new File("c:\\")).text

我不确定“grails -version”是否需要一个或两个参数(可能两种方式都有效,我目前无法测试这个)。

答案 1 :(得分:0)

如果java - version运行且grails -version未运行,则表示您未更新PATH环境变量。将该位置附加到变量的bin文件夹。

由于Grails只是一个zip,你需要手动完成。