web-dev-qa-db-ja.com

Gradleに特定のJDKバージョンを使用するように指示する方法

私はこれがうまくいくかどうかわからない。

シナリオ:

  • Gradleを使って構築したアプリケーションがあります
  • アプリケーションはJavaFXを使用

欲しいもの

  • アプリケーション全体/テスト/を構築するために使用されるJDKのインストールを指す変数(開発者のマシンごとに定義)を使用します。

私は変数を定義するgradle.propertiesファイルを持つことを考えました。何かのようなもの

Java_HOME_FOR_MY_PROJECT=<path to my desired JDK>

欲しくないもの

  • 目的のJDKをJava_HOMEに指定します。

私は多くの提案をもって生きることができました:

  • build.gradleスクリプトでチェックできるシステム環境変数を定義するソリューション
  • gradle.propertiesに定義された変数
  • ビルドコンテキストに対してのみJava_HOME変数をオーバーライドする(use Java_HOME=<my special JDK path defined somewhere else defined>のようなもの)
  • 私が考えていなかった何か他のもの

質問:

  • 変数(どのように定義されたか、gradle.propertiesの変数として、システム環境変数...など)をビルドプロセスに配線するにはどうすればいいですか?

私は1つ以上のJDK7が利用可能であり、特別なバージョン(最小のJDK_uバージョン)を指す必要があります。

どんな答えでも評価されます、そして私は正しい方向へのあらゆるヒントに感謝します。

206
bully

二通り

  1. gradle.propertiesセットの.gradleディレクトリのHOME_DIRECTORYorg.gradle.Java.home=/path_to_jdk_directory

または

  1. あなたのbuild.gradle

    compileJava.options.fork = true
    compileJava.options.forkOptions.executable = /path_to_javac
    
209
First Zero

gradle.propertiesにJDK_PATHを追加すると、ビルドはその特定のパスに依存するようになります。代わりに、次のコマンドラインパラメータを指定してgradle taskを実行します。

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

こうすればあなたの造りはある具体的な道に依存していない。

94
mirmdasif

GvenleのMavenプロパティmaven.compiler.source(または<source>1.8</source>)に相当するものを検索するときに、ここで終わる人は、

Build.gradleではこれを実現することができます

apply plugin: 'Java'
sourceCompatibility = 1.8
targetCompatibility = 1.8

これについては Gradleのドキュメントを見てください

70
Geert

グラドルラッパーを使用して実行している場合は、次のようにJDKパスを指定してコマンドを実行できます。

./gradlew -Dorg.gradle.Java.home=/jdk_path_directory

7
Vittal Pai

Linuxとグラドルラッパーを使用している場合は、次の解決策を使用できます。

Local.propertiesファイルにパスを追加します。

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

このソリューションでは、各開発者が独自のJDKパスを設定できます。ファイルlocal.propertiesをバージョン管理システムに含めないでください。

4
sylwano

従うべきもう1つのオプションがあります。グラドルタスクでは、目的のJDKパスを設定できます。 (質問が投稿されてからしばらく時間がかかることを私は知っています。この答えは誰かに役立つことがあります)

展開またはその他のタスクを右クリックして、[Open Gradle Run Configuration ...]を選択します。

enter image description here

次に「Java Home」に移動して、目的のJavaパスを貼り付けます。

enter image description here

Binはgradleタスク自身によって追加されることに注意してください。そのため、パスに "bin"を追加しないでください。

3
Kiran

この行を私のGRADLE_HOME/bin/gradleファイルに追加しました - export Java_HOME=/path/to/Java/version

3
Manoj

jDKを自動的にダウンロード/ブートストラップするGradleプラグインがあります。

https://plugins.gradle.org/plugin/com.github.rmee.jdk-bootstrap

WindowsではIDE統合はまだ必要なく、まともなシェルも必要ありません。

2
Remo Meier

Gradle(Eclipseプラグイン)に見られるように

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

Gradleはあなたのパスで見つかったJDKを使用します(チェックするにはJavaバージョンを使用します)。あるいは、目的のJDKのインストールディレクトリを指すようにJava_HOME環境変数を設定することもできます。


このEclipseプラグインまたは Enide Studio 2014 を使用している場合、使用する代替のJava_HOME(Preferencesで設定)はバージョン0.15です。 http:/を参照してください。 /www.nodeclipse.org/history

1
Paul Verest

特定のコマンドを実行するために一度設定したいだけであれば、

Java_HOME=/usr/lib/jvm/Java-11-Oracle/ gw build
0
JasonBodnar

Gradle 4.2を使っています。デフォルトのJDKはJava 9です。Java9の初期の頃は、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
0
Do Nhu Vy