在用户 gradle.properties 中设置 JDK 主页(javac 路径)

Set JDK home (javac path) in user's gradle.properties

我需要在我的 gradle 项目中指定 javac 的路径。我可以通过将以下内容添加到我的 build.gradle 文件来做到这一点:

options.forkOptions.executable = '/home/mj/lib/jdk1.7.0_80/bin/javac'

问题是该文件在我们的存储库中共享,我不希望将设置推送到那里。我试着把它放在我本地的 gradle.properties 文件中,但是没有用。设置 gradle.java.home 也不会影响这一点。我猜这是因为 gradle 对 java 使用 gradle.java.home 而不是 javac,对吧?我也(绝望地)尝试设置一个 gradle.jdk.home ,这(毫不奇怪)也没有用!

有没有项目外的地方被build.gradle收录了?

在你的gradle.properties中:

javacPath=/home/mj/lib/jdk1.7.0_80/bin/javac

在你的build.gradle

options.forkOptions.executable = project.property('javacPath')

使用相对于 "java.home" 的路径对我们有用。不优雅,但这不需要其他设置。我们首先需要它的原因是我们使用 JDK 构建,它是工作副本的一部分,而不是预安装 Jenkins slave。我们在从机上没有 javac/JDK,只有 运行 Jenkins 从机的 JRE。我们在工作副本中的gradlew指向它旁边的JDK.

compileJava {
  options.fork = true
  options.forkOptions.executable = "${System.properties['java.home']}/../bin/javac"
}

(注意:在Java 运行时,java.home指向JDK中的$JAVA_HOME/jre文件夹。也就是下面那个JAVA_HOME环境变量指向。)

它将于 2021 年底结束,现在有一种更简单的方法。在项目的根目录中,将以下内容添加到 gradle.properties 文件(如果文件不存在,也添加该文件):

org.gradle.java.home=path/to/jdk