Gradle构建Java项目指南


Gradle是一个基于Groovy/Kotlin DSL的现代化构建工具,相比Maven更加灵活高效。以下是使用Gradle构建Java项目的全面指南。

基础项目结构

标准的Gradle Java项目结构如下:

my-java-project/
├── build.gradle      // 构建脚本
├── settings.gradle   // 项目设置文件
├── gradle.properties // Gradle属性配置
├── gradlew           // Gradle包装器脚本(Unix)
├── gradlew.bat       // Gradle包装器脚本(Windows)
└── src/
    ├── main/
    │   ├── java/     // 主Java源代码
    │   └── resources // 主资源文件
    └── test/
        ├── java/     // 测试Java代码
        └── resources // 测试资源文件

基础构建脚本 (build.gradle)

plugins {
    id 'java' // 应用Java插件
}

group 'com.example'
version '1.0.0'

repositories {
    mavenCentral() // 使用Maven中央仓库
}

dependencies {
    // 实现依赖(编译+运行时)
    implementation 'org.apache.commons:commons-lang3:3.12.0'

    // 仅编译时需要的依赖
    compileOnly 'org.projectlombok:lombok:1.18.24'
    annotationProcessor 'org.projectlombok:lombok:1.18.24'

    // 测试依赖
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
}

test {
    useJUnitPlatform() // 使用JUnit5
}

依赖管理

依赖配置

Gradle的依赖配置比Maven更细粒度:

  • implementation – 项目主代码的编译和运行时依赖
  • compileOnly – 仅编译时需要
  • runtimeOnly – 仅运行时需要
  • testImplementation – 测试代码的编译和运行时依赖
  • testCompileOnly – 测试代码仅编译时需要
  • testRuntimeOnly – 测试代码仅运行时需要
  • annotationProcessor – 注解处理器

依赖版本管理

推荐使用libs.versions.toml统一管理版本(新特性):

  1. gradle目录下创建libs.versions.toml文件
[versions]
junit = "5.9.3"
lombok = "1.18.28"

[libraries]

junit-bom = { module = “org.junit:junit-bom”, version.ref = “junit” } junit-jupiter = { module = “org.junit.jupiter:junit-jupiter”, version.ref = “junit” } lombok = { module = “org.projectlombok:lombok”, version.ref = “lombok” }

  1. 在build.gradle中引用:
dependencies {
    implementation(libs.junit.jupiter)
    compileOnly(libs.lombok)
    annotationProcessor(libs.lombok)
}

多模块项目

  1. settings.gradle中定义子模块:
rootProject.name = 'my-multi-project'
include 'core', 'web', 'data'
  1. 子模块的build.gradle示例:
plugins {
    id 'java-library' // 库模块使用java-library插件
}

dependencies {
    api project(':core') // 暴露core模块的API
    implementation project(':data') // 内部实现依赖
}

常用任务

  • 编译项目:./gradlew build
  • 运行测试:./gradlew test
  • 清理构建:./gradlew clean
  • 生成IDE项目文件:./gradlew eclipse./gradlew idea
  • 查看依赖树:./gradlew dependencies
  • 检查依赖更新:./gradlew dependencyUpdates

自定义构建

自定义任务

task printVersion {
    doLast {
        println "Project version: ${version}"
    }
}

自定义属性

gradle.properties中:

org.gradle.jvmargs=-Xmx2g
org.gradle.parallel=true

或在build.gradle中:

ext {
    springVersion = '5.3.23'
}

dependencies {
    implementation "org.springframework:spring-core:$springVersion"
}

构建缓存与性能优化

  1. 启用构建缓存:
buildCache {
    local {
        directory = new File(rootDir, 'build-cache')
        removeUnusedEntriesAfterDays = 30
    }
}
  1. 并行构建:
# gradle.properties
org.gradle.parallel=true
org.gradle.caching=true

与Maven的比较优势

  1. 更快的构建速度(增量构建更智能)
  2. 更灵活的DSL配置
  3. 更好的多项目构建支持
  4. 丰富的插件生态系统
  5. 支持Kotlin DSL(替代Groovy)

迁移建议

如果从Maven迁移到Gradle:

  1. 使用gradle init命令生成基础构建文件
  2. 逐步迁移依赖配置
  3. 保持Maven构建文件直到Gradle构建稳定
  4. 利用Gradle的兼容性特性(如Maven Publish插件)

Gradle的灵活性和性能优势使其成为现代Java项目的首选构建工具,特别是对于大型复杂项目。

,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注