强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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 命令对比

操作MavenGradle
清理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")
}

⚠️ 注意事项

  1. 始终使用 Gradle Wrapper — 避免版本不一致。
  2. Kotlin DSL 优于 Groovy — 类型安全,IDE 支持更好。
  3. 构建缓存 — 启用 --build-cache 加速重复构建。
  4. Gradle Daemon — 默认启用,保持后台进程加速构建。

💡 技巧

  1. 版本目录(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)
    }
    
  2. 构建扫描

    ./gradlew build --scan
    
  3. 并行构建

    # gradle.properties
    org.gradle.parallel=true
    org.gradle.caching=true
    org.gradle.jvmargs=-Xmx2g
    

🏢 业务场景

  • Android 开发 — Gradle 是 Android 官方构建工具。
  • 微服务多模块 — Gradle 的增量编译和构建缓存在大型项目中优势明显。
  • 自定义构建逻辑 — Gradle 的灵活性适合复杂构建需求。

📖 扩展阅读