Java 完全指南 / 21 - Gradle:构建脚本、依赖管理、多项目构建
21 - Gradle:构建脚本、依赖管理、多项目构建
Groovy DSL 构建脚本
// build.gradle
plugins {
id 'java'
id 'application'
id 'org.springframework.boot' version '3.2.0'
}
group = 'com.example'
version = '1.0.0'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
// 私服
maven { url 'https://nexus.example.com/repository/public/' }
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.google.guava:guava:33.0.0-jre'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
application {
mainClass = 'com.example.Application'
}
test {
useJUnitPlatform()
}
Kotlin DSL(推荐)
// build.gradle.kts
plugins {
java
application
id("org.springframework.boot") version "3.2.0"
}
group = "com.example"
version = "1.0.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
application {
mainClass.set("com.example.Application")
}
tasks.test {
useJUnitPlatform()
}
常用命令
# 构建
./gradlew build # 完整构建
./gradlew clean build # 清理后构建
./gradlew assemble # 只打包,不测试
./gradlew check # 只检查(含测试)
# 运行
./gradlew run # 运行应用
./gradlew bootRun # Spring Boot 运行
# 测试
./gradlew test # 运行测试
./gradlew test --tests "*.UserServiceTest" # 指定测试类
# 依赖
./gradlew dependencies # 依赖树
./gradlew dependencies --configuration compileClasspath
# 其他
./gradlew tasks # 查看可用任务
./gradlew wrapper --gradle-version=8.7 # 更新 wrapper
Gradle vs Maven 命令对比
| 操作 | Maven | Gradle |
|---|---|---|
| 清理 | mvn clean | ./gradlew clean |
| 编译 | mvn compile | ./gradlew compileJava |
| 测试 | mvn test | ./gradlew test |
| 打包 | mvn package | ./gradlew assemble |
| 安装 | mvn install | ./gradlew publishToMavenLocal |
| 依赖树 | mvn dependency:tree | ./gradlew dependencies |
多项目构建
root-project/
├── settings.gradle.kts
├── build.gradle.kts
├── common/
│ ├── build.gradle.kts
│ └── src/
├── service/
│ ├── build.gradle.kts
│ └── src/
└── web/
├── build.gradle.kts
└── src/
// settings.gradle.kts
rootProject.name = "my-multiproject"
include("common", "service", "web")
// 根 build.gradle.kts
subprojects {
apply(plugin = "java")
group = "com.example"
version = "1.0.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
repositories {
mavenCentral()
}
}
// web/build.gradle.kts
plugins {
id("org.springframework.boot")
}
dependencies {
implementation(project(":common"))
implementation(project(":service"))
implementation("org.springframework.boot:spring-boot-starter-web")
}
自定义任务
// 自定义任务
tasks.register("hello") {
group = "custom"
description = "打印问候"
doLast {
println("Hello from Gradle!")
}
}
// 任务依赖
tasks.register("greet") {
dependsOn("hello")
doLast {
println("Greet task after hello")
}
}
// 类型化任务
tasks.register<Copy>("copyDocs") {
from("docs")
into("build/docs")
include("**/*.md")
}
⚠️ 注意事项
- 始终使用 Gradle Wrapper — 避免版本不一致。
- Kotlin DSL 优于 Groovy — 类型安全,IDE 支持更好。
- 构建缓存 — 启用
--build-cache加速重复构建。 - Gradle Daemon — 默认启用,保持后台进程加速构建。
💡 技巧
版本目录(Version Catalog,Gradle 7+):
# gradle/libs.versions.toml [versions] spring-boot = "3.2.0" [libraries] spring-boot-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" }dependencies { implementation(libs.spring.boot.web) }构建扫描:
./gradlew build --scan并行构建:
# gradle.properties org.gradle.parallel=true org.gradle.caching=true org.gradle.jvmargs=-Xmx2g
🏢 业务场景
- Android 开发 — Gradle 是 Android 官方构建工具。
- 微服务多模块 — Gradle 的增量编译和构建缓存在大型项目中优势明显。
- 自定义构建逻辑 — Gradle 的灵活性适合复杂构建需求。