6

svn deleteGrails アプリから実行したい。Grails コンソールで次の両方をテストしました。

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

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

どちらの場合も、 のインスタンスjava.lang.Processが返されますが、コマンドは実行されません (/usr/share/mydirは削除されません)。

この動作は、アプリが Linux (Ubuntu) で実行されている場合にのみ発生します。Windowsで実行すると、コマンドが実行されます。

アップデート

コメントでのティムのアドバイスに従って、プロセス出力をキャプチャするようにコマンドを変更しました。

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

以下のコードは、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 に答える