是否可以启动 Spring-Shell 应用程序的特定命令,然后在命令完成后返回/退出 shell?此外,是否可以将应用程序的退出代码(System.exit)暴露给操作系统外壳?
出于我的目的,我将利用 Spring-Shell 的插件机制和 CLI-Annotations。但一般来说,应用程序没有人工交互,而是一个作业调度程序 (UC4) 将启动应用程序并检查退出代码以在退出代码不等于 0 的情况下生成电子邮件。另一方面,用于手动测试我们的客户还需要制表符补全、使用帮助等。
是否可以启动 Spring-Shell 应用程序的特定命令,然后在命令完成后返回/退出 shell?此外,是否可以将应用程序的退出代码(System.exit)暴露给操作系统外壳?
出于我的目的,我将利用 Spring-Shell 的插件机制和 CLI-Annotations。但一般来说,应用程序没有人工交互,而是一个作业调度程序 (UC4) 将启动应用程序并检查退出代码以在退出代码不等于 0 的情况下生成电子邮件。另一方面,用于手动测试我们的客户还需要制表符补全、使用帮助等。
此行为已经内置(尽管我们考虑将其删除,或者至少使其成为可选)。我现在看到它很有用:)
只需使用您的(唯一)命令调用 shell,shell 就会启动、执行命令并退出。此外,shell 的返回码已经表明是否存在错误(例如,尝试使用不存在的命令)。当然,如果您的自定义命令没有正确指示错误(即打印错误消息但执行正常返回),这将不起作用。您应该改为抛出异常。
行为又回来了。
使用@my-script 运行 spring-shell,如下所示:
java -jar my-app.jar @my-script
其中 my-script 是包含您的命令的文件:
my-command1 arg1 arg2
my-command2 arg1 arg2