프로그램마다 만약 gradle
과 같은 빌드 툴의 버전이 다르다면 매우 번거로울 것입니다. 따라서 Gradle에서는 각 프로젝트마다 내장 Gradle을 넣어두고 사용할 수 있게 하였습니다. 이렇게 함으로써, 프로젝트(프로그램)을 전환할 때 마다 Gradle 버전을 바꿔줄 필요가 없게 됩니다.
내장 그레이들을 gradle wrapper
라고 하며, gradle init시 생성되는 gradle/wrapper 디렉토리에 내장 그레이들(.jar
)과 환경 설정 파일(.properties
)가 같이 저장됩니다.
하지만 이를 직접 사용하려면 상당히 복잡한 과정을 거쳐야 할 것이므로, 이를 편하게 사용하게 만들기 위해 스크립트를 저장해둔 파일이 있습니다. 바로, gradlew.bat
으로, 이는 윈도우 환경에서 내장 그레이들 사용을 간단하게 만들기 위해 스크립트를 저장해 둔 파일입니다. Unix 계열의 운영체제(macOS, Linux)에서는 gradlew
에 스크립트가 저장되어 있습니다.
보통 .bat
확장자는 윈도우 환경에서 정해진 스크립트를 실행시키기 위해 많이 사용되며, .sh
등의 확장자 등 Unix 계열의 운영체제(macOS, Linux)를 위한 스크립트 파일이 존재합니다.
아래는 gradlew.bat
의 스크립트 중 java.exe
를 찾는 부분을 발췌해 가져왔습니다. Gradle Wrapper를 사용하여 프로젝트를 빌드하려면 터미널 또는 명령 프롬프트에서 gradlew 명령(Windows에서는 gradlew.bat)을 실행합니다.
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
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:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
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.
위 스크립트의 동작 과정은 다음과 같습니다.
이를 통해 시스템에 자바가 설치되어 있는지, 환경 변수 설정 여부와 자바 실행 파일을 찾게 됩니다.