本教程讲述了在gradle项目中配置java版本的不同方法。
在java项目中,源项目被编译并生成类文件。
在Gradle中,对于java插件,我们需要在build gradle中提供java版本来编译和生成类文件。
构建gradle项目和运行gradle build需要安装Java。
如何在gradle build中配置源码和目标jdk版本
为了编译java文件,我们使用javac命令,它有源码和目标参数的javac命令
javac Emp.java -source 1.9 -target 1.8
source 告诉编译器要用特定的版本进行编译 告诉编译器要支持最低的java版本。target
在上面的程序中,Emp.java代码是用java 1.9版本编译的,生成的类文件可与1.8或以上的版本兼容,但不能与1.7或以下的版本兼容。
gradle是否支持这种属性?是的,它用不同的属性支持同样的方法。
它有sourceCompatibility和targetCompatibility属性。
所以build.gradle中的configure
sourceCompatibility = '1.10'
targetCompatibility = '1.8'
sourceCompatibility 使用java版本来编译java文件 targetCompatibility告诉生成的类支持的最小java版本。
这个选项使所有的任务都能以特定的版本运行。
假设你希望每个任务都有不同的版本,你可以按以下方式配置构建脚本
tasks.withType {
options.compilerArgs.addAll(arrayOf("--release", "12"))
}
上面的脚本告诉我们在gradle项目中使用java 12版本来编译java文件。
如何用gradle build安装和配置java版本?
默认情况下,gradle使用机器上配置的JAVA_HOME环境变量路径中的java版本,JAVA_HOME指向机器上安装的jdk。
例如,机器安装的是jdk 1.8版本,而gradle项目需要java 11版本。
在这种情况下,你该如何处理:
- 在机器上安装java 11版本,这很简单。
- Gradle项目有配置来安装所需的java版本和配置。
你如何配置gradle build与java的安装和配置?
在Gradle 6.7版本中,它支持java工具链。
java工具链是做什么的?
- 它忽略了机器上的java版本
- 在builg文件中,配置java版本
- 如果没有安装jdk,它就会安装
- Gradle构建时使用该版本。
sourceCompatibility和targetCompatibility属性不需要配置。
如何在gradle项目中配置java工具链?
- 首先配置java-library的插件
- 接下来,配置工具链,使用所需的java版本
在build.gradle文件中,配置以下代码
plugins {
id("java-library") // id("application")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(12))
}
}
所以gradle做了以下事情
- 从远程位置安装java 12个版本,位置可以是可配置的
- 检查是否有效安装
- 所有与java相关的任务都使用java 12版本进行编译并生成类文件。
- 所有测试相关的任务都使用java 12版本
- 与文档有关的任务使用java 12版本。
它可以灵活地在任务层面配置java版本。
例如,配置java编译需要12版本,测试需要15版本。
tasks.register("extraTests") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(15))
})
}
总结
在本教程中,你学到了配置java版本的不同方法
- 使用build.gradle中的sourceCompatibility和targetCompatibility选项
- java工具链支持
通过以上两个选项,你可以选择在项目级或任务级使用不同的java版本,具体例子如下