Gradle 配置方法

FreeGuideOnline 最新 2026-07-14

bash

安装 SDKMAN!

curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh"

安装最新版 Gradle

sdk install gradle


#### 方式二:手动下载并配置

1. 访问 [Gradle 官方下载页](https://gradle.org/releases/),选择 **binary-only** 版本下载。
2. 解压到目标目录,例如 `/opt/gradle` 或 `C:\Gradle`。
3. 将 `bin` 目录添加到系统 `PATH` 环境变量中:

   - **Linux / macOS**:在 `~/.bashrc` 或 `~/.zshrc` 中追加
     ```bash
     export GRADLE_HOME=/opt/gradle/gradle-8.10
     export PATH=$GRADLE_HOME/bin:$PATH
     ```
   - **Windows**:
     - 新建系统变量 `GRADLE_HOME`,值为解压路径(如 `C:\Gradle\gradle-8.10`)
     - 在 `Path` 变量中添加 `%GRADLE_HOME%\bin`

4. 验证安装:
   ```bash
   gradle -v

看到 Gradle 版本和 JVM 信息即表示安装成功。

2. 永远优先使用 Gradle Wrapper

实际项目中我们几乎不会直接使用系统安装的 Gradle,而是通过 Gradle Wrapper 来统一构建版本。Wrapper 会为项目绑定一个特定版本的 Gradle,并自动下载。

如果你用 gradle init 创建项目,Wrapper 会自动生成。也可以为现有项目手动添加:

gradle wrapper --gradle-version 8.10

执行后会生成以下核心文件:

  • gradlew (Unix) / gradlew.bat (Windows):可执行入口
  • gradle/wrapper/gradle-wrapper.properties:定义 Gradle 版本和下载地址

从此所有构建命令都用 ./gradlew 替代全局 gradle,确保团队成员使用一致的构建环境。

3. 项目的核心:build.gradle 文件

Gradle 支持 Groovy DSL 和 Kotlin DSL 两种脚本语言,本教程以更常见的 Groovy DSL 为例(文件名为 build.gradle)。

3.1 基本项目结构

一个典型的 Java 项目结构如下:

my-project/
├── build.gradle
├── settings.gradle
├── gradlew
├── gradle/
│   └── wrapper/
├── src/
│   ├── main/
│   │   ├── java/
│   │   └── resources/
│   └── test/
│       ├── java/
│       └── resources/

settings.gradle 用于定义项目名称和包含的子项目,单模块项目只需一行:

rootProject.name = 'my-app'

3.2 最简单的 build.gradle

plugins {
    id 'java'
}

group = 'com.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
}

tasks.named('test') {
    useJUnitPlatform()
}

这就是一个能够编译、运行测试的 Java 项目配置。下面我们逐一拆解各个配置块。

4. 仓库配置(Repositories)

Gradle 从仓库中下载依赖,常用仓库有 Maven Central、Google Maven 和自定义私服。

repositories {
    mavenCentral()               // 中央仓库
    google()                     // Android 等 Google 库仓库
    maven { 
        url 'https://repo.example.com/maven' 
        credentials {
            username = 'deployer'
            password = 'secret'
        }
    }
}

对于企业级项目,通常会在 gradle.properties 或环境变量中管理凭证,避免硬编码。

5. 依赖管理(Dependencies)

依赖配置是 Gradle 中最常用的功能。完整的依赖声明格式为:

configuration "group:name:version"

常用配置(作用域):

  • implementation:编译期和运行期均需的依赖,但不会暴露给消费者的编译类路径
  • api:类似于 implementation,但会把依赖暴露给消费者(多用于库项目)
  • compileOnly:仅在编译时需要,运行时不包含
  • runtimeOnly:仅在运行时需要
  • testImplementation:用于测试编译和执行

示例:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:3.3.0'
    compileOnly 'org.projectlombok:lombok:1.18.32'
    annotationProcessor 'org.projectlombok:lombok:1.18.32'
    runtimeOnly 'com.h2database:h2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

也可以通过文件树、本地 jar 包等方式引入依赖:

implementation files('libs/custom.jar')
implementation fileTree(dir: 'libs', include: ['*.jar'])

6. 插件配置(Plugins)

插件扩展 Gradle 的能力,例如 java 插件提供 Java 编译任务,application 插件提供可执行应用打包。

使用 plugins 块声明插件(推荐):

plugins {
    id 'java'
    id 'application'
    id 'org.springframework.boot' version '3.3.0'
    id 'io.spring.dependency-management' version '1.1.5'
}

老项目仍可能见到 apply plugin 写法:

apply plugin: 'java'
apply plugin: 'eclipse'

对于第三方插件,必须指定版本号(官方插件可省略版本)。

7. 常用配置示例

7.1 Java 项目(含编译选项)

plugins {
    id 'java'
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
    // 或统一写法
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = 'UTF-8'
    options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
}

7.2 Spring Boot 项目

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.0'
    id 'io.spring.dependency-management' version '1.1.5'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

无需额外配置主类,bootJar 任务会自动生成可执行 jar。

7.3 Kotlin 项目

需要将脚本切换为 Kotlin DSL(build.gradle.kts)或继续使用 Groovy DSL 但应用 Kotlin 插件:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.9.24'
    id 'application'
}

group = 'com.example'
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    implementation platform('org.jetbrains.kotlin:kotlin-bom')
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    testImplementation 'org.jetbrains.kotlin:kotlin-test'
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(17))
    }
}

8. 多模块项目配置

多模块项目结构:

root/
├── build.gradle
├── settings.gradle
├── module-a/
│   └── build.gradle
├── module-b/
│   └── build.gradle

根 settings.gradle

rootProject.name = 'my-multi-module'
include 'module-a', 'module-b'

根 build.gradle 用于统一配置:

plugins {
    id 'java'
}

allprojects {
    group = 'com.example'
    version = '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
    }
}

subprojects {
    apply plugin: 'java'
    java {
        toolchain { languageVersion = JavaLanguageVersion.of(17) }
    }
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
    }
    test {
        useJUnitPlatform()
    }
}

子模块 build.gradle 只需声明特有依赖及模块间依赖:

dependencies {
    implementation project(':module-a')
    implementation 'com.google.guava:guava:33.0.0-jre'
}

9. 配置环境变量与全局属性

gradle.properties 文件

在项目根目录或用户目录(~/.gradle/gradle.properties)中可定义全局属性:

# JVM 参数
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
# 使用并行构建
org.gradle.parallel=true
# 代理设置
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
# 自定义属性
myAppVersion=1.2.3

在 build.gradle 中引用:

version = myAppVersion