无法使用Groovy脚本取消部署WildFly 10

时间:2017-10-04 11:51:46

标签: shell groovy wildfly

我尝试使用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]

我尝试删除双引号但没有用。
任何人都可以帮我这个吗?

2 个答案:

答案 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()

我用双引号交换单引号,反之亦然。它对我有用。 感谢您的帮助。