使用Maven工具创建Quarkus项目
环境
我这边使用的是 Maven 3.8.1
版本,可以使用 Quarkus 官方提供的 io.quarkus:quarkus-maven-plugin:2.0.1.Final
插件来快速穿件 Quarkus 项目。
创建项目
使用以下 Maven 命令来创建一个新项目:
mvn io.quarkus:quarkus-maven-plugin:2.0.1.Final:create \
-DprojectGroupId=top.mjava \
-DprojectArtifactId=quarkus-demo \
-DprojectVersion=1.0 \
-DclassName="top.mjava.demo.Application"
在执行命令的当前目录下会为项目生成和 ArtifactId 同名的文件夹,如果已存在该同名文件夹,则项目会创建失败。
在 src/main/docker
目录下还生成了 native 和 jvm 模式的 Dockerfile,构建镜像和运行容器的指令写在这些 Dockerfile 中。
命令描述
属性 | 默认值 | 描述 |
---|---|---|
projectGroupId | org.acme.sample | 项目的 GroupId |
projectArtifactId | 没有默认值,但是必填 | 项目的 ArtifactId |
projectVersion | 1.0.0-SNAPSHOT | 项目版本 |
platformGroupId | io.quarkus | 目标平台的组 ID。鉴于所有现有平台都来自 io.quarkus,实际上不会明确使用这一平台。但它仍然是一个选择。 |
platformArtifactId | quarkus-universe-bom | 目标平台 BOM 的工件 ID。为了使用本地构建的 Quarkus,它应该是 quarkus-bom。 |
platformVersion | 如果未指定,将解析最新的。 | 您希望项目使用的平台版本。它还可以接受版本范围,在这种情况下,将使用指定范围中的最新版本。 |
className | 如果省略则不创建 | 生成的资源的完全限定名称 |
path | /hello | 资源路径,仅在设置了 className 时生效。 |
extensions | [] | 要添加到项目的扩展列表(逗号分隔) |
管理扩展
创建项目后就可以进入到项目文件夹,可以使用简短的命令来操作项目了,例如:mvn quarkus:[command]
查看所有扩展
mvn quarkus:list-extensions
该命令可以查看当前项目所使用的的所有扩展。
➜ quarkus-demo: mvn quarkus:list-extensions
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< top.mjava:quarkus-demo >-----------------------
[INFO] Building quarkus-demo 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.0.1.Final:list-extensions (default-cli) @ quarkus-demo ---
[INFO] Current Quarkus extensions available:
[INFO]
[INFO] Blaze-Persistence blaze-persistence-integration-quarkus
[INFO] Camel ActiveMQ camel-quarkus-activemq
[INFO] Camel Async HTTP Client (AHC) camel-quarkus-ahc
[INFO] Camel Async HTTP Client (AHC) Websocket camel-quarkus-ahc-ws
[INFO] Camel AMQP camel-quarkus-amqp
......
添加扩展
mvn quarkus:add-extensions -Dextension=vertx
该命令可以添加扩展,例如上面这条命令为项目添加了 vertx
扩展
➜ quarkus-demo: mvn quarkus:add-extensions -Dextension=vertx
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< top.mjava:quarkus-demo >-----------------------
[INFO] Building quarkus-demo 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.0.1.Final:add-extensions (default-cli) @ quarkus-demo ---
[INFO] [SUCCESS] ✅ Extension io.quarkus:quarkus-vertx has been installed
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.370 s
[INFO] Finished at: 2021-07-09T15:06:50+08:00
[INFO] ------------------------------------------------------------------------
删除扩展
mvn quarkus:remove-extensions -Dextension=vertx
该命令可以删除不用的扩展,比如删除刚刚添加的 vertx
扩展
➜ quarkus-demo: mvn quarkus:remove-extensions -Dextension=vertx
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< top.mjava:quarkus-demo >-----------------------
[INFO] Building quarkus-demo 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.0.1.Final:remove-extensions (default-cli) @ quarkus-demo ---
[INFO] [SUCCESS] ✅ Extension io.quarkus:quarkus-vertx has been uninstalled
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.112 s
[INFO] Finished at: 2021-07-09T15:08:48+08:00
[INFO] ------------------------------------------------------------------------
项目构建
运行项目
mvn quarkus:dev
执行该命令时,项目会被运行,此时访问 http://localhost:8080/hello 就会得到 Hello RESTEasy
输出
quarkus-demo: mvn quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< top.mjava:quarkus-demo >-----------------------
[INFO] Building quarkus-demo 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.0.1.Final:dev (default-cli) @ quarkus-demo ---
[INFO] Invoking io.quarkus:quarkus-maven-plugin:2.0.1.Final:generate-code @ quarkus-demo
[INFO] Invoking org.apache.maven.plugins:maven-resources-plugin:2.6:resources @ quarkus-demo
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] Invoking org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile @ quarkus-demo
[INFO] Nothing to compile - all classes are up to date
[INFO] Invoking org.apache.maven.plugins:maven-resources-plugin:2.6:testResources @ quarkus-demo
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/zheng/coding/study/quarkus-demo/src/test/resources
[INFO] Invoking org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile @ quarkus-demo
[INFO] Nothing to compile - all classes are up to date
Listening for transport dt_socket at address: 5005
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-07-09 15:16:47,146 INFO [io.quarkus] (Quarkus Main Thread) quarkus-demo 1.0 on JVM (powered by Quarkus 2.0.1.Final) started in 3.412s. Listening on: http://localhost:8080
2021-07-09 15:16:47,194 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-07-09 15:16:47,199 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, smallrye-context-propagation]
构建项目
mvn quarkus:build
该命令会构建项目,并会在 target/quarkus-app/
目录下创建一个可运行的 jar
包
➜ quarkus-demo mvn quarkus:build
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< top.mjava:quarkus-demo >-----------------------
[INFO] Building quarkus-demo 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.0.1.Final:build (default-cli) @ quarkus-demo ---
[INFO] [org.jboss.threads] JBoss Threads version 3.4.0.Final
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 1977ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.776 s
[INFO] Finished at: 2021-07-09T15:13:54+08:00
[INFO] ------------------------------------------------------------------------
总结
更多命令可以执行下面的命令查看,本文只介绍了几种常用的
mvn io.quarkus:quarkus-maven-plugin:2.0.1.Final:help
// 或者在项目目录下可使用简短命令
mvn quarkus:help
参考资料:https://quarkus.io/guides/maven-tooling