我如何告诉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版本)。
任何答案表示赞赏,我感谢每一个提示正确的方向。
两种方式
-
在
gradle.properties
的.gradle
目录下的HOME_DIRECTORY
设置org.gradle.java.home=/path_to_jdk_directory
-
在你的
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
- Gradle中的transitive = true究竟是做什么的(关于crashlytics)?
- Android在Android Studio中使用新名称复制现有项目
- 如何将附加date生成到gradle上的versionNameSuffix
- 在intellij IDEA中使用gradle构build获取gradle依赖关系
- Android工作室在真实设备上运行应用程序后添加了不需要的许可
- Android Studio:找不到id为'android-library'的插件
- 无法find方法android()的参数
- android studio 0.4.2:Gradle项目同步失败的错误
- 错误:(1,0)未findGradle DSL方法:'android()'