使用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 中。

命令描述

属性默认值描述
projectGroupIdorg.acme.sample项目的 GroupId
projectArtifactId没有默认值,但是必填项目的 ArtifactId
projectVersion1.0.0-SNAPSHOT项目版本
platformGroupIdio.quarkus目标平台的组 ID。鉴于所有现有平台都来自 io.quarkus,实际上不会明确使用这一平台。但它仍然是一个选择。
platformArtifactIdquarkus-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