我有一个外部命令,我试图从Groovy运行。该命令在命令中嵌入了引号,我收到以下错误:
Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.waitFor() is applicable for argument types: () values: []
我尝试使用反斜杠转义引号,但这也不起作用。
以下是命令的示例:
scm workspace add-components test-workspace -s test-stream "test1" "test2" -r url
我尝试将其构建为:
scm workspace add-components test-workspace -s test-stream "\test1\" \"test2\" -r url
Groovy方法:
void addComponents(String repository, String name, String flowTarget, ArrayList components) {
String compStr = components.toString().replace('[', '\"').replace(']', '\"').replace(', ', '\" \"')
String cmd = """scm workspace add-components ${name} -s ${flowTarget} ${compStr} -r ${repository}"""
println cmd
def proc = cmd.execute()
cmd.waitFor()
getReturnMsg(proc)
}
答案 0 :(得分:3)
您需要致电waitFor()
上的proc
,而不是cmd
。