Gradle需要JDK来编译Java源文件吗?还是使用自己的内部编译器?
提前致谢。
简短版: JRE 用于安装和运行,Groovy 构建脚本由 Gradle 自己的编译器编译,JDK 用于 Java 源代码编译。
详细版: 有几个需要注意的点:
1) 安装和运行
为了安装 Gradle 和运行 Gradle 构建,您需要 JDK 或 JRE,其版本至少为 7。
Gradle 主要使用 Groovy 作为语言,但它附带了自己的库并忽略任何其他已安装的 Groovy 库。因此,编译器是 Gradle 附带的 Groovy 库中的 Groovy 编译器。
顺便说一下,您也可以使用 Kotlin 来编写构建脚本,如此处所述。当然,这涉及到 Kotlin 编译器。
您可以通过运行 gradle -v
来检查 JVM 版本。
这意味着在安装过程中将使用在 JAVA_HOME
中配置的运行时。
对于运行构建也是如此,除非您在 gradle.properties
中使用以下属性 org.gradle.java.home
显式地覆盖了 JAVA_HOME
。该属性和其他属性在此处定义。
JAVA_HOME
可以指向 JDK 或 JRE。在这种情况下,只需要安装 JRE 就足够了。
2) 源代码编译
为避免混淆,源代码意味着您有一个用语言编写的项目源代码,需要将其编译成字节码。在上一个点中,实际编写的代码是实际的构建脚本代码,这是一件单独的事情,由 Gradle 编译和处理。
使用 Gradle 插件对源代码进行编译,无论是 java、groovy、kotlin 还是其他任何语言。
您可以使用java
插件或较新的java-library
插件来编译 Java 源代码。这两者类似。
将使用在 JAVA_HOME
中配置的 JDK,或者可以在 gradle.properties
中使用以下属性 org.gradle.java.home
显式地定义。
对于此情况,JAVA_HOME
需要指向 JDK 而不是 JRE。
sourceCompatibility
- 编译Java源代码时使用的Java版本兼容性
- targetCompatibility
- 生成类的Java版本