Запустите приложение на базе Spring-Shell, не являющееся интерактивным

Можно ли запустить определенную команду приложения Spring-Shell, а затем вернуться / выйти из оболочки после ее завершения? Кроме того, возможно ли открыть код выхода (System.exit) приложения для оболочки операционной системы?

Для моих целей я воспользуюсь механизмом плагинов и CLI-аннотациями Spring-Shell. Но в целом взаимодействие с приложением не осуществляется человеком, вместо этого планировщик заданий (UC4) запустит приложение и проверит код выхода для генерации электронного письма в случае, если код выхода не равен 0. С другой стороны, для ручных тестов нашим заказчиком также требуется заполнение вкладок, помощь в использовании и т. д.

1 ответ

Решение

Такое поведение уже встроено (хотя мы рассмотрели его удаление или, по крайней мере, сделать его необязательным). Теперь я вижу, что это полезно:)

Просто вызовите оболочку с вашей (единственной) командой, и оболочка раскрутится, выполнит команду и выйдет. Кроме того, код возврата оболочки уже указывает, была ли ошибка или нет (например, попытался с помощью несуществующей команды). Конечно, если ваши пользовательские команды неправильно указывают на ошибку (например, выдают сообщение об ошибке, но выполняют нормальный возврат), это не будет работать. Вы должны бросить исключение вместо этого.

Поведение вернулось.

Запустите spring-shell с помощью @my-script, например:

java -jar my-app.jar @my-script

Где my-script - это файл с вашими командами:

my-command1 arg1 arg2
my-command2 arg1 arg2
Другие вопросы по тегам