为何Quarkus CLI默认采用Maven Wrapper而非Gradle等构建工具?
Quarkus 选择 Maven Wrapper 作为 CLI 创建项目的默认构建系统,核心是基于生态兼容性、构建稳定性和入门友好性等技术层面的考量,具体原因如下:
Java 生态的广泛兼容性:Maven 是 Java 生态中普及度最高的构建工具之一,绝大多数 Java 开发者都熟悉其「约定大于配置」的模式。Quarkus 早期的核心功能(如原生镜像构建、扩展管理)都是基于 Maven 插件体系开发的,Maven 的插件生态更成熟,能更好地支撑 Quarkus 复杂的构建流程。
零环境依赖的一致性:Maven Wrapper 允许用户无需预先安装 Maven,直接通过项目内的
./mvnw(或mvnw.cmd)命令执行构建,确保所有开发者使用相同版本的 Maven,避免因本地 Maven 版本差异导致的构建失败。这一点对于团队协作和新手入门尤为重要。构建流程的可预测性:Maven 的声明式配置(
pom.xml)相比 Gradle 的脚本式 DSL(Groovy/Kotlin),具有更强的确定性。Quarkus 的 dev 模式、打包流程、原生镜像构建等操作需要严格的流程控制,Maven 的约定式配置能减少自定义脚本带来的不确定性,降低构建出错的概率。扩展体系的深度整合:Quarkus 的扩展机制大量依赖 Maven 插件实现,比如
quarkus-maven-plugin提供了 dev 模式启动、应用打包、原生镜像构建等核心能力。早期 Quarkus 团队在 Maven 插件上的投入更多,确保了核心功能的稳定性和完善度,Gradle 插件是后续适配的,因此默认选择 Maven Wrapper 能让用户获得最成熟的核心功能支持。社区与文档的广泛覆盖:由于 Maven 在 Java 社区的主导地位,Quarkus 的官方文档、教程、社区案例大多以 Maven 为示例,新用户更容易找到学习资源,降低入门门槛。
需要说明的是,Quarkus 完全支持 Gradle 作为构建工具,你可以在 CLI 创建项目时通过 --gradle 或 --gradle-kotlin-dsl 参数切换,只是 Maven Wrapper 作为默认选项更符合多数 Java 开发者的使用习惯和框架的技术选型历史。
内容的提问来源于stack exchange,提问作者Rafêl Ferreira

