Appearance
Toolchain 工具链
Java Toolchain 允许精确指定构建和运行时使用的 JDK 版本,即使构建机器上安装的 JDK 版本不同。
基本配置
kotlin
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}Gradle 会自动发现系统上已安装的 JDK,找不到时自动从 Eclipse Adoptium 下载。
指定 JDK 供应商
kotlin
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
vendor.set(JvmVendorSpec.ADOPTIUM) // Eclipse Temurin
// vendor.set(JvmVendorSpec.AMAZON) // Amazon Corretto
// vendor.set(JvmVendorSpec.BELLSOFT) // Liberica
// vendor.set(JvmVendorSpec.GRAAL_VM) // GraalVM
}
}针对特定任务配置 JDK
kotlin
// 使用特定 JDK 版本编译
tasks.named<JavaCompile>("compileJava") {
javaCompiler.set(javaToolchains.compilerFor {
languageVersion.set(JavaLanguageVersion.of(21))
})
}
// 使用特定 JDK 版本运行测试
tasks.named<Test>("test") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(17))
})
}查看可用 JDK
bash
# 查看 Gradle 发现的 JDK
./gradlew -q javaToolchains
# 输出示例:
# + Options
# | Auto-detection: Enabled
# | Auto-download: Enabled
#
# + Eclipse Adoptium JDK 17.0.9+9 (x86_64)
# | Location: /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
# | Language Version: 17
# | Vendor: Eclipse Adoptium
#
# + Oracle JDK 21+35 (x86_64)
# | Location: /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
# | Language Version: 21
# | Vendor: Oracle在 CI 中使用 Toolchain
yaml
# .github/workflows/build.yml
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Build
run: ./gradlew build
# Gradle 自动发现 setup-java 安装的 JDK禁用自动下载
properties
# gradle.properties
org.gradle.java.installations.auto-download=false下一步
- 性能调优 - 综合性能优化
- Jenkins 集成 - CI/CD 配置