java désinstaller - Comment puis-je dire à Gradle d'utiliser une version spécifique de JDK?





mac specify (8)


J'ai ajouté cette ligne dans mon fichier GRADLE_HOME / bin / gradle - export JAVA_HOME=/path/to/java/version

Je ne peux pas comprendre pour que cela fonctionne.

Scénario:

  • J'ai une application construite avec Gradle
  • L'application utilise JavaFX

Ce que je veux

  • Utiliser une variable (définie par machine de développement) qui pointe vers une installation d'un JDK qui servira à construire l'ensemble de l'application / tests / ...

J'ai pensé à avoir le fichier gradle.properties , en définissant la variable. Quelque chose comme

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

Ce que je ne veux pas

  • pointez JAVA_HOME sur le JDK souhaité

Je pourrais vivre avec beaucoup de suggestions:

  • une solution qui définit une variable d'environnement système que je suis capable de vérifier dans mon script build.gradle
  • une variable définie dans gradle.properties
  • substituer la variable JAVA_HOME uniquement pour le contexte de construction (quelque chose comme use JAVA_HOME=<my special JDK path defined somewhere else defined> )
  • quelque chose d'autre que je ne pensais pas

Question:

  • Comment câbler une variable (quelle que soit définie, variable dans gradle.properties , variable d'environnement système, ...) dans le processus de construction?

J'ai plus d'un JDK7 disponible et j'ai besoin de pointer vers une version spéciale (version JDK_u minimum).

Toute réponse est appréciée et je suis reconnaissant pour chaque indice dans la bonne direction.




J'utilise Gradle 4.2. Le JDK par défaut est Java 9. Au début de Java 9, Gradle 4.2 fonctionne correctement sur JDK 8 (pas sur JDK 9).

J'ai mis JDK manuellement comme ceci, dans le fichier %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



Deux façons

  1. Dans gradle.properties dans le répertoire .gradle de votre HOME_DIRECTORY définissez org.gradle.java.home=/path_to_jdk_directory

  2. Dans votre build.gradle

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



Il y a une autre option à suivre. Dans vos tâches de gradation, vous pouvez définir votre chemin jdk désiré. (Je sais que cela fait un moment que la question a été postée, cette réponse peut aider quelqu'un.)

Faites un clic droit sur le déploiement ou toute autre tâche et sélectionnez "Open Gradle Run Configuration ..."

Ensuite, naviguez jusqu'à "Java Home" et collez le chemin java désiré.

Veuillez noter que bin sera ajouté par la tâche gradle elle-même. Donc, n'ajoutez pas le "bin" au chemin.







Si vous ajoutez JDK_PATH dans gradle.properties, votre build devient dépendant de ce chemin particulier. Au lieu d'exécuter la tâche gradle avec le paramètre de ligne de commande suivant

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

De cette façon, votre build ne dépend pas d'un chemin concret.




Si vous utilisez linux et le wrapper Gradle, vous pouvez utiliser la solution suivante.

Ajouter un chemin au fichier local.properties:

javaHome=<path to JDK>

Ajoutez à votre fichier de script gradlew:

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/local.properties 2>/dev/null

if ! [ -z "$javaHome" ]
then
  JAVA_HOME=$javaHome
fi

Dans cette solution, chaque développeur peut définir son propre chemin JDK. Le fichier local.properties ne doit pas être inclus dans le système de contrôle de version.




J'ai fait face à ce problème lorsque j'ai exécuté la commande suivante sur Ubuntu:

ionic build android

Pour résoudre ce problème, j'ai effectué les étapes suivantes:

ln -sf /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /usr/lib/jvm/default-java

Ajoutez JAVA_HOME à / etc / environment:

vi /etc/environment

Ajouter:

JAVA_HOME="/usr/lib/jvm/default-java"

Après l'enregistrement, lisez-le:

source /etc/environment

Enfin, vous pouvez exécuter la commande de construction.





java gradle build.gradle