Gradle 6.7 以降で Java ツールチェーンを利用できるようになりました。Java ツールチェーンを使うことで、要件に合う JRE/JDK を自動検出し、見つからない場合には自動的にダウンロードしてビルドすることができます。
build.gradle.kts(build.gradle) に以下のように指定します。
Kotlin DSL
java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
Groovy DSL
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
buildSrc/src/main/kotlin/myproject.java-conventions.gradle.kts
などに指定することで、プロジェクト全体に設定することもできます。
Gradle が検出したツールチェーンのリストは以下のように表示することができます
$ ./gradlew -q javaToolchains
ベンダの指定
ベンダを指定する場合は以下のようにします。
Kotlin DSL
java { toolchain { languageVersion.set(JavaLanguageVersion.of(11)) vendor.set(JvmVendorSpec.ADOPTIUM) } }
Groovy DSL
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
vendor = JvmVendorSpec.ADOPTIUM
}
}
特定タスクのJavaバージョン指定
Kotlin DSL
tasks.register<JavaExec>("runOn14") { javaLauncher.set(javaToolchains.launcherFor { languageVersion.set(JavaLanguageVersion.of(14)) }) classpath = sourceSets["main"].runtimeClasspath mainClass.set(application.mainClass) }
Groovy DSL
task('runOn14', type: JavaExec) { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(14) } classpath = sourceSets.main.runtimeClasspath mainClass = application.mainClass }