Несмотря на большой фреймворк для ВЕБ-разработки, разработки небольших программ с Quarkus было сложной задачей, и, полный gambiarras альтернативные решения. В конце концов, Quarkus был всего лишь фреймворк для ВЕБ-разработки.
Если разработчик хотел сделать программу, которая comessasse выполняется сразу после вызова и finalizasse после этого необходимо использовать некоторые gambiarras альтернативные решения .
Кроме того, не существует простой способ передать параметры для приложения, и даже как сделать pipe на смертную казнь.
Это изменилось с версия 1.4 Quarkus. Ека версао вызывает вариаса мельхориаса, вход в режим командования ( командный режим ). В этой статье мы рассмотрим, что это за command mode и один маленький шаг-в-шаг, как его использовать.
Режим команды Quarkus позволяет позволяет поднять приложения Quarkus без endpoints для REST и получать параметры из командной строки. Это позволяет программировать сценарии или приложения командной commando принимая все силы framework Quarkus .
Как и все приложения Quarkus, чтобы использовать, достаточно просто добавить хорошего в файле pom.xml.
io.quarkus quarkus-universe-bom 1.5.2.Final pom import
Тамбем нет pom.xml баста адиционар, а зависимость есть кваркус-арк .
io.quarkus quarkus-arc
Уже в части кода, просто добавьте заметки @QuarkusMain класс entrypoint применение и сделать ее реализации интерфейса QuarkusApplication и Voila . Все функции Quarkus доступны для нас использовать.
На этом, это только скомпилировать с помощью команды
mvn clean install
и применение будет в пределах каталог ./target . Готов быть вызван с помощью “java -jar”.
В этом небольшом примере, есть два класса: ExamploModoComando и ServicoInjetado.
Классный экзамен по диплому командования носса класса де точка входа . Программа начнет работать с его метод run. Есть и другие способы вызвать этот метод, и могут быть найдены в официальные документы .
Уже класса ServicoInjetado является управляемым bean. Поэтому нужно аннотации @Dependent и @PostConstruct вызывается (если вы-новичок, не нужно слишком много думать о том, почему это так).
import javax.inject.Inject;
import io.quarkus.runtime.QuarkusApplication;
import io.quarkus.runtime.annotations.QuarkusMain;
@QuarkusMain
public class ExamploModoComando implements QuarkusApplication {
@Inject
ServicoInjetado servico;
@Override
public int run(String... args) throws Exception {
if (args.length > 0) {
servico.chamar(args[0]);
} else {
servico.chamar("");
}
return 0;
}
}
import javax.annotation.PostConstruct;
import javax.enterprise.context.Dependent;
@Dependent
public class ServicoInjetado {
@PostConstruct
void postConstruct() {
System.out.println("Sou um serviço injetado que funciona perfeitamente com CDI!");
}
void chamar(String variavel) {
System.out.println("Fui chamado com a variável: " + variavel);
}
}
Работает этот класс, используя “java -jar”, у нас есть следующий результат:
java -jar ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner.jar Parâmetro __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 2020-07-06 19:00:30,838 INFO [io.quarkus] (main) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 1.5.2.Final) started in 0.191s. 2020-07-06 19:00:30,852 INFO [io.quarkus] (main) Profile prod activated. 2020-07-06 19:00:30,852 INFO [io.quarkus] (main) Installed features: [cdi] Sou um serviço injetado que funciona perfeitamente com CDI! Fui chamado com a variável: Parâmetro 2020-07-06 19:00:30,855 INFO [io.quarkus] (main) code-with-quarkus stopped in 0.003s
Командный режим уже включен по умолчанию
Класс сделанная по генератор quarkus имеет, как зависимость quarkus-resteasy то, что уже приносит quarkus-арк как транзитивные зависимости.
Как сделать выход чистой
Хорошее приложение командной строки, ничего не говорит, если нет ничего удивительного сказать . Для того, чтобы удалить журналов размещены только изменить файл application.proprties и добавить следующий текст.
quarkus.log.level=SEVERE quarkus.hibernate-orm.log.sql=false quarkus.banner.enabled=false
Это изменит выход из программы что-то типа:
java -jar ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner.jar Parâmetro Sou um serviço injetado que funciona perfeitamente com CDI! Fui chamado com a variável: Parâmetro
Как передать параметры в режиме разработки
Нормальное состояние, решение проблемы, выполнение команды mvn quarkus:разработчик . Для передачи параметров, просто используйте параметр -Dquarkus.args=параметр .
Это позволяет debugar , приносит hot reload изменяет профиль dev между прочим. Код-код, в котором выполняется команда и результат будет более или менее следующее:
mvn quarkus:dev -Dquarkus.args=Parâmetro executing mvnw instead of mvn [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.acme:code-with-quarkus >--------------------- [INFO] Building code-with-quarkus 1.0.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- quarkus-maven-plugin:1.5.2.Final:dev (default-cli) @ code-with-quarkus --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to /home/aleatorio/VisualCodeProjects/postagem_quarkus/quarkus-command-mode/target/classes Listening for transport dt_socket at address: 5005 Sou um serviço injetado que funciona perfeitamente com CDI! Fui chamado com a variável: Parâmetro Quarkus application exited with code 0 Press Enter to restart or Ctrl + C to quit
Я уже использовал некоторые gambiarras альтернативные решения, потому что я хотел использовать все преимущества Quarkus в маленькие программы и утилиты для день-в-день. Режим команда пришла, как перчатка для меня. Еще больше, когда я могу скомпилировать приложение в основном режиме, чтобы иметь программу, маленький и быстрый .
Признаюсь, я не использую скрипты extramemnte просто, так как предпочитаю использовать прямой bash. Но в небольших программ и утилит, более сложные я использовал довольно Quarkus в командной строке, и был отличный опыт.
Ах , о кодиго де ходже, поди, не вступай в противоречие с ними, но мерзавец .
Оригинал: “https://dev.to/lucasscharf/usando-o-quarkus-como-como-uma-aplicacao-de-linha-de-comando-973”