quarkus实战之五:细说maven插件

打印 上一主题 下一主题

主题 784|帖子 784|积分 2352


  • quarkus的maven插件非常重要,管理和构建工程时都离不开,本篇就来一起了解和掌握它
欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览


  • 本文是《quarkus实战》系列的第五篇,一起去熟悉quarkus的maven插件(就是下图红框中的那个plugin),用好它可以使我们更加得心应手的在项目中配置和控制quarkus


  • 插件quarkus-maven-plugin提供了丰富的功能,它们都有对应的命令,执行mvn quarkus:xxx即可执行,其中xxx就是具体的命令,例如mvn quarkus:help,接下来一起用实际操作来熟悉这些命令
帮助(help)


  • mvn quarkus:help是首先要掌握的命令,它告诉了大家quarkus的maven插件到底有哪些能力,作为工具书,今后随时可能用到,如下所示,篇幅所限,仅列出部分内容:
  1. % mvn quarkus:help
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:help (default-cli) @ hello-quarkus ---
  9. [INFO] Quarkus Platform - Quarkus Maven Plugin 2.7.3.Final
  10.   Quarkus Universe platform aggregates extensions from Quarkus Core and those
  11.   developed by the community into a single compatible and versioned set that
  12.   application developers can reference from their applications to align the
  13.   dependency versions
  14. This plugin has 25 goals:
  15. quarkus:add-extension
  16.   Allow adding an extension to an existing pom.xml file. Because you can add one
  17.   or several extension in one go, there are 2 mojos: add-extensions and
  18.   add-extension. Both supports the extension and extensions parameters.
  19. quarkus:add-extensions
  20.   Allow adding extensions to an existing pom.xml file. Because you can add one
  21.   or several extension in one go, there are 2 mojos: add-extensions and
  22.   add-extension. Both supports the extension and extensions parameters.
  23. quarkus:analyze-call-tree
  24.   Analyze call tree of a method or a class based on an existing report produced
  25.   by Substrate when using -H:+PrintAnalysisCallTree, and does a more meaningful
  26.   analysis of what is causing a type to be retained.
  27. quarkus:build
  28.   Builds the Quarkus application.
  29. ...  
复制代码
创建工程(create)


  • 首先要掌握的mvn命令是创建工程,回顾前文中创建工程的命令:
  1. mvn "io.quarkus:quarkus-maven-plugin:create" \
  2.   -DprojectGroupId="com.bolingcavalry" \
  3.   -DprojectArtifactId="hello-quarkus" \
  4.   -DprojectVersion="1.0-SNAPSHOT" \
  5.   -DclassName="HobbyResource" \
  6.   -Dpath="actions"
复制代码

  • 创建工程时有很多参数可以设置,它们的默认值的作用如下表
参数默认值说明projectGroupIdorg.acme.samplegroup id,GAV坐标中的GprojectArtifactIdmandatoryartifact id, GAV坐标中的AprojectVersion1.0.0-SNAPSHOTversion, GAV坐标中的VplatformGroupIdio.quarkus.platform在依赖quarkus的BOM,以及quarkus插件时,都要指定GAV,这是GplatformArtifactIdquarkus-bom在依赖quarkus的BOM,以及quarkus插件时,都要指定GAV,这是AplatformVersion2.7.1.Final在依赖quarkus的BOM,以及quarkus插件时,都要指定GAV,这是V,默认值会自动更新到最新稳定版className无默认值指定后,会自动创建一个类path无默认值如果指定了className,此时再指定path的话,path会作为类的web接口的pathextensions空所需的quarkus插件列表quarkusRegistryClienttrue是否联网获取最新的quarkus插件列表,如果设置为false,列表只能根据BOM获取,得不到最新的在线数据查看工程信息(info)


  • 查看工程信息的命令是mvn quarkus:info,使用频率很高,如下,可以观察当前的BOM和扩展插件情况:
  1. (base) willdeMBP:hello-quarkus will$ mvn quarkus:info
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.1.Final:info (default-cli) @ hello-quarkus ---
  9. [WARNING] quarkus:info goal is experimental, its options and output may change in future versions
  10. [INFO] Looking for the newly published extensions in registry.quarkus.io
  11. [INFO] Quarkus platform BOMs:
  12. [INFO]   io.quarkus:quarkus-bom:pom:2.7.1.Final
  13. [INFO]
  14. [INFO] Extensions from io.quarkus:quarkus-bom:
  15. [INFO]   io.quarkus:quarkus-arc
  16. [INFO]   io.quarkus:quarkus-resteasy
  17. [INFO]
  18. [INFO] ------------------------------------------------------------------------
  19. [INFO] BUILD SUCCESS
  20. [INFO] ------------------------------------------------------------------------
  21. [INFO] Total time:  4.828 s
  22. [INFO] Finished at: 2022-03-04T08:40:44+08:00
  23. [INFO] ------------------------------------------------------------------------
复制代码
paltform列表(list-platforms)


  • 回顾项目的pom.xml文件,如下图,红框中是依赖的平台信息,所有quarkus依赖库都由这个平台统一管理


  • 上图红框中的平台,在quarkus中有多个,我们可以按照自己的实际情况选择,quarkus插件的list-platforms命令可以查看一共有哪些平台类型,完整命令是
  1. mvn quarkus:list-platforms
复制代码

  • 控制台输出所有平台信息
  1. % mvn quarkus:list-platforms
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:list-platforms (default-cli) @ hello-quarkus ---
  9. [INFO] io.quarkus.platform:quarkus-bom::pom:2.7.3.Final
  10. [INFO] io.quarkus.platform:quarkus-optaplanner-bom::pom:2.7.3.Final
  11. [INFO] io.quarkus.platform:quarkus-kogito-bom::pom:2.7.3.Final
  12. [INFO] io.quarkus.platform:quarkus-qpid-jms-bom::pom:2.7.3.Final
  13. [INFO] io.quarkus.platform:quarkus-cassandra-bom::pom:2.7.3.Final
  14. [INFO] io.quarkus.platform:quarkus-amazon-services-bom::pom:2.7.3.Final
  15. [INFO] io.quarkus.platform:quarkus-camel-bom::pom:2.7.3.Final
  16. [INFO] io.quarkus.platform:quarkus-hazelcast-client::pom:2.7.3.Final
  17. [INFO] io.quarkus.platform:quarkus-debezium-bom::pom:2.7.3.Final
  18. [INFO] io.quarkus.platform:quarkus-blaze-persistence-bom::pom:2.7.3.Final
  19. [INFO] io.quarkus.platform:quarkus-google-cloud-services-bom::pom:2.7.3.Final
  20. [INFO] ------------------------------------------------------------------------
  21. [INFO] BUILD SUCCESS
  22. [INFO] ------------------------------------------------------------------------
复制代码
扩展组件:查看(list-extensions)


  • 扩展组件(extensions)是quarkus的一大特色,web、序列化、数据库等丰富的功能,都有对应的组件提供
  • 命令mvn quarkus:list-extensions可以查看支持的扩展组件列表:
  1. (base) willdeMBP:hello-quarkus will$ mvn quarkus:list-extensions
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.1.Final:list-extensions (default-cli) @ hello-quarkus ---
  9. [INFO] Looking for the newly published extensions in registry.quarkus.io
  10. [INFO] Current Quarkus extensions available:
  11. [INFO]
  12. [INFO] ✬ ArtifactId                                         Extension Name
  13. [INFO] ✬ quarkus-agroal                                     Agroal - Database connection pool
  14. [INFO] ✬ quarkus-amazon-lambda                              AWS Lambda
  15. [INFO] ✬ quarkus-amazon-lambda-http                         AWS Lambda HTTP
  16. [INFO] ✬ quarkus-amazon-lambda-rest                         AWS Lambda Gateway REST API
  17. [INFO] ✬ quarkus-amazon-lambda-xray                         AWS Lambda X-Ray
  18. [INFO] ✬ quarkus-apicurio-registry-avro                     Apicurio Registry - Avro
  19. [INFO] ✬ quarkus-avro                                       Apache Avro
  20. [INFO] ✬ quarkus-awt                                        AWT
  21. [INFO] ✬ quarkus-azure-functions-http                       Azure Functions HTTP
  22. [INFO] ✬ quarkus-cache                                      Cache
  23. [INFO] ✬ quarkus-config-yaml                                YAML Configuration
  24. ...
复制代码

  • 如果想看更丰富的信息,可以增加参数-Dformat=full,如下图红框所示,新增了两个字段:

扩展组件:查看分类(list-categories)


  • 直接用list-extensions命令可以看到所有扩展组件,我们当然不会全部都用,所以最好能有个分类的功能,然后我们在合适的类目中找寻自己需要的组件
  • quarkus已经为我们准备好了分类功能,首先,执行以下命令查看有哪些分类(-Dformat参数可选,有了它会展示更详细的信息)
  1. mvn quarkus:list-categories -Dformat=full
复制代码

  • 控制台输出如下,列出了所有分类和说明
  1. % mvn quarkus:list-categories -Dformat=full
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:list-categories (default-cli) @ hello-quarkus ---
  9. [INFO] Available Quarkus extension categories:
  10. [INFO]
  11. [INFO] Category                       CategoryId           Description
  12. [INFO] Alternative languages          alt-languages        Support for other JVM based languages
  13. [INFO] Alternative languages          alternative-languages Support for other JVM based languages
  14. [INFO] Business Automation            business-automation  Rules engine, BPM, etc
  15. [INFO] Cloud                          cloud                Useful for Cloud Native deployments platforms like Kubernetes and cloud providers
  16. [INFO] Compatibility                  compatibility        Support for alternative programming models on Quarkus
  17. [INFO] Core                           core                 Core Quarkus components: engine, logging, etc.
  18. [INFO] Data                           data                 Accessing and managing your data (RDBMS, NoSQL, caching, transaction management, etc)
  19. [INFO] Integration                    integration          Connectors to read to write from a skew of systems (file, S#, Twitter, etc)
  20. [INFO] Messaging                      messaging            Send and receives message to various messaging systems (AMQP, KAfka etc)
  21. [INFO] Miscellaneous                  miscellaneous        Mixed bag of good stuff
  22. [INFO] Observability                  observability        Metrics, tracing, etc
  23. [INFO] Reactive                       reactive             Non blocking stack and connectors
  24. [INFO] Security                       security             Everything you need to secure your application
  25. [INFO] Serialization                  serialization        Serializing and deserializing various formats
  26. [INFO] Web                            web                  Everything you need for REST endpoints, HTTP and web formats like JSON
  27. [INFO] gRPC                           grpc                 gRPC integration
  28. [INFO]
  29. [INFO] To list extensions in given category, use:
  30. `./mvnw quarkus:list-extensions -Dcategory="categoryId"`
  31. [INFO] ------------------------------------------------------------------------
  32. [INFO] BUILD SUCCESS
  33. [INFO] ------------------------------------------------------------------------
复制代码

  • 如果我对消息相关的组件感兴趣,可以看messaging这个类目,命令是
  1. mvn quarkus:list-extensions -Dcategory="messaging"
复制代码

  • 此时控制台会列出messaging这个类目下的所有组件
  1. % mvn quarkus:list-extensions -Dcategory="messaging"              
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:list-extensions (default-cli) @ hello-quarkus ---
  9. [INFO] Current Quarkus extensions available:
  10. [INFO]
  11. [INFO] ✬ ArtifactId                                         Extension Name
  12. [INFO]   quarkus-artemis-jms                                Artemis JMS
  13. [INFO] ✬ quarkus-google-cloud-pubsub                        Google Cloud Pubsub
  14. [INFO] ✬ quarkus-kafka-client                               Apache Kafka Client
  15. [INFO] ✬ quarkus-kafka-streams                              Apache Kafka Streams
  16. [INFO] ✬ quarkus-qpid-jms                                   AMQP 1.0 JMS client - Apache Qpid JMS
  17. [INFO]   quarkus-rabbitmq-client                            RabbitMQ Client
  18. [INFO]   quarkus-reactive-messaging-http                    Reactive HTTP and WebSocket Connector
  19. [INFO] ✬ quarkus-smallrye-reactive-messaging                SmallRye Reactive Messaging
  20. [INFO] ✬ quarkus-smallrye-reactive-messaging-amqp           SmallRye Reactive Messaging - AMQP Connector
  21. [INFO] ✬ quarkus-smallrye-reactive-messaging-kafka          SmallRye Reactive Messaging - Kafka Connector
  22. [INFO] ✬ quarkus-smallrye-reactive-messaging-mqtt           SmallRye Reactive Messaging - MQTT Connector
  23. [INFO] ✬ quarkus-smallrye-reactive-messaging-rabbitmq       SmallRye Reactive Messaging - RabbitMQ Connector
  24. [INFO]
  25. [INFO] To get more information, append `-Dformat=full` to your command line.
  26. [INFO]
  27. [INFO] Add an extension to your project by adding the dependency to your pom.xml or use `./mvnw quarkus:add-extension -Dextensions="artifactId"`
  28. [INFO] ------------------------------------------------------------------------
  29. [INFO] BUILD SUCCESS
  30. [INFO] ------------------------------------------------------------------------
复制代码
扩展组件:添加(add-extension、add-extensions)


  • mvn quarkus:list-extensions列出所有扩展组件后,可根据实际需要将列出的组件加入自己项目,例如我需要quarkus-jackson这个组件,执行以下命令即可
  1. mvn quarkus:add-extension -Dextensions="quarkus-jackson"
复制代码

  • 控制台输出如下,提示添加成功
  1. % mvn quarkus:add-extension -Dextensions="quarkus-jackson"
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:add-extension (default-cli) @ hello-quarkus ---
  9. [INFO] [SUCCESS] ✅  Extension io.quarkus:quarkus-jackson has been installed
  10. [INFO] ------------------------------------------------------------------------
  11. [INFO] BUILD SUCCESS
  12. [INFO] ------------------------------------------------------------------------
  13. [INFO] Total time:  3.756 s
  14. [INFO] Finished at: 2022-03-05T15:36:40+08:00
  15. [INFO] ------------------------------------------------------------------------
复制代码

  • 再去看pom.xml,如下图红框,文件已被改动,新增依赖quarkus-jackson


  • 还可以同时添加多个,命令是add-extensions,注意多了个s,多个组件之间用逗号分隔
  1. mvn quarkus:add-extensions -Dextensions="quarkus-jdbc-mysql,quarkus-config-yaml"
复制代码

  • 为了方便用户,add-extensions除了精确匹配,还会模糊查找,输入下面的命令试试
  1. quarkus:add-extensions -Dextensions="agroal"
复制代码

  • 控制台输出如下,quarkus-agroal会被找到并添加
  1. % mvn quarkus:add-extensions -Dextensions="agroal"   
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:add-extensions (default-cli) @ hello-quarkus ---
  9. [INFO] [SUCCESS] ✅  Extension io.quarkus:quarkus-agroal has been installed
  10. [INFO] ------------------------------------------------------------------------
  11. [INFO] BUILD SUCCESS
  12. [INFO] ------------------------------------------------------------------------
  13. [INFO] Total time:  0.832 s
  14. [INFO] Finished at: 2022-03-05T16:16:53+08:00
  15. [INFO] ------------------------------------------------------------------------
复制代码

  • 当匹配结果有多个的时候,quarkus插件会提示失败,以jdbc为例,如下所示,有多个匹配结果,因此quarkus插件不知道该选哪个,就报错了:
  1. % mvn quarkus:add-extension -Dextensions="jdbc"   
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:add-extension (default-cli) @ hello-quarkus ---
  9. [INFO] [ERROR] ❗  Multiple extensions matching 'jdbc'
  10.      - io.quarkus:quarkus-agroal
  11.      - io.quarkus:quarkus-elytron-security-jdbc
  12.      - io.quarkus:quarkus-jdbc-db2
  13.      - io.quarkus:quarkus-jdbc-derby
  14.      - io.quarkus:quarkus-jdbc-h2
  15.      - io.quarkus:quarkus-jdbc-mariadb
  16.      - io.quarkus:quarkus-jdbc-mssql
  17.      - io.quarkus:quarkus-jdbc-mysql
  18.      - io.quarkus:quarkus-jdbc-oracle
  19.      - io.quarkus:quarkus-jdbc-postgresql
  20.      - org.kie.kogito:kogito-addons-quarkus-persistence-jdbc
  21.      - org.apache.camel.quarkus:camel-quarkus-jdbc
  22.      Be more specific e.g using the exact name or the full GAV.
  23. [INFO] ------------------------------------------------------------------------
  24. [INFO] BUILD FAILURE
  25. [INFO] ------------------------------------------------------------------------
  26. [INFO] Total time:  3.500 s
  27. [INFO] Finished at: 2022-03-05T16:18:34+08:00
  28. [INFO] ------------------------------------------------------------------------
复制代码

  • 再用info命令查看当前工程,可以看到刚才添加的组件
  1. [INFO] Quarkus platform BOMs:
  2. [INFO]   io.quarkus.platform:quarkus-bom:pom:2.7.3.Final
  3. [INFO]
  4. [INFO] Extensions from io.quarkus.platform:quarkus-bom:
  5. [INFO]   io.quarkus:quarkus-jackson
  6. [INFO]   io.quarkus:quarkus-config-yaml
  7. [INFO]   io.quarkus:quarkus-arc
  8. [INFO]   io.quarkus:quarkus-jdbc-mysql
  9. [INFO]   io.quarkus:quarkus-resteasy
  10. [INFO]   io.quarkus:quarkus-agroal
  11. [INFO]
  12. [INFO] ------------------------------------------------------------------------
  13. [INFO] BUILD SUCCESS
  14. [INFO] ------------------------------------------------------------------------
复制代码
扩展组件:删除(remove-extension、remove-extensions)


  • 如果要删除已添加的quarkus组件,例如quarkus-jackson,执行以下命令即可
  1. mvn quarkus:remove-extension -Dextensions="quarkus-jackson"
复制代码

  • 控制台输入如下,提示删除成功,再去看pom.xml发现quarkus-jackson的依赖也已经被删除了
  1. % mvn quarkus:remove-extension -Dextensions="quarkus-jackson"   
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:remove-extension (default-cli) @ hello-quarkus ---
  9. [INFO] [SUCCESS] ✅  Extension io.quarkus:quarkus-jackson has been uninstalled
  10. [INFO] ------------------------------------------------------------------------
  11. [INFO] BUILD SUCCESS
  12. [INFO] ------------------------------------------------------------------------
复制代码

  • 也有批量删除功能,命令是remove-extensions,注意多了个s,多个组件之间用逗号分隔
  1. mvn quarkus:remove-extensions -Dextensions="quarkus-config-yaml,quarkus-jdbc-mysql"
复制代码

  • 控制台输出
  1. % mvn quarkus:remove-extensions -Dextensions="quarkus-config-yaml,quarkus-jdbc-mysql"
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:remove-extensions (default-cli) @ hello-quarkus ---
  9. [INFO] [SUCCESS] ✅  Extension io.quarkus:quarkus-config-yaml has been uninstalled
  10. [INFO] [SUCCESS] ✅  Extension io.quarkus:quarkus-jdbc-mysql has been uninstalled
  11. [INFO] ------------------------------------------------------------------------
  12. [INFO] BUILD SUCCESS
  13. [INFO] ------------------------------------------------------------------------
复制代码

  • 再用info命令查看当前工程,被删除的组件已不在列表
  1. % mvn quarkus:info
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.3.Final:info (default-cli) @ hello-quarkus ---
  9. [WARNING] quarkus:info goal is experimental, its options and output may change in future versions
  10. [INFO] Looking for the newly published extensions in registry.quarkus.io
  11. [INFO] Quarkus platform BOMs:
  12. [INFO]   io.quarkus.platform:quarkus-bom:pom:2.7.3.Final
  13. [INFO]
  14. [INFO] Extensions from io.quarkus.platform:quarkus-bom:
  15. [INFO]   io.quarkus:quarkus-arc
  16. [INFO]   io.quarkus:quarkus-resteasy
  17. [INFO]   io.quarkus:quarkus-agroal
  18. [INFO]
  19. [INFO] ------------------------------------------------------------------------
  20. [INFO] BUILD SUCCESS
  21. [INFO] ------------------------------------------------------------------------
复制代码
查看依赖树(dependency-tree)


  • 我们常用mvn dependency:tree命令查看maven工程的依赖树,此命令是根据pom.xml的依赖信息分析出所有直接和间接依赖关系,然而,在quarkus应用中存在一些特殊情况:quarkus的maven插件参与了构建,它会根据当前的quarkus扩展组件(extensions)去添加对应的依赖,这是maven本身不知道的,因此,推荐使用mvn quarkus:dependency-tree命令查看quarkus应用的依赖关系:
  1. (base) willdeMBP:hello-quarkus will$ mvn quarkus:dependency-tree
  2. [INFO] Scanning for projects...
  3. [INFO]
  4. [INFO] ------------------< com.bolingcavalry:hello-quarkus >-------------------
  5. [INFO] Building hello-quarkus 1.0-SNAPSHOT
  6. [INFO] --------------------------------[ jar ]---------------------------------
  7. [INFO]
  8. [INFO] --- quarkus-maven-plugin:2.7.1.Final:dependency-tree (default-cli) @ hello-quarkus ---
  9. [INFO] Quarkus application PROD mode build dependency tree:
  10. [INFO] com.bolingcavalry:hello-quarkus:pom:1.0-SNAPSHOT
  11. [INFO] ├─ io.quarkus:quarkus-arc-deployment:jar:2.7.1.Final (compile)
  12. [INFO] │  ├─ io.quarkus:quarkus-core-deployment:jar:2.7.1.Final (compile)
  13. [INFO] │  │  ├─ org.aesh:readline:jar:2.2 (compile)
  14. [INFO] │  │  │  └─ org.fusesource.jansi:jansi:jar:1.18 (compile)
  15. [INFO] │  │  ├─ org.aesh:aesh:jar:2.6 (compile)
  16. [INFO] │  │  ├─ org.apache.commons:commons-lang3:jar:3.12.0 (compile)
  17. [INFO] │  │  ├─ org.wildfly.common:wildfly-common:jar:1.5.4.Final-format-001 (compile)
  18. ...
复制代码
离线构建(go-offline)


  • 先回顾一个maven命令mvn dependency:go-offline,其作用是预先下载所有依赖库到本地,这样构建的时候就算没有网络,也能成功构建
  • 但是对于quarkus应用,因为quarkus扩展组件(extensions)不能被maven识别和处理,因此无法分析出这些quarkus扩展组件的依赖库,导致mvn dependency:go-offline命令无法下载这些依赖库
  • 为了解决上述问题,建议使用mvn quarkus:go-offline命令,此命令会分析扩展组件的依赖项,然后下载缓存到本地
更多信息

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表