使用Maven工具创建Quarkus项目

简介: 我这边使用的是 Maven 3.8.1 版本,可以使用 Quarkus 官方提供的 io.quarkus:quarkus-maven-plugin:2.0.1.Final 插件来快速穿件 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
复制代码


相关文章
|
2月前
|
XML Java Maven
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
44 0
|
5天前
|
Java Apache Maven
Maven 项目文档
在 `C:/MVN` 目录下创建 Maven 项目 `consumerBanking` 使用命令:`mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`。为解决 `mvn site` 命令执行时的 `NoClassDefFoundError`
|
14天前
|
Java Maven
idea中maven项目pom文件Could not acquire lock(s)
idea中maven项目pom文件Could not acquire lock(s)
|
1月前
|
Java Maven Spring
【操作宝典】IntelliJ IDEA新建maven项目详细教程
【操作宝典】IntelliJ IDEA新建maven项目详细教程
38 1
|
2月前
|
Java Maven 开发工具
maven导入项目出现Unable to import maven project: See logs for details
maven导入项目出现Unable to import maven project: See logs for details
13 0
maven导入项目出现Unable to import maven project: See logs for details
|
4天前
|
XML Java 测试技术
Maven 构建 & 项目测试
本文介绍了如何使用Maven构建和测试Java应用。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit作为测试框架。执行`mvn clean package`命令进行构建,Maven会清理目标目录,编译源码和测试代码,运行测试用例,最后生成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告位于`surefire-reports`文件夹。添加新Java类`Util.java`到项目后,更新`App.java`以使用`Util`类。
|
7天前
|
Java 项目管理 Maven
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
Maven的聚合和继承是Java开发中重要的概念。聚合允许将多个项目组合成一个构建单元,简化多模块项目的构建过程,提高构建效率。继承则让子项目重用父项目的配置和属性,避免了重复定义,增强了项目的一致性和可维护性。通过聚合和继承,Maven为多模块项目的构建和管理提供了高效且灵活的支持,减少了配置冗余,提升了开发效率。
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
|
7天前
|
Java Maven
Maven 项目文档
学习Maven项目文档创作,借助Doxia引擎将内容转化为通用模型。支持Apt(纯文本)、Xdoc(Maven 1.x格式)、FML(FAQ)和XHTML。
|
8天前
|
Java Apache Maven
Maven 项目文档Maven 项目文档
Maven使用Doxia引擎将多种格式(如Apt、Xdoc、FML和XHTML)转换为通用文档模型。在创建Maven项目文档时,例如在C:/MVN下创建consumerBanking项目,需运行指定的mvn archetype:generate命令。接着,更新pom.xml,确保包含maven-site-plugin和maven-project-info-reports-plugin的最新版本(至少3.3和2.7),以避免NoClassDefFoundError。执行`mvn site`命令生成文档。
|
8天前
|
Java Apache Maven
Maven 项目文档
本教程介绍如何创建 Maven 项目文档。在 C:/MVN 目录下,使用命令 `mvn archetype:generate` 创建 `consumerBanking` 项目。为解决运行 `mvn site` 时的 NoClassDefFoundError,需在 `pom.xml` 中添加并更新 `maven-site-plugin` 至版本 3.3。执行 `mvn site` 后,Maven 生成包括&quot;About&quot;, &quot;Issue Tracking&quot;等报告的文档。成功后,文档位于 `target/site/index.html`。