我如何告诉Gradle使用特定的JDK版本?

我无法弄清楚这个工作。

场景:

  • 我有一个用gradle构build的应用程序
  • 该应用程序使用JavaFX

我想要的是

  • 使用一个variables(定义为每个开发人员的机器),它指向一个JDK的安装,将用于构build整个应用程序/testing/ …

我想过gradle.properties文件,定义variables。 就像是

 JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK> 

我不想要的

  • JAVA_HOME指向所需的JDK

我可以忍受很多build议:

  • 一个解决scheme,它定义了一个系统环境variables,我可以检查我的build.gradle脚本
  • 一个在gradle.properties中定义的variables
  • 只为构build上下文重写JAVA_HOMEvariables(类似于use JAVA_HOME=<my special JDK path defined somewhere else defined>
  • 别的东西,我没有想过

题:

  • 如何将一个variables(如何定义,作为gradle.properties ,系统环境variables中的variables)连接到构build过程?

我有多个JDK7可用,需要指向特殊版本(最低JDK_u版本)。

任何答案表示赞赏,我感谢每一个提示正确的方向。

两种方式

  1. gradle.properties.gradle目录下的HOME_DIRECTORY设置org.gradle.java.home=/path_to_jdk_directory

  2. 在你的build.gradle

     compileJava.options.fork = true compileJava.options.forkOptions.executable = /path_to_javac 

如果在gradle.properties中添加JDK_PATH, 您的构build将依赖于该特定path。 而是使用以下命令行参数运行gradle任务

 gradle build -Dorg.gradle.java.home=/JDK_PATH 

这样你的构build不依赖于一些具体的path。

当searchMaven属性maven.compiler.source (或<source>1.8</source> )的Gradle等价物时,

在build.gradle你可以用这个来实现

 apply plugin 'java' sourceCompatibility = 1.6 targetCompatibility = 1.6 

请参阅Gradle文档 。

如果您使用的是Linux和Gradle包装器,则可以使用以下解决scheme。

添加到local.properties文件的path:

 javaHome=<path to JDK> 

添加到您的gradlew脚本文件:

 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) source $DIR/local.properties 2>/dev/null if ! [ -z "$javaHome" ] then JAVA_HOME=$javaHome fi 

在这个解决scheme中,每个开发者都可以设置他自己的JDKpath。 文件local.properties不应该包含在版本控制系统中。

在Gradle(Eclipse插件)中看到,

http://www.gradle.org/get-started

Gradle使用它在您的path中find的任何JDK(检查,使用java -version)。 或者,您可以将JAVA_HOME环境variables设置为指向所需JDK的安装目录。


如果您使用的是Eclipse插件或Enide Studio 2014 ,则使用替代JAVA_HOME(在Preferences中设置)将使用0.15版本,请参阅http://www.nodeclipse.org/history

我在我的GRADLE_HOME / bin / gradle文件中添加了这一行 – export JAVA_HOME=/path/to/java/version

我正在使用Gradle 4.2。 默认的JDK是Java 9.在Java 9的早期阶段,Gradle 4.2在JDK 8上正确运行(不是JDK 9)。

我像这样手动设置JDK,在文件%GRADLE_HOME%\bin\gradle.bat

 @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME%.. @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @rem VyDN-start. set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\ @rem VyDN-end. set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @rem VyDN-start. set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\ @rem VyDN-end. set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\lib\gradle-launcher-4.2.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega