IT story

Gradle에 특정 JDK 버전을 사용하도록하려면 어떻게해야합니까?

hot-time 2020. 4. 17. 08:25
반응형

Gradle에 특정 JDK 버전을 사용하도록하려면 어떻게해야합니까?


이 작업을 수행 할 수 없습니다.

대본:

  • gradle로 빌드 된 응용 프로그램이 있습니다
  • 응용 프로그램은 JavaFX를 사용합니다

내가 원하는 것

  • 전체 애플리케이션 / 테스트 / 빌드에 사용될 JDK 설치를 가리키는 변수 (개발자 시스템에 따라 정의 됨)를 사용하십시오.

gradle.properties변수를 정의하고 파일을 갖는 것에 대해 생각했습니다 . 같은 것

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

내가 원하지 않는 것

  • 지적 JAVA_HOME원하는 JDK에

나는 많은 제안으로 살 수 있습니다.

  • build.gradle 스크립트에서 확인할 수있는 시스템 환경 변수를 정의하는 솔루션
  • gradle.properties에 정의 된 변수
  • 빌드 컨텍스트에 대해서만 JAVA_HOME 변수를 대체합니다 (예 use JAVA_HOME=<my special JDK path defined somewhere else defined>:
  • 내가 생각하지 못한 다른 것

질문:

  • 변수를 ( gradle.properties시스템 환경 변수에 변수 로 정의 된 방법 ) 빌드 프로세스에 연결하는 방법은 무엇입니까?

사용 가능한 JDK7이 두 개 이상 있으며 특수 버전 (최소 JDK_u 버전)을 가리켜 야합니다.

모든 답변에 감사 드리며 올바른 방향에 대한 모든 힌트에 감사드립니다.


두 가지 방법

  1. 에서 gradle.properties에서 .gradle귀하의 디렉토리 HOME_DIRECTORY설정org.gradle.java.home=/path_to_jdk_directory

또는:

  1. 당신의 build.gradle

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

gradle.properties 에 JDK_PATH를 추가하면 빌드가 해당 특정 경로에 종속됩니다. 대신 다음 명령 줄 매개 변수를 사용하여 gradle 작업실행하십시오.

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

이렇게하면 빌드가 구체적인 경로에 의존하지 않습니다.


Maven 속성 maven.compiler.source(또는 <source>1.8</source>)에 해당하는 Gradle을 검색 할 때 여기에 끝나는 사람들에게 :

build.gradle에서는 다음을 통해이를 달성 할 수 있습니다

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

이에 대한 Gradle 설명서를 참조하십시오 .


gradle wrapper를 사용하여 실행하는 경우 다음과 같이 JDK 경로로 명령을 실행할 수 있습니다

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


GRADLE_HOME / bin / gradle 파일에이 줄을 추가했습니다. export JAVA_HOME=/path/to/java/version


Linux 및 gradle 래퍼를 사용하는 경우 다음 솔루션을 사용할 수 있습니다.

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버전 관리 시스템에 파일 을 포함해서는 안됩니다.


따라야 할 옵션이 하나 더 있습니다. gradle 작업에서 원하는 jdk 경로를 설정할 수 있습니다. (질문이 게시 된 지 얼마 안되어서 알고 있습니다.이 답변은 누군가를 도울 수 있습니다.)

배포 또는 다른 작업을 마우스 오른쪽 버튼으로 클릭하고 "Open Gradle Run Configuration ..."을 선택하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 "Java Home"으로 이동하여 원하는 Java 경로를 붙여 넣으십시오.

여기에 이미지 설명을 입력하십시오

bin은 gradle 작업 자체에 의해 추가됩니다. 따라서 경로에 "bin"을 추가하지 마십시오.


JDK를 자동으로 다운로드 / 부트 스트하는 Gradle 플러그인이 있습니다.

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

IDE 통합은 아직 없으며 Windows에는 알맞은 셸이 필요합니다.


Gradle (Eclipse 플러그인) 에서 볼 수 있듯이

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

Gradle은 경로에서 찾은 JDK를 사용합니다 (확인하려면 java -version 사용). 또는 원하는 JDK의 설치 디렉토리를 가리 키도록 JAVA_HOME 환경 변수를 설정할 수 있습니다.


이 Eclipse 플러그인 또는 Enide Studio 2014 를 사용하는 경우 사용할 기본 JAVA_HOME (기본 설정에서 설정)은 0.15 버전입니다. http://www.nodeclipse.org/history


Gradle 4.2 사용하고 있습니다. 기본 JDK는 Java 9입니다. Java 9 초반에 Gradle 4.2는 JDK 8에서 올바르게 실행됩니다 (JDK 9 아님).

파일에서 %GRADLE_HOME%\bin\gradle.bat다음 과 같이 JDK를 수동으로 설정했습니다 .

@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

특정 명령을 실행하도록 한 번만 설정하려면 다음을 수행하십시오.

JAVA_HOME=/usr/lib/jvm/java-11-oracle/ gw build

참고 URL : https://stackoverflow.com/questions/18487406/how-do-i-tell-gradle-to-use-specific-jdk-version

반응형