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 包装器( 如果您喜欢使用独立的 Gradle 安装,请使用 Gradle 6.2.2。 |
下表列出了您可以传递给 create
命令的属性:
属性 | 默认值 | 描述 |
---|---|---|
|
|
创建项目的 group id |
|
mandatory |
已创建项目的 artifact id。 不指定它的话会触发交互模式。 |
|
|
创建项目的版本 |
|
Not created if omitted |
生成资源的完全限定名称 |
|
|
资源路径,只有设置了 |
|
[] |
要添加到项目的扩展列表 (逗号分隔) |
如果您决定生成 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 测试总是使用
|
处理扩展(extension)
从 Quarkus 项目中,您可以通过以下方式获取可用扩展列表:
./gradlew listExtensions
您可以使用以下方式启用扩展:
./gradlew addExtension --extensions="hibernate-validator"
扩展使用逗号分隔的列表。
扩展名称是 GAV 名: 如 io.quarkus:quarkus-agroal
.
但是你可以通过一个部分的名字,Quarkus会尽力找到正确的扩展。
例如,agroal
、Agroal`或`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
支持以下值:
-
y
或true
- 调试模式 JVM 执行已暂停 -
n
或false
- 调试模式JVM 已启动,不暂停
您也可以在调试模式下运行一个 Quarkus 应用程序,使用 然后将您的debugger attach到 |
导入您的 IDE
一旦您有 project generated, 您可以将其导入到喜欢的 IDE 中。 唯一的要求是能导入Gradle项目。
Eclipse
在 Eclipse 中点击: File → Import
。
在向导中选择 Gradle → Existing Gradle Project
。
在下一个屏幕上选择项目的根目录。
下一个屏幕列出找到的模块;选择生成的项目,然后点击 Finish
。 完成!
另开一个终端,运行`./gradlew quarkusDev`,享受一个高开发效率的环境。
IntelliJ
In IntelliJ:
-
从 IntelliJ 中选择
File → New → Project From Existing Sources…
或者如果您在欢迎对话框中,选择Import project
。 -
选择项目根目录
-
选择
Import project from external model
和Gradle
-
接下来的几次(如果需要请查看不同的选项)
-
在最后一次屏幕上点击完成
另开一个终端或在嵌入终端中,运行 ./gradlew quarkusDev
. 享受!
Apache NetBeans
在 NetBeans:
-
选择
File → Open Project
-
选择项目根目录
-
点击
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 可执行文件将使用 如果你想用不同的 Docker 镜像构建一个 native 可执行文件 (例如使用不同的 GraalVM 版本),
使用 可用的 Docker 镜像列表在 quay.io 可以找到. 请注意,给定的 Quarkus 版本可能不会兼容所有可用镜像。 |
自定义 native 构建镜像过程的另一种方式是在 Gradle 构建脚本中配置任务。 例如,如果需要设置 enableHttpUrlHandler
,可以这样做:
buildNative {
enableHttpUrlHandler = true
}
或者,如果您使用 Gradle Kotlin DSL:
tasks {
named<QuarkusNative>("buildNative") {
setEnableHttpUrlHandler(true)
}
}
然后通过执行生成本机可执行文件:
./gradlew buildNative