Gradle Tooling

Quarkus 的 Gradle 支持还是预览。 您可以使用 Gradle 创建我们指南中的 Quarkus 项目。 如果您超越了这种情况, Gradle tasks 可能不会得到预期结果. 这只是一种提醒,如果你喜欢 Gradle 我们建议您试试并给我们反馈。

创建一个新项目

最简单的动手搭建 Gradle 项目的方法是像 Quarkus Maven plugin 样:

mvn io.quarkus:quarkus-maven-plugin:1.3.1.Final:create \
    -DprojectGroupId=my-groupId \
    -DprojectArtifactId=my-artifactId \
    -DprojectVersion=my-version \
    -DclassName="org.my.group.MyResource" \
    -Dextensions="resteasy-jsonb" \
    -DbuildTool=gradle
如果你只是启动 mvn io.quarkus:quarkus-maven-plugin:1.3.1.Final:create ,Maven 插件会要你输入。 您可以通过 -B 传递到 Maven 命令来禁用(使用默认值)。

Quarkus 项目自动在您的项目中安装 Gradle 包装器(./gradlew)。

如果您喜欢使用独立的 Gradle 安装,请使用 Gradle 6.2.2。

下表列出了您可以传递给 create 命令的属性:

属性 默认值 描述

projectGroupId

org.acme.sample

创建项目的 group id

projectArtifactId

mandatory

已创建项目的 artifact id。 不指定它的话会触发交互模式。

projectVersion

1.0-SNAPSHOT

创建项目的版本

className

Not created if omitted

生成资源的完全限定名称

path

/hello

资源路径,只有设置了 className 才相关。

extensions

[]

要添加到项目的扩展列表 (逗号分隔)

如果您决定生成 REST 接口(使用 className 属性),接口将在 http://localhost:8080/$path 。 如果您使用默认的 path,URL是:http://localhost:8080/hello。

该项目要么生成在当前目录,要么生成在传进去的 artifactId 名字目录。 如果当前目录为空,项目将在原地生成。

还在 src/main/docker 中生成一对 native 和 jvm 模式 Dockerfiles 。 构建镜像和运行容器的指示都写入了这些 Dockerfiles 中。

在 JVM 模式下定制测试用的配置文件

默认情况下,在 JVM 模式下的 Quarkus 测试使用 test 配置文件运行。 如果您不熟悉 Quarkus 配置文件,所有您需要知道的都在 配置 Profiles 文档

It is however possible to use a custom configuration profile for your tests with the Gradle build configuration shown below. 如果您需要例如使用非默认测试 数据库来运行一些测试,这可能是有用的。

test {
    systemProperty "quarkus.test.profile", "foo" (1)
}

或者,如果您使用 Gradle Kotlin DSL:

tasks.test {
    systemProperty("quarkus.test.profile", "foo") (1)
}
1 foo 配置文件将用于运行测试。

现在无法在 native 模式中使用自定义测试配置文件。 Native 测试总是使用 prod 配置文件运行的。

处理扩展(extension)

从 Quarkus 项目中,您可以通过以下方式获取可用扩展列表:

./gradlew listExtensions

您可以使用以下方式启用扩展:

./gradlew addExtension --extensions="hibernate-validator"

扩展使用逗号分隔的列表。

扩展名称是 GAV 名: 如 io.quarkus:quarkus-agroal. 但是你可以通过一个部分的名字,Quarkus会尽力找到正确的扩展。 例如,agroalAgroal`或`agro 将展开为 io.quarkus:quarkus-agroal。 如果没有找到扩展名或多个扩展匹配,您将在命令结果看到红色的叉 ❌ 。

./gradlew addExtension --extensions="jdbc,agroal,non-exist-ent"
[...]
❌ Multiple extensions matching 'jdbc'
     * io.quarkus:quarkus-jdbc-h2
     * io.quarkus:quarkus-jdbc-mariadb
     * io.quarkus:quarkus-jdbc-postgresql
     Be more specific e.g using the exact name or the full gav.
✅ Adding extension io.quarkus:quarkus-agroal
❌ Cannot find a dependency matching 'non-exist-ent', maybe a typo?
[...]

您可以安装所有符合通配符的扩展:

./gradlew addExtension --extensions="hibernate*"

开发模式

Quarkus 内置有的开发模式。 运行您的应用程序:

./gradlew quarkusDev

然后您可以更新应用程序源、资源和配置。 更改将自动反映在您运行的应用程序中。 开发跨越 UI 和数据库时如果您的修改能够立即得到反映是非常棒的。

quarkusDev 可以通过后台编译进行热部署, 这意味着当您修改 Java 文件或资源文件并刷新您的浏览器时,这些更改将自动生效。 这也适用于配置属性文件等资源文件。 刷新浏览器的行为触发了工作区的扫描,如果检测到任何更改, Java 文件将被编译, 并且应用程序已被重新部署,然后您的请求将被重新部署的 个应用程序处理。 如果编译或部署有任何问题,错误页面将会让您知道。

CTRL+C 停掉应用程序。

您可以更改开发环境运行的工作目录:

quarkusDev {
    workingDir = rootProject.projectDir
}

调试

在开发模式下,Quarkus 默认开启调试模式,监听端口 5005 ,但不暂停JVM。

这种行为可以通过指定 debug 系统属性为以下值之一来改变:

  • false - JVM 将以禁用调试模式启动

  • true - JVM 是在调试模式下启动的,将监听端口 5005

  • client - JVM 将以客户端模式开始,并尝试连接到 localhost:5005

  • {port}` - JVM 是在调试模式下启动的,将会监听 {port}

当在调试模式下启动时,可以使用另一个系统属性 suspend 来暂停JVM。 suspend 支持以下值:

  • ytrue - 调试模式 JVM 执行已暂停

  • nfalse - 调试模式JVM 已启动,不暂停

您也可以在调试模式下运行一个 Quarkus 应用程序,使用 ./gradlew quarkusDev -Dsuspend=true -Ddebug=true ,可缩写为 ./gradlew quarkusDev -Dsuspend -Ddebug

然后将您的debugger attach到 localhost:5005

导入您的 IDE

一旦您有 project generated, 您可以将其导入到喜欢的 IDE 中。 唯一的要求是能导入Gradle项目。

Eclipse

在 Eclipse 中点击: File → Import 。 在向导中选择 Gradle → Existing Gradle Project。 在下一个屏幕上选择项目的根目录。 下一个屏幕列出找到的模块;选择生成的项目,然后点击 Finish。 完成!

另开一个终端,运行`./gradlew quarkusDev`,享受一个高开发效率的环境。

IntelliJ

In IntelliJ:

  1. 从 IntelliJ 中选择 File → New → Project From Existing Sources…​ 或者如果您在欢迎对话框中,选择 Import project

  2. 选择项目根目录

  3. 选择 Import project from external modelGradle

  4. 接下来的几次(如果需要请查看不同的选项)

  5. 在最后一次屏幕上点击完成

另开一个终端或在嵌入终端中,运行 ./gradlew quarkusDev. 享受!

Apache NetBeans

在 NetBeans:

  1. 选择 File → Open Project

  2. 选择项目根目录

  3. 点击 Open Project

另开一个终端或在嵌入终端中,运行 ./gradlew quarkusDev. 享受!

Visual Studio Code

在 VS Code中打开项目目录。 如果您安装了 Java Extension Pack (一组Java 扩展),该项目将被加载为 Gradle 项目。

构建一个 native 可执行文件

Native 可执行文件使 Quarkus 应用程序更适合容器和 serverless 的工作。

确保配置了 GraALVM_HOME 并指向GraalVM 版本 19.3.1。

使用 ./gradlew buildNative 创建一个 native 可执行文件。 Native 可执行文件将生成在 build/ 中。

构建一个容器友好的可执行文件

本机可执行文件将针对您的操作系统。 若要创建一个在容器中运行的可执行程序,请使用以下方法:

./gradlew buildNative

定制构建 native task

有些情况下可能需要更改 buildNative 任务的默认值(其实现在 这里).

定制配置最简单方式是通过命令行。 例如,要使用 Docker 来构建native 镜像,只需添加 --docker-build=true 标志就行:

./gradlew buildNative --docker-build=true

生成的可执行文件将是 64 位 Linux 可执行文件,它可能无法运行在您现在的操作系统。 然而,这不是问题,因为我们将把它复制到 Docker 容器中。 请注意在这种情况下,构建本身也运行在Docker容器中,所以你不需要在本地安装 GraalVM。

默认情况下,native 可执行文件将使用 quay.io/quarkus/ubi-quarkus-native-image:19.3.1-java11 Docker 镜像来生成.

如果你想用不同的 Docker 镜像构建一个 native 可执行文件 (例如使用不同的 GraalVM 版本), 使用 -Dquarkus.native.builder-image=<image name> 构建参数。

可用的 Docker 镜像列表在 quay.io 可以找到. 请注意,给定的 Quarkus 版本可能不会兼容所有可用镜像。

自定义 native 构建镜像过程的另一种方式是在 Gradle 构建脚本中配置任务。 例如,如果需要设置 enableHttpUrlHandler ,可以这样做:

buildNative {
    enableHttpUrlHandler = true
}

或者,如果您使用 Gradle Kotlin DSL:

tasks {
    named<QuarkusNative>("buildNative") {
        setEnableHttpUrlHandler(true)
    }
}

然后通过执行生成本机可执行文件:

./gradlew buildNative

运行 native 测试

使用以下方式运行 native 测试:

./gradlew testNative

此任务依赖于 buildNative ,因此它将在运行测试前生成 native 图像。

构建 Uber-Jars

Quarkus Gradle 插件支持通过指定 --uber-jar 参数来生成 Uber-Jars :

./gradlew quarkusBuild --uber-jar

当构建一个 Uber-Jar 时,您可以使用 --ignored-entry 参数从生成的 jar 中排除条目:

./gradlew quarkusBuild --uber-jar --ignored-entry=META-INF/file1.txt

条目相对生成的 Uber-Jar 根目录. 您可以添加额外的 --ignored-entry 参数来指定多个条目。

./gradlew build 构建

从 1.1.0.Final, ./gradlew build 将不再生成 native 镜像。 如有必要,使用上边介绍过的 buildNative 任务。

quarkus.pro 是基于 quarkus.io 的非官方中文翻译站 ,最后更新 2020/04 。
沪ICP备19006215号-8
QQ交流群:1055930959
微信群: