6

我想svn delete从我的 Grails 应用程序中执行一个。我在 Grails 控制台中测试了以下两项:

"svn delete /usr/share/mydir".execute()

Runtime.getRuntime().exec("svn delete /usr/share/mydir")

在这两种情况下,java.lang.Process都会返回一个 的实例,但不会执行命令(/usr/share/mydir不会删除)。

此行为仅在应用程序在 Linux (Ubuntu) 上运行时发生。如果我在 Windows 上运行它,该命令会被执行。

更新

按照 Tim 在评论中的建议,我更改了命令,以便它捕获进程输出:

def process = "svn delete /usr/share/mydir".execute()
def out = new StringBuilder()
process.waitForProcessOutput(out, new StringBuilder())

println "$out"

我现在看到它失败的原因是:

错误svn:无法打开文件'/usr/share/mydir/.svn/lock':权限被拒绝

4

1 回答 1

3

The below code works fine for me on CentOS.

    def scriptCom="/folderlocation/shellscript.sh"
    println "[[Running $scriptCom]]"
    def proc = scriptCom.execute()

    def oneMinute = 60000
    proc.waitForOrKill(oneMinute)

    if(proc.exitValue()!=0){
        println "[[return code: ${proc.exitValue()}]]"
        println "[[stderr: ${proc.err.text}]]"
        return null
    }else{
        println "[[stdout:$revisionid]]"
        return proc.in.text.readLines()
    }
于 2012-07-06T08:50:56.523 回答