第一章:Gradle vs Maven,该知道的差异

📅 2026/7/7 17:57:40 👁️ 阅读次数 📝 编程学习
第一章:Gradle vs Maven,该知道的差异

1.1 一句话结论

Gradle 用代码写配置,Maven 用 XML 写配置。Gradle 更快、更简洁,代价是刚开始不太顺手。


1.2 配置文件对比

Maven:一个pom.xml(XML,只能描述,不能写逻辑)

Gradle:两个文件:

  • settings.gradle:写项目名,多模块时列子模块
  • build.gradle:主配置,替代pom.xml

本项目pom.xml有 281 行,迁移后build.gradle约 90 行。


1.3 直接对照:最常见的改法

你在 Maven 里写的在 Gradle 里怎么写
<groupId>com.own</groupId>group = 'com.own'
<version>1.0</version>version = '1.0'
<packaging>war</packaging>plugins { id 'war' }
<parent> spring-boot-starter-parent </parent>plugins { id 'org.springframework.boot' version '...' }
<properties><java.version>1.8</java.version>sourceCompatibility = '1.8'
<dependency>...</dependency>implementation '...'
<scope>provided</scope>compileOnlyprovidedRuntime
<scope>test</scope>testImplementation
<optional>true</optional>compileOnly+annotationProcessor
mvn clean package -DskipTestsgradle clean build -x test
mvn spring-boot:rungradle bootRun

1.4 为什么 Gradle 快?

三件事:

  1. 增量构建:文件没改过的模块直接跳过,不重新编译
  2. 构建缓存gradle clean之后再 build,命中缓存的任务不重跑
  3. Daemon 进程:JVM 常驻内存,不用每次冷启动

Maven 每次clean package都是从头跑,这是本质差距。


1.5 Scope 对照(重点)

Maven scopeGradle 写法说明
默认(compile)implementation最常用
providedcompileOnly(库)/providedRuntime(WAR)不打入包
runtimeruntimeOnly如 JDBC 驱动
testtestImplementation
optional=truecompileOnly+annotationProcessor如 Lombok

1.6 不用纠结的事

  • Groovy DSL vs Kotlin DSL:用 Groovy(.gradle文件),网上资料多,够用
  • Gradle 版本:本项目 Java 8 + Spring Boot 2.x,用 Gradle 7.6.4 稳
  • 目录结构src/main/javasrc/main/resources完全不用动