Quarkus 入门


Red Hat build of Quarkus 1.11

摘要

本指南论述了如何使用 Apache Maven 创建简单的 Quarkus 应用程序。

前言

作为应用程序开发人员,您可以使用红帽构建的 Quarkus 来创建以 Java 编写在 OpenShift 和无服务器环境中运行的基于微服务的应用程序。编译到原生可执行文件的应用程序会占用较少的内存占用空间和快速启动时间。

本指南介绍了如何使用 Apache Maven 创建、测试、软件包和运行公开 hello HTTP 端点的简单 Quarkus 项目。为了演示依赖项注入,此端点使用 问候 的 bean。

78 OpenShift Quarkus Arch 0420

先决条件

  • 已安装 OpenJDK (JDK) 11,并且 JAVA_HOME 环境变量指定 Java SDK 的位置。

    • 登录到红帽客户门户网站,从 Software Downloads 页面下载 Red Hat Open JDK 版本。
  • 已安装 Apache Maven 3.6.2 或更高版本。Maven 可从 Apache Maven 项目网站 获得。
注意

如需开始使用工作的完整示例,请下载 Quarkus quickstart 存档或克隆 Quarkus Quickstarts Git 存储库。Getting Started 示例位于 get -started 目录中。

对红帽文档提供反馈

我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。

注意

您必须有一个红帽帐户并登录到客户门户网站。

要从客户门户网站提交文档反馈,请执行以下操作:

  1. 选择 Multi-page HTML 格式。
  2. 点文档右上角的 反馈 按钮。
  3. 突出显示您要提供反馈的文本部分。
  4. 点高亮文本旁的添加反馈对话框。
  5. 在页面右侧的文本框中输入您的反馈,然后单击 Submit

每次提交反馈时,我们都会自动创建跟踪问题。打开在点 Submit 后显示的链接,并开始监视问题或添加更多注释。

感谢您的宝贵反馈。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 Red Hat build of Quarkus

Red Hat build of Quarkus 是一个 Kubernetes 原生 Java 堆栈,用于容器和 Red Hat OpenShift Container Platform。Quarkus 旨在处理流行的 Java 标准、框架和库,如 Eclipse MicroProfile、Apache Kafka、RESTEee (DSL-RS)、Hibernate ORM (DSL)、Spring、Infinila 和 Apache Camel。

Quarkus 依赖项注入解决方案基于 CDI (上下文和依赖项注入),它包含一个扩展框架来扩展功能并配置、启动并将框架集成到应用程序中。

Quarkus 提供了构建 Java 应用程序的容器优先方法。这种方法可以更轻松地构建使用 Java 编写的基于微服务的应用程序,并使这些应用程序能够调用在无服务器计算框架上运行的功能。因此,Quarkus 应用程序有较小的内存占用空间和快速启动时间。

第 2 章 Apache Maven 和 Quarkus

Apache Maven 是 Java 应用程序开发中使用的分布式构建自动化工具,用于创建、管理和构建软件项目。Maven 使用名为 Project Object Model(POM)文件的标准配置文件来定义项目并管理构建流程。POM 文件描述了使用 XML 文件生成项目打包和输出的模块和组件依赖项、构建顺序和目标。这可确保以正确、一致的方式构建项目。

Maven 存储库

Maven 存储库存储 Java 库、插件和其他构建构件。默认公共存储库是 Maven 2 Central Repository,但存储库可以是私有的和内部存储库,以在开发团队之间共享通用工件。也可从第三方获取存储库。

您可以将在线 Maven 存储库与 Quarkus 项目搭配使用,也可以下载 Red Hat build of Quarkus Maven 存储库。

Maven 插件

Maven 插件定义 POM 文件的一部分,该文件可以达到一个或多个目标。Quarkus 应用程序使用以下 Maven 插件:

  • Quarkus Maven 插件(quarkus-maven-plugin):启用 Maven 创建 Quarkus 项目,支持生成 uber-JAR 文件,并提供开发模式。
  • Maven Surefire 插件(maven-surefire-plugin):在构建生命周期阶段使用,以便在应用程序上执行单元测试。插件生成包含测试报告的文本和 XML 文件。

2.1. 为在线存储库配置 Maven settings.xml 文件

您可以通过配置用户 settings.xml 文件,将在线 Quarkus 存储库用于 Quarkus Maven 项目。这是推荐的方法。与共享服务器上的存储库管理器或存储库一起使用的 Maven 设置提供更好的控制和领导项目。

注意

当您通过修改 Maven settings.xml 文件来配置存储库时,更改会应用到所有 Maven 项目。

流程

  1. 在文本编辑器中打开 Maven ~/.m2/settings.xml 文件或集成开发环境(IDE)。

    注意

    如果 ~/.m2/ 目录中没有 settings.xml 文件,请将 $MAVEN_HOME/.m2/conf/ 目录中的 settings.xml 文件复制到 ~/.m2/ 目录中。

  2. settings.xml 文件的 <profiles > 元素中添加以下行:

    <!-- Configure the Quarkus Maven repository -->
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    Copy to Clipboard Toggle word wrap
  3. 将以下行添加到 settings.xml 文件的 < activeProfiles > 元素中,并保存文件。

    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
    Copy to Clipboard Toggle word wrap

2.2. 下载并配置 Quarkus Maven 存储库

如果您不想使用在线 Maven 存储库,您可以下载并配置 Quarkus Maven 存储库,以使用 Maven 创建 Quarkus 应用程序。Quarkus Maven 存储库包含 Java 开发人员通常用于构建应用程序的许多要求。此流程描述了如何编辑 settings.xml 文件来配置 Quarkus Maven 存储库。

注意

当您通过修改 Maven settings.xml 文件来配置存储库时,更改会应用到所有 Maven 项目。

流程

  1. 从红帽客户门户的 软件下载 页面下载 Quarkus Maven 存储库 ZIP 文件(需要登录)。
  2. 展开下载的存档。
  3. 将目录更改为 ~/.m2/ 目录,并在文本编辑器或集成开发环境(IDE)中打开 Maven settings.xml 文件。
  4. 将您下载的 Quarkus Maven 存储库的路径添加到 settings.xml 文件的 <profiles > 元素中。Quarkus Maven 存储库的路径格式为 file://$PATH,例如 file:///home/userX/rh-quarkus-1.11.7.GA-maven-repository/maven-repository /maven-repository。

    <!-- Configure the Quarkus Maven repository -->
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>file:///path/to/Quarkus/Maven/repository/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>file:///path/to/Quarkus/Maven/repository/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    Copy to Clipboard Toggle word wrap
  5. 将以下行添加到 settings.xml 文件的 < activeProfiles > 元素中,并保存文件。

    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
    Copy to Clipboard Toggle word wrap
重要

如果您的 Maven 存储库包含过时的工件,您可能会在构建或部署项目时遇到以下 Maven 错误消息之一,其中 < artifact_name&gt; 是缺少的工件的名称,&lt ;project_name > 是您要构建的项目的名称:

  • 缺少工件 <project_name>
  • [ERROR] Failed to execute targets on project <artifact_name>; Could not resolve dependencies for <project_name>

要解决这个问题,请删除 ~/.m2/repository 目录中的本地存储库的缓存版本,以强制下载最新的 Maven 工件。

第 3 章 创建 Getting Started 项目

通过 get -started 项目,您可以使用 Apache Maven 和 Quarkus Maven 插件使用简单的 Quarkus 应用程序启动并运行。

流程

  1. 在命令终端中,输入以下命令验证 Maven 是否使用 JDK 11,并且 Maven 版本是否为 3.6.2 或更高版本:

    mvn --version
    Copy to Clipboard Toggle word wrap
  2. 如果上述命令没有返回 JDK 11,请将 JDK 11 的路径添加到 PATH 环境变量中,然后再次输入上述命令。
  3. 要生成项目,请输入以下命令之一:

    注意

    不支持 Apple macOS 和 Microsoft Windows。

    • 如果您使用 Linux 或 Apple macOS,请输入以下命令:

      mvn io.quarkus:quarkus-maven-plugin:1.11.7.Final-redhat-00009:create \
          -DprojectGroupId=org.acme \
          -DprojectArtifactId=getting-started \
          -DplatformGroupId=com.redhat.quarkus \
          -DplatformVersion=1.11.7.Final-redhat-00009 \
          -DclassName="org.acme.quickstart.GreetingResource" \
          -Dpath="/hello"
      cd getting-started
      Copy to Clipboard Toggle word wrap
    • 如果使用 Microsoft Windows 命令行,请输入以下命令:

      mvn io.quarkus:quarkus-maven-plugin:1.11.7.Final-redhat-00009:create -DprojectGroupId=org.acme -DprojectArtifactId=getting-started -DplatformGroupId=com.redhat.quarkus -DplatformVersion=1.11.7.Final-redhat-00009 -DclassName="org.acme.quickstart.GreetingResource" -Dpath="/hello"
      Copy to Clipboard Toggle word wrap
    • 如果使用 Microsoft Windows Powershell,请输入以下命令:

      mvn io.quarkus:quarkus-maven-plugin:1.11.7.Final-redhat-00009:create "-DprojectGroupId=org.acme" "-DprojectArtifactId=getting-started" "-DplatformVersion=1.11.7.Final-redhat-00009" "-DplatformGroupId=com.redhat.quarkus" "-DclassName=org.acme.quickstart.GreetingResource" "-Dpath=/hello"
      Copy to Clipboard Toggle word wrap

      这些命令在 ./getting-started 目录中创建以下元素:

      • Maven 项目目录结构
      • /hello上公开的 org.acme.quickstart.GreetingResource 资源
      • 在原生模式和 JVM 模式中测试应用程序的相关单元测试
      • 启动应用程序后可在 http://localhost:8080 上访问登录页面
      • src/main/docker 目录中的 Dockerfile.jvmDockerfile.nativeDockerfile.fast-jar 文件示例
      • 应用程序配置文件
  4. 创建目录结构后,在文本编辑器中打开 pom.xml 文件并检查文件的内容:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.redhat.quarkus</groupId>
                <artifactId>quarkus-universe-bom</artifactId>
                <version>${quarkus.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
      <plugins>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus-plugin.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>build</goal>
                <goal>generate-code</goal>
                <goal>generate-code-tests</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
     </plugins>
    </build>
    Copy to Clipboard Toggle word wrap

    Quarkus BOM 包含在 pom.xml 文件的 &lt ;dependencyManagement > 部分。因此,您不需要在 pom.xml 文件中列出单个 Quarkus 依赖项的版本。此外,您可以看到 quarkus-maven-plugin 插件,该插件负责打包应用程序并提供开发模式。

  5. 查看 pom.xml 文件中的 quarkus-resteasy 依赖项。通过这个依赖项,您可以开发 REST 应用程序:

        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy</artifactId>
        </dependency>
    Copy to Clipboard Toggle word wrap
  6. 查看 src/main/java/org/acme/quickstart/GreetingResource.java 文件:

    package org.acme.quickstart;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "hello";
        }
    }
    Copy to Clipboard Toggle word wrap

    此文件包含一个简单的 REST 端点,它将 hello 作为您发送到 /hello 端点的请求的响应。

    注意

    使用 Quarkus 时,支持 JAX-RS 的应用程序类,但不是必需的。另外,只创建一个 GreetingResource 类的实例,且每个请求不创建一个实例。您可以使用不同的 sVirt Scoped 注解进行配置,如 ApplicationScopedRequestScoped 等等。

您可以使用 code.quarkus.redhat.com 项目生成器创建 Quarkus Maven 项目。详情请参阅使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目

第 4 章 编译并启动 Quarkus Getting Started 项目

创建 Quarkus Getting Started 项目后,您可以编译 Hello 应用程序,并验证 hello 端点是否返回 hello

本例使用 Quarkus 内置开发模式。在开发模式中,您可以在应用程序运行时更新应用程序源和配置。您的更改将显示在正在运行的应用程序中。

先决条件

  • 您已创建了 Quarkus Getting Started 项目。

流程

  1. 要在开发模式下编译 Quarkus Hello 应用程序,请从项目目录输入以下命令:

    ./mvnw compile quarkus:dev
    Copy to Clipboard Toggle word wrap

    以下示例显示了这个命令的输出:

    [INFO] --------------------< org.acme:getting-started >---------------------
    [INFO] Building getting-started 1.0.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ getting-started ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] skip non existing resourceDirectory /Users/starksm/Dev/JBoss/Quarkus/starksm64-quarkus-quickstarts/getting-started/src/main/resources
    [INFO]
    [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ getting-started ---
    [INFO] Changes detected - recompiling the module!
    [INFO] Compiling 2 source files to /Users/starksm/Dev/JBoss/Quarkus/starksm64-quarkus-quickstarts/getting-started/target/classes
    [INFO]
    [INFO] --- quarkus-maven-plugin:<version>:dev (default-cli) @ getting-started ---
    Listening for transport dt_socket at address: 5005
    2019-02-28 17:05:22,347 INFO  [io.qua.dep.QuarkusAugmentor] (main) Beginning quarkus augmentation
    2019-02-28 17:05:22,635 INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 288ms
    2019-02-28 17:05:22,770 INFO  [io.quarkus] (main) Quarkus started in 0.668s. Listening on: http://localhost:8080
    2019-02-28 17:05:22,771 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
    Copy to Clipboard Toggle word wrap
  2. 在新终端窗口中输入以下命令向应用程序提供的端点发送请求:

    curl -w "\n" http://localhost:8080/hello
    hello
    Copy to Clipboard Toggle word wrap
    注意

    本例使用 "\n" 属性在命令的输出前自动添加新行。这可防止您的终端打印 '%' 字符,或者将结果和下一个命令提示符放在同一行中。

  3. CTRL+C 停止应用程序。

第 5 章 使用 Quarkus 依赖项注入

依赖项注入可让以完全独立于任何客户端消耗的方式使用服务。它将客户端依赖项的创建与客户端的行为分开,这使得程序设计可以松松耦合。

红帽构建的 Quarkus 中的依赖项注入基于 Quarkus ArC,它是一个基于 CDI 的构建基于 CDI 的依赖关系注入解决方案,专为 Quarkus 架构量身定制。由于 ArC 是 quarkus-resteasy 的传输依赖项,所以 quarkus-resteasy 是项目的依赖项,因此已下载 ArC。

先决条件

  • 您已创建了 Quarkus Getting Started 项目。

流程

  1. 要修改应用程序并添加 companion bean,请创建 src/main/java/org/acme/quickstart/GreetingService.java 文件,其内容如下:

    package org.acme.quickstart;
    
    import javax.enterprise.context.ApplicationScoped;
    
    @ApplicationScoped
    public class GreetingService {
    
        public String greeting(String name) {
            return "hello " + name;
        }
    
    }
    Copy to Clipboard Toggle word wrap
  2. 编辑 src/main/java/org/acme/quickstart/GreetingResource.java,以注入 GreetingService 并使用它创建新端点:

    package org.acme.quickstart;
    
    import javax.inject.Inject;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    import org.jboss.resteasy.annotations.jaxrs.PathParam;
    
    @Path("/hello")
    public class GreetingResource {
    
        @Inject
        GreetingService service;
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        @Path("/greeting/{name}")
        public String greeting(@PathParam String name) {
            return service.greeting(name);
        }
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "hello";
        }
    }
    Copy to Clipboard Toggle word wrap
  3. 如果您停止了应用程序,请输入以下命令重启它:

    ./mvnw compile quarkus:dev
    Copy to Clipboard Toggle word wrap
  4. 要验证端点是否返回 hello quarkus,请在新终端窗口中输入以下命令:

    curl -w "\n" http://localhost:8080/hello/greeting/quarkus
    hello quarkus
    Copy to Clipboard Toggle word wrap

第 6 章 使用 JUnit 测试 Quarkus 应用程序

编译 Quarkus 入门项目后,请使用 JUnit 5 框架测试您的应用程序,以确保它按预期运行。Quarkus 项目中有两个测试依赖项生成 pom.xml 文件:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-junit5</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <scope>test</scope>
</dependency>
Copy to Clipboard Toggle word wrap

测试需要 quarkus-junit5 依赖项,因为它提供了控制 JUnit 5 测试框架的 @QuarkusTest 注解。不需要 其余 依赖项,但它提供了测试 HTTP 端点的便捷方式,它也被集成。它会自动设置正确的 URL,因此不需要配置。

注意

这些测试使用 RESTassured 框架,但如果您喜欢,您可以使用不同的库。

先决条件

  • 您已编译了 Quarkus Getting Started 项目。

流程

  1. 打开生成的 pom.xml 文件并查看内容:

    <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <configuration>
           <systemPropertyVariables>
             <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
             <maven.home>${maven.home}</maven.home>
           </systemPropertyVariable>
        </configuration>
    </plugin>
    Copy to Clipboard Toggle word wrap

    请注意,:

    • 设置了 java.util.logging.manager 系统属性,以确保应用程序使用正确的日志管理器进行测试。
    • maven.home 属性指向 settings.xml 文件的位置,您可以在其中存储您要应用到项目的自定义 Maven 配置。
  2. 编辑 src/test/java/org/acme/quickstart/GreetingResourceTest.java 文件以匹配以下内容:

    package org.acme.quickstart;
    
    import io.quarkus.test.junit.QuarkusTest;
    import org.junit.jupiter.api.Test;
    
    import java.util.UUID;
    
    import static io.restassured.RestAssured.given;
    import static org.hamcrest.CoreMatchers.is;
    
    @QuarkusTest
    public class GreetingResourceTest {
    
        @Test
        public void testHelloEndpoint() {
            given()
              .when().get("/hello")
              .then()
                 .statusCode(200)
                 .body(is("hello"));
        }
    
        @Test
        public void testGreetingEndpoint() {
            String uuid = UUID.randomUUID().toString();
            given()
              .pathParam("name", uuid)
              .when().get("/hello/greeting/{name}")
              .then()
                .statusCode(200)
                .body(is("hello " + uuid));
        }
    
    }
    Copy to Clipboard Toggle word wrap
    注意

    通过使用 QuarkusTest 运行程序,您指示 JUnit 在开始测试前启动应用程序。

  3. 要从 Maven 运行这些测试,请输入以下命令:

    ./mvnw test
    Copy to Clipboard Toggle word wrap
    注意

    您还可以从 IDE 运行测试。如果您这样做,请确保首先停止应用程序。

    默认情况下,测试在端口 8081 上运行,以便它们不会与正在运行的应用程序冲突。在 Quarkus 中,Chtrace Assured 依赖项配置为使用此端口。如果要使用其他客户端,请使用 @TestHTTPResource 注释将经过测试应用的 URL 直接注入到 Test 类的字段中。此字段可以是 字符串URLURI 类型。您还可以在此注解中提供测试路径。例如,要测试映射到 /myservlet 的 servlet,请在测试中添加以下几行:

    @TestHTTPResource("/myservlet")
    URL testUrl;
    Copy to Clipboard Toggle word wrap
  4. 如有必要,在 quarkus.http.test-port 配置属性中指定测试端口。
注意

Quarkus 还创建一个名为 test.url 的系统属性,该属性被设置为基本测试 URL,用于您无法使用注入的情况。

编译 Quarkus Getting Started 项目后,您可以将其打包到 JAR 文件中,并从命令行运行。

先决条件

  • 您已编译了 Quarkus Getting Started 项目。

流程

  1. 要打包您的 Quarkus Getting Started 项目,请 在根目录中 输入以下命令:

    ./mvnw package
    Copy to Clipboard Toggle word wrap

    此命令在 /target 目录中生成以下 JAR 文件:

    • get-started-1.0-0-SNAPSHOT.jar :包含项目的类和资源。这是 Maven 构建生成的常规工件。
    • get-started-1.0-0-SNAPSHOT-runner.jar: Is a executable JAR file.请注意,这个文件不是 uber-JAR 文件,因为依赖项被复制到 目标/lib 目录中。

      警告

      当应用程序以开发模式运行时,您必须按 CTRL+C 停止您的应用程序。当您尝试在启用开发模式时打包应用程序时,您会遇到端口冲突。

  2. 输入以下命令启动应用程序:

    java -jar target/getting-started-1.0-0-SNAPSHOT-runner.jar
    Copy to Clipboard Toggle word wrap
    注意

    来自 runner JAR 文件中的 MANIFEST.MF 文件的 Class-Path 条目明确列出了 lib 目录中的 JAR 文件。如果要从其他位置部署应用程序,您必须复制 运行程序 JAR 文件和 lib 目录。

作为应用程序开发人员,您可以使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目,并自动添加并配置要在应用程序中使用的扩展。另外,code.quarkus.redhat.com 会自动管理将项目编译成原生可执行文件所需的配置参数。

本节介绍了生成 Quarkus Maven 项目的过程,包括:

  • 指定应用程序的基本详情。
  • 选择您要包含在项目中的扩展。
  • 使用项目文件生成可下载的存档。
  • 使用自定义命令编译和启动应用程序。

先决条件

  • 具有 Web 浏览器。

流程

  1. 使用 Web 浏览器进入到 https://code.quarkus.redhat.com
  2. 指定项目的基本详情:

    1. 输入项目的组名称。名称的格式遵循 Java 软件包命名约定,如 org.acme
    2. 输入您要用于项目生成的 Maven 工件的名称,如 code-with-quarkus
    3. 选择您要用来编译和启动应用程序的构建工具。您选择的构建工具决定:

      • 生成的项目的目录结构。
      • 您生成的项目中使用的配置文件格式。
      • 在生成项目后,用来编译和启动应用程序的自定义构建脚本和命令会显示 code.quarkus.redhat.com。

        注意

        红帽提供了对使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目的支持。红帽不支持生成 Gradle 项目。

        code.quarkus.redhat.com 网站的基本应用程序详情部分截图
  3. 指定应用程序项目的更多详情:

    1. 选择 Configure more options 来显示包含额外应用程序详情的字段。
    2. 输入项目生成的工件中使用的版本。此字段的默认值为 1.0.0-SNAPSHOT。建议使用 语义版本 控制,但如果您偏好使用不同类型的版本控制。
    3. 选择您是否希望 code.quarkus.redhat.com 将示例代码添加到您的项目中。当您从扩展列表中添加标记为 example code 图标的扩展时,您可以启用这个选项,以便在生成项目时为这些扩展自动创建示例类文件和资源文件。当您不添加提供示例代码的任何扩展时,这个选项不会影响您生成的项目。

      code.quarkus.redhat.com 站点的应用程序详情部分截图显示扩展表单,以及其他应用程序详情
      注意

      code.quarkus.redhat.com 会自动使用红帽构建的 Quarkus 的最新版本。您可在生成项目后手动更改 pom.xml 文件中的 BOM 版本。

  4. 从扩展列表中选择您要在应用程序中使用的扩展。所选扩展包含在 Quarkus 应用程序的依赖项中,及其版本由 Quarkus 平台管理,以确保其兼容性。

    您可以启用这个选项来为标记为 example code 图标的扩展自动生成示例代码。

    Screenshot of the list of extensions at the code.quarkus.redhat.com site that you can add to your project

    请注意,红帽为列表上的单个扩展 提供不同的支持级别,由每个扩展名称旁的标签表示:

    • 红帽完全支持 SUPPORTED 扩展,用于生产环境中的企业级应用程序。
    • 技术预览功能支持范围 下,红帽对生产环境中的 支持 受到有限的支持。
    • 红帽不支持将 DEV-SUPPORT 扩展用于生产环境,但红帽提供的核心功能由红帽开发人员支持用于开发新应用程序。
    • 红帽不支持未标记的扩展用于生产环境。
    • DEPRECATED 扩展计划被提供相同功能的较新的技术或实施替代。

      您可以扩展每个扩展旁边的溢出菜单,以访问您可以使用的附加选项:

      • 在命令行中使用 Quarkus maven 插件,将扩展添加到现有项目。
      • 复制 XML 代码片段,将扩展添加到项目的 pom.xml 文件中。
      • 获取每个扩展的 groupIdartifactIdversion
      • 打开扩展指南。

        Screenshot of an expanded overflow menu next to one of the extensions on code.quarkus.redhat.coim showing the custom commands that you can copy

  5. 选择 Generate your application 来确认您的选择并显示覆盖页面,其中包含包含您生成的项目的存档的下载链接。覆盖屏幕还显示可用于编译和启动应用程序的自定义命令。
  6. 选择 Download the ZIP,将生成的项目文件的归档保存到机器中。
  7. 提取存档的内容。
  8. 进入包含您提取的项目文件的目录:

    cd <directory_name>
    Copy to Clipboard Toggle word wrap
  9. 以开发模式编译并启动应用程序:

    ./mvnw compile quarkus:dev
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部