编辑此页面

使用 Quarkus 命令行界面 (CLI) 构建 Quarkus 应用程序

quarkus 命令允许您使用底层的项目构建工具来创建项目、管理扩展以及执行基本的构建和开发任务。

安装 CLI

Quarkus CLI 可用于多种面向开发者的包管理器,例如:

如果您已经在使用(或希望使用)这些工具之一,这是安装 Quarkus CLI 和保持其更新的最简单方法。

除了这些包管理器,Quarkus CLI 还可以通过 JBang 进行安装。选择对您来说最方便的替代方案。

  • JBang - 适用于 Linux、macOS 和 Windows

  • SDKMAN! - 适用于 Linux 和 macOS

  • Homebrew - 适用于 Linux 和 macOS

  • Chocolatey - 适用于 Windows

  • Scoop - 适用于 Windows

JBang

Quarkus CLI 可作为一个 jar 包,使用 JBang 进行安装。

JBang 将使用您现有的 Java,或者在需要时为您安装一个。

在 Linux、macOS 和 Windows (使用 WSL 或 bash 兼容 shell,如 Cygwin 或 MinGW)

curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/
curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio

在 Windows 上使用 Powershell

iex "& { $(iwr https://ps.jbang.dev) } trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/"
iex "& { $(iwr https://ps.jbang.dev) } app install --fresh --force quarkus@quarkusio"

如果 JBang 已安装,您可以直接使用它。

# This can also be used to update to the latest version
jbang app install --fresh --force quarkus@quarkusio

如果您想使用特定版本,可以直接指定版本。

# Create an alias in order to use a specific version
jbang app install --name qs3.8.6 https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/3.8.6/quarkus-cli-3.8.6-runner.jar

如果您已在本地构建 Quarkus,可以使用该版本。

# Use the latest (or locally built) snapshot (with qss as an alias)
jbang app install --force --name qss ~/.m2/repository/io/quarkus/quarkus-cli/999-SNAPSHOT/quarkus-cli-999-SNAPSHOT-runner.jar

安装后,quarkus 将会被添加到您的 $PATH 中。如果您运行 quarkus --version,它将显示已安装的版本。

quarkus --version
3.24.4
使用较新的 JBang 版本

如果您收到关于 app 不可读的错误,则您可能安装了早于 v0.56.0 的 JBang 版本。请删除或升级到较新版本。

如果您是第一次安装 JBang,请启动新会话以更新您的 PATH

SDKMAN!

SDKMAN! 可用于管理开发环境。它可以在大多数类 Unix 系统上管理多个软件开发工具包的并行版本,使其成为方便管理多个 JDK 版本的绝佳选择。

使用 SDKMAN!,您还可以安装流行的 Java 工具,包括 Quarkus CLI。

在安装 Quarkus CLI 之前,请确保您已 安装了 JDK

要列出可用的 Java 版本,请使用 sdk list java。然后您可以使用 sdk install java x.y.z-open (或您偏好的其他供应商的 JDK) 来安装您想要的 OpenJDK 版本。

要使用 SDKMAN! 安装 Quarkus CLI,请运行以下命令:

sdk install quarkus

这将安装最新版本的 Quarkus CLI。

安装后,quarkus 将会被添加到您的 $PATH 中。如果您运行 quarkus --version,它将显示已安装的版本。

quarkus --version
3.24.4

SDKMAN! 会在有新版本可用时通知您,因此更新会很方便。

sdk upgrade quarkus
Homebrew

Homebrew 是 macOS (和 Linux) 的包管理器。

您可以使用 Homebrew 来安装 (和更新) Quarkus CLI。

在安装 Quarkus CLI 之前,请确保您已安装 JDK。我们没有添加显式依赖,因为我们希望确保您可以使用您偏好的 JDK 版本。

您可以使用 brew install openjdk 安装最新 Java 版本,使用 brew install openjdk@17 安装 Java 17,或使用 brew install openjdk@21 安装 Java 21。

要使用 Homebrew 安装 Quarkus CLI,请运行以下命令:

brew install quarkusio/tap/quarkus

这将安装最新版本的 Quarkus CLI。此命令也可用于更新 Quarkus CLI。

安装后,quarkus 将会被添加到您的 $PATH 中。如果您运行 quarkus --version,它将显示已安装的版本。

quarkus --version
3.24.4

您可以使用以下命令升级 Quarkus CLI:

brew update (1)
brew upgrade quarkus (2)
1 更新所有包定义和 Homebrew 本身
2 将 Quarkus CLI 升级到最新版本
Chocolatey

Chocolatey 是 Windows 的包管理器。

您可以使用 Chocolatey 来安装 (和更新) Quarkus CLI。

在安装 Quarkus CLI 之前,请确保您已安装 JDK。

您可以使用 choco install temurin17 安装 Java 17 的 JDK,或使用 choco install temurin21 安装 Java 21 的 JDK。

要使用 Chocolatey 安装 Quarkus CLI,请运行以下命令:

choco install quarkus

这将安装最新版本的 Quarkus CLI。

安装后,quarkus 将会被添加到您的 $PATH 中。如果您运行 quarkus --version,它将显示已安装的版本。

quarkus --version
3.24.4

您可以使用以下命令升级 Quarkus CLI:

choco upgrade quarkus
Scoop

Scoop 是 Windows 的包管理器。您可以使用 Scoop 来安装 (和更新) Quarkus CLI。

在安装 Quarkus CLI 之前,请确保您已安装 JDK。您可以使用 scoop install openjdk17 安装 Java 17 的 JDK,或使用 scoop install openjdk21 安装 Java 21 的 JDK。

要使用 Scoop 安装 Quarkus CLI,请运行以下命令:

scoop install quarkus-cli

这将安装最新版本的 Quarkus CLI。安装后,quarkus 将会被添加到您的 $PATH 中。如果您运行 quarkus --version,它将显示已安装的版本。

quarkus --version
3.24.4

您可以使用以下命令升级 Quarkus CLI:

scoop update quarkus-cli

使用 CLI

使用 --help 显示帮助信息,其中包含所有可用的命令。

quarkus --help
Usage: quarkus [-ehv] [--refresh] [--verbose] [--config=CONFIG]
               [-D=<String=String>]... [COMMAND]
Options:
      --refresh         Refresh the local Quarkus extension registry cache
      --config=CONFIG   Configuration file
  -h, --help            Display this help message.
  -v, --version         Print CLI version information and exit.
  -e, --errors          Display error messages.
      --verbose         Verbose mode.
  -D=<String=String>    Java properties

Commands:
  create                  Create a new project.
    app                   Create a Quarkus application project.
    cli                   Create a Quarkus command-line project.
    extension             Create a Quarkus extension project
  build                   Build the current project.
  dev                     Run the current project in dev (live coding) mode.
  test                    Run the current project in continuous testing mode.
  extension, ext          Configure extensions of an existing project.
    list, ls              List platforms and extensions.
    categories, cat       List extension categories.
    add                   Add extension(s) to this project.
    remove, rm            Remove extension(s) from this project.
  image                   Build or push project container image.
    build                 Build a container image.
      docker              Build a container image using Docker.
      buildpack           Build a container image using Buildpack.
      jib                 Build a container image using Jib.
      openshift           Build a container image using OpenShift.
    push                  Push a container image.
  deploy                  Deploy application.
    kubernetes            Perform the deploy action on Kubernetes.
    openshift             Perform the deploy action on OpenShift.
    knative               Perform the deploy action on Knative.
    kind                  Perform the deploy action on Kind.
    minikube              Perform the deploy action on minikube.
  registry                Configure Quarkus registry client
    list                  List enabled Quarkus registries
    add                   Add a Quarkus extension registry
    remove                Remove a Quarkus extension registry
  info                    Display project information and verify versions
                            health (platform and extensions).
  update, up, upgrade     Suggest recommended project updates with the
                            possibility to apply them.
  version                 Display CLI version information.
  plugin, plug            Configure plugins of the Quarkus CLI.
    list, ls              List CLI plugins.
    add                   Add plugin(s) to the Quarkus CLI.
    remove                Remove plugin(s) to the Quarkus CLI.
    sync                  Sync (discover / purge) CLI Plugins.
  completion              bash/zsh completion:  source <(quarkus completion)

虽然本文档是一个有用的参考,但客户端帮助才是最终来源。

如果您没有看到预期的输出,请使用 --help 来验证您是否使用了正确的参数调用命令。

创建新项目

要创建一个新项目,请使用 create 命令 (当未指定时,app 子命令是隐含的)。

quarkus create
-----------

applying codestarts...
📚  java
🔨  maven
📦  quarkus
📝  config-properties
🔧  dockerfiles
🔧  maven-wrapper
🚀  resteasy-codestart

-----------
[SUCCESS] ✅ quarkus project has been successfully generated in:
--> /<output-dir>/code-with-quarkus

这将在您的当前工作目录中创建一个名为 code-with-quarkus 的文件夹,使用默认的 groupIdartifactIdversion 值 (groupId='org.acme'artifactId='code-with-quarkus'version='1.0.0-SNAPSHOT')。

上面显示的 emoji 可能不完全匹配。emoji 的外观可能因使用的字体或终端/环境而异。例如,IntelliJ IDEA 有一些关于 emoji 在终端中的行为/渲染的长期存在的公开问题。

您可以通过命令行直接使用 group:artifactId:version 坐标语法来指定 groupIdartifactIdversion。您可以选择性地省略段落以使用默认值。

# Create a project with groupId=org.acme, artifactId=bar, and version=1.0.0-SNAPSHOT
quarkus create app bar

# Create a project with groupId=com.foo, artifactId=bar, and version=1.0.0-SNAPSHOT
quarkus create app com.foo:bar

# Create a project with groupId=com.foo, artifactId=bar, and version=1.0
quarkus create app com.foo:bar:1.0

输出将显示您的项目正在创建。

-----------

applying codestarts...
📚  java
🔨  maven
📦  quarkus
📝  config-properties
🔧  dockerfiles
🔧  maven-wrapper
🚀  resteasy-codestart

-----------
[SUCCESS] ✅ quarkus project has been successfully generated in:
--> /<output-dir>/bar
-----------

使用 --help 选项显示创建项目的选项。

quarkus create app --help
quarkus create cli --help

指定 Quarkus 版本

quarkus createquarkus extension list 都允许您通过两种方式之一显式指定 Quarkus 版本。

  1. 指定特定的平台发布 BOM

    一个 Quarkus 平台发布 BOMgroupId:artifactId:version (GAV) 坐标标识。在指定平台发布 BOM 时,您可以使用空段来回退到默认值 (在 quarkus create app --help 中显示)。如果您只指定一个段 (没有 :),则假定它是一个版本。

    io.quarkus.platform 是默认的 groupId。指定 -P :quarkus-bom: 等同于 -P io.quarkus.platform:quarkus-bom:3.24.4。请注意,您需要指定 groupId 才能使用快照,例如 -P io.quarkus::999-SNAPSHOT 等同于 -P io.quarkus:quarkus-bom:999-SNAPSHOT

    默认值可能会发生变化。使用 --dry-run 选项查看计算后的值。

  2. 指定平台流

    平台流在远程注册表上运行。每个注册表定义一个或多个平台流,每个流定义一个或多个平台发布 BOM 文件,这些文件定义使用该流的项目应该如何配置。

    流使用 platformKey:streamId 语法进行标识。可以使用 -S platformKey:streamId 指定特定流。在指定流时,空段将被替换为基于流资源解析规则的发现的默认值。

使用扩展

quarkus ext --help

列出扩展

Quarkus CLI 可用于列出 Quarkus 扩展。

quarkus ext ls

结果的格式可以通过以下四种选项之一控制:

  • --name 仅显示名称 (artifactId)

  • --concise 显示名称 (artifactId) 和描述

  • --full 显示简洁格式以及版本/状态相关的列。

  • --origins 显示简洁信息以及扩展的 Quarkus 平台发布来源。

quarkus ext ls 的行为会根据上下文而变化。

列出特定 Quarkus 版本的扩展

如果您在项目之外调用 Quarkus CLI,Quarkus 将列出 CLI 本身使用的 Quarkus 版本的所有可用扩展。

您还可以使用 -P-S 列出特定 Quarkus 版本的扩展,如 指定 Quarkus 版本中所述。

此模式默认使用 --origins 格式。

列出 Quarkus 项目的扩展

在处理 Quarkus 项目时,CLI 将列出当前项目已安装的扩展,默认使用 --name 格式。

使用 --installable-i 选项列出可以从项目使用的 Quarkus 平台安装的扩展。

您可以使用搜索 (--search-s) 来缩小或过滤列表。

quarkus ext list --concise -i -s jdbc
JDBC Driver - DB2                                  quarkus-jdbc-db2
JDBC Driver - PostgreSQL                           quarkus-jdbc-postgresql
JDBC Driver - H2                                   quarkus-jdbc-h2
JDBC Driver - MariaDB                              quarkus-jdbc-mariadb
JDBC Driver - Microsoft SQL Server                 quarkus-jdbc-mssql
JDBC Driver - MySQL                                quarkus-jdbc-mysql
JDBC Driver - Oracle                               quarkus-jdbc-oracle
JDBC Driver - Derby                                quarkus-jdbc-derby
Elytron Security JDBC                              quarkus-elytron-security-jdbc
Agroal - Database connection pool                  quarkus-agroal

添加扩展

Quarkus CLI 可以使用 add 子命令将一个或多个扩展添加到您的项目中。

quarkus ext add kubernetes health
[SUCCESS] ✅ Extension io.quarkus:quarkus-kubernetes has been installed
[SUCCESS] ✅ Extension io.quarkus:quarkus-smallrye-health has been installed

您可以安装与 glob 模式匹配的所有扩展。

quarkus ext add smallrye-*

移除扩展

Quarkus CLI 可以使用 remove/rm 子命令从您的项目中移除一个或多个扩展。

quarkus ext rm kubernetes
[SUCCESS] ✅ Extension io.quarkus:quarkus-kubernetes has been uninstalled

构建您的项目

要使用 Quarkus CLI 构建您的项目 (在本例中,使用默认配置),请使用 build 命令。

quarkus build
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< org.acme:code-with-quarkus >---------------------
[INFO] Building code-with-quarkus 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.331 s
[INFO] Finished at: 2021-05-27T10:13:28-04:00
[INFO] ------------------------------------------------------------------------
输出将根据您的项目使用的构建工具 (Maven、Gradle 或 JBang) 而有所不同。
运行 quarkus build --clean 在构建过程中执行清理。

开发模式

要从 Quarkus CLI 启动开发模式,请使用 dev 命令。

quarkus dev
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< org.acme:code-with-quarkus >---------------------
[INFO] Building code-with-quarkus 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
...
Listening for transport dt_socket at address: 5005
__  ____  __  _____   ___  __ ____  ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-05-27 10:15:56,032 INFO  [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 1.387s. Listening on: https://:8080
2021-05-27 10:15:56,035 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-05-27 10:15:56,035 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, rest, smallrye-context-propagation]

--
Tests paused, press [r] to resume
输出将根据您的项目使用的构建工具 (Maven、Gradle 或 JBang) 而有所不同。
运行 quarkus dev --clean 在构建过程中执行清理。

Shell 自动补全和别名

Bash 和 Zsh 支持自动命令补全。

# Setup autocompletion in the current shell
source <(quarkus completion)

如果您选择为 quarkus 命令使用别名,请使用以下命令调整命令补全。

# Add an alias for the quarkus command
alias q=quarkus
# Add q to list of commands included in quarkus autocompletion
complete -F _complete_quarkus q

容器镜像

Quarkus CLI 允许在不修改项目配置 (添加/删除容器镜像扩展) 的情况下构建容器镜像。要构建您项目的镜像,请执行:

quarkus image build

image build 命令可以直接使用,也可以选择一个子命令。可用的子命令有:

  • docker

  • buildpacks

  • jib

  • openshift

每个子命令都对应 Quarkus 支持的镜像构建工具,并提供特定的配置选项。

例如,要使用带有自定义构建器镜像的 云原生构建包,请使用以下命令:

quarkus image build buildpack --builder-image <your builder image>

推送

image push 命令类似于 image build,并提供了一些将镜像推送到目标容器注册表所需的基本选项。

quarkus image push --registry=<image registry> --registry-username=<registry username> --registry-password-stdin

扩展 CLI

Quarkus CLI 嵌入了一个插件系统,可用于动态地为 CLI 添加命令和子命令。

什么是插件

插件可以是任何可在本地找到或远程获取的可执行文件、jar 包或 Java 命令。

插件的分类如下:

  • 通过 shell 执行的插件

  • 可执行文件 (任何以 quarkus- 开头并在本地找到的可执行文件)

  • 通过 jbang 执行的插件

  • jar 包 (任何可在本地找到的可运行 jar 包)

  • jbang 别名 (任何以 quarkus- 开头并在本地安装或通过 quarkusio 目录安装的 jbang 别名)

  • maven (任何 GACTV 格式的 maven 坐标,指向一个可运行的 jar 包)

如何获取插件

可以通过以下几种方式找到插件。

扩展

Quarkus 扩展可以在其元数据中定义一个 cli-plugins 列表。该列表可以包含指向可执行 jar 包的 GACTV 字符串。

目前,CLI 能够获取可用扩展的列表,但对于扩展的确切版本并不十分准确 (它使用在扩展目录中找到的版本)。

本地路径扫描

扫描路径元素中以 quarkus- 开头的可执行文件。

使用 JBang 别名

扫描本地或项目 jbang 目录中以 quarkus- 开头的别名。

使用 JBang quarkusio 目录

扫描 quarkusio 目录中以 quarkus- 开头的别名。

使用 JBang 二进制文件。如果缺失,它将在 .jbang 下自动安装。

显式使用插件命令

请参阅下面的 quarkus plugin add

管理插件

插件使用以下命令进行管理。

列出插件

以下命令列出已安装的插件:

quarkus plugin list
No plugins installed!
To include the installable plugins in the list, append --installable to the command.

列出可用/可安装的插件:

quarkus plugin list --installable
    Name    	 Type       	 Scope 	 Location                          	 Description
    kill    	 jbang      	 user  	 quarkus-kill@quarkusio
 *  fmt     	 jbang      	 user  	 quarkus-fmt@quarkusio
    greeter 	 executable 	 user  	 /home/iocanel/bin/quarkus-greeter

   Use the 'plugin add' subcommand and pass the location of any plugin listed above, or any remote location in the form of URL / GACTV pointing to a remote plugin.

list 命令的输出可以通过 -t 按类型过滤,或使用 -s 标志和搜索模式按名称过滤。

例如,要列出所有以字母 k 开头的可安装插件,请使用以下命令:

quarkus plugin list --installable -s "k*"
    Name    	 Type       	 Scope 	 Location                          	 Description
    kill    	 jbang      	 user  	 quarkus-kill@quarkusio

Use the 'plugin add' subcommand and pass the location of any plugin listed above, or any remote location in the form of URL / GACTV pointing to a remote plugin.

添加插件

要添加任何可安装的插件,请使用 quarkus plugin add <name or location>

quarkus plugin add kill
Added plugin:
    Name    	 Type       	 Scope 	 Location                          	 Description
 *  kill    	 jbang      	 user  	 quarkus-kill@quarkusio

上述命令通过 name 添加了一个插件,其中 name 是通过 quarkus plugin list --installable 列出的名称。

现在可以通过 quarkus kill 命令执行已安装的命令。

用户不限于通过 quarkus plug list --installable 发现的插件。只要用户能提供指向可执行 jar 包或 Java 文件的 URL 或 Maven 坐标,他们就可以安装插件。

您可以作为插件通过 Maven 坐标安装可执行 jar 包。

例如,我们使用 io.quarkiverse.authzed:quarkus-authzed-cli:runner:jar:0.2.0,这是一个真实的、可执行的 jar 包,它为 quarkus-authzed 扩展提供了一个 CLI 工具。

quarkus plugin add io.quarkiverse.authzed:quarkus-authzed-cli:runner:jar:0.2.0 -d "Authzed CLI"
Added plugin:
    Name    	 Type  	 Location                                                    	 Description
 *  authzed 	 maven 	 io.quarkiverse.authzed:quarkus-authzed-cli:runner:jar:0.2.0 	 Authzed CLI
还可以设置一个在帮助输出中显示的描述。
quarkus --help

Usage: quarkus [-ehv] [--refresh] [--verbose] [--config=CONFIG]
               [-D=<String=String>]... [COMMAND]
...
Commands:
...
  plugin, plug            Configure plugins of the Quarkus CLI.
    list, ls              List CLI plugins.
    add                   Add plugin(s) to the Quarkus CLI.
    remove                Remove plugin(s) to the Quarkus CLI.
    sync                  Sync (discover / purge) CLI Plugins.
  completion              bash/zsh completion:  source <(quarkus completion)
  authzed                 Authzed CLI
...

插件添加到哪里?

插件被添加到插件目录中,该目录位于:<user home>/.quarkus/cli/plugins/quarkus-cli-catalog.json

还有一个第二个插件目录,它相对于当前项目 (如果可用):<project root>/.quarkus/cli/plugins/quarkus-cli-catalog.json

有效的目录是 userproject 目录的组合,其中后者可以覆盖前者的条目 (例如,为插件使用不同的版本或位置)。

如果项目目录可用,它将始终被优先考虑,除非显式使用 --user 标志。

插件表的 scope 列指示插件在哪里被添加/将被添加。

移除插件

插件使用 quarkus plugin remove <plugin name> 进行移除。

quarkus plugin remove kill
Removed plugin:
    Name 	 Type  	 Scope 	 Location               	 Description
    kill 	 jbang 	 user  	 quarkus-kill@quarkusio

同步插件

要移除过时的插件或发现扩展提供的新插件,可以使用 quarkus plugin sync 命令。使用此命令,添加到目录但不再可用的二进制文件和 JBang 别名将被清除。

由用户通过 URL/Maven 坐标显式添加的远程插件将排除在移除之外。

该命令也会通过任何 CLI 命令隐式执行。

  • 每周

  • 如果项目文件自上次目录更新以来已更新 (仅限于模块)。

相关内容