Gradle 配置方法
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