我尝试使用Groovy在WildFly 10上取消部署应用程序。对于取消部署,我通过Groovy脚本执行以下命令
'{Wildfly_home}/bin/jboss-cli.sh -c --command="undeploy {earfile}"'.execute()
该命令根本没有被执行。所以我捕获了错误流,它给了我以下消息:
'***.ear"' is assumed to be a command(s) but the commands to execute have been specified by another argument: ["undeploy]
我尝试删除双引号但没有用。
任何人都可以帮我这个吗?
答案 0 :(得分:0)
只是一个很长的镜头:查看手册
https://docs.jboss.org/author/display/WFLY/Command+Line+Interface?_sscc=t
我会建议像
这样的东西'{Wildfly_home}/bin/jboss-cli.sh -c --command=undeploy\ {earfile}'.execute()
或
'{Wildfly_home}/bin/jboss-cli.sh -c "--command=undeploy {earfile}"'.execute()
请注意,我们的想法是让解释器将所有--command ...解析为一个参数,也许这样我们可以按照预期的方式获取参数。
被修改
也许你的问题是执行整个命令行的方法。试图做这样的事情?
def arguments = [ '/bin/sh', '-c', '/wherever/it/is/jboss-cli.sh', '-c', '--command=undeploy /some/dir/your.ear' ]
ProcessBuilder builder = new ProcessBuilder(executionChain);
builder.environment().putAll(envVars);// optional
builder.directory(baseDir); // optional
Process p = builder.start();
int ret = p.waitFor();
也许这样解释器会通过分离命令参数来停止伤害你。
答案 1 :(得分:0)
我可以解决这个问题。编辑后的命令如下
“{Wildfly_home} /bin/jboss-cli.sh -c --command ='undeploy {earfile}'”。execute()
我用双引号交换单引号,反之亦然。它对我有用。 感谢您的帮助。