我需要在gradle项目中指定javac
的路径。我可以通过在build.gradle
文件中添加以下内容来完成此操作:
options.forkOptions.executable = '/home/mj/lib/jdk1.7.0_80/bin/javac'
问题是这个文件在我们的存储库中共享,我不想让设置被推到那里。我尝试将其放在我的本地gradle.properties
文件中,但它没有用。同时设置gradle.java.home
不会影响这一点。我想这是因为gradle使用gradle.java.home
代表java
而不代表javac
,对吧?我也(绝望地)尝试设置一个gradle.jdk.home
(毫不奇怪)也没有工作!
build.gradle中是否包含项目外的任何地方?
答案 0 :(得分:5)
在你的gradle.properties中:
javacPath=/home/mj/lib/jdk1.7.0_80/bin/javac
在你的build.gradle中
options.forkOptions.executable = project.property('javacPath')
答案 1 :(得分:2)
使用相对于“java.home”的路径对我们有用。不优雅,但这不需要另外设置。我们首先需要这个的原因是我们使用JDK构建,它是工作副本的一部分,而不是预装Jenkins slave。我们在slave上没有javac / JDK,只是运行Jenkins slave的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
环境变量指向的下面的文件夹。)