Gradle과 Gradle version
모든 프로그램들이 그렇듯 Gradle은 버전이 다르면 사용할 수 없다. 예를 들어 6.x.x 버전의 Gradle을 7.x.x를 사용해 사용할 수 없다. 만약 사용하려고 하면 error가 생기게 된다. 이에 대한 간단한 해결책은 매번 프로젝트를 받을 때마다 해당 프로젝트가 채택하는 Gradle의 버전을 다시 설치하는 것이다. 하지만 이는 매우 비효율적이다. 만약 10개의 버전이 있다면 프로젝트를 전환할 때마다 현재 머신의 Gradle의 버전을 바꿔줘야 하기 때문이다.
내장 그레이들(Gradle Wrapper) 을 사용한 버전 문제 해결
위와 같은 문제를 해결하기 위해 Gradle에서는 각 프로젝트마다 내장 Gradle을 무조건 넣어주게 만들었고, 프로젝트에서 gradle을 사용하기 위해서는 내장 gradle을 사용할 수 있도록 하였다. 내장 Gradle를 이용하면 프로젝트별로 Gradle을 설치하지 않고도 해당 프로젝트의 Gradle을 사용할 수 있게 된다. 따라서 매 프로젝트마다 Gradle 버전을 바꿔줄 필요 또한 없어진다.
내장 Gradle을 Gradle Wrapper라 한다. Gradle Wrapper은 gradle init시 생성되는 gradle/wrapper 폴더에 들어있으며, 이 내부에는 wrapping된 그레이들 jar인 gradle-wrapper.jar와 wrapping된 그레이들의 환경을 설정할 수 있는 gradle-wrapper.properties가 있다.
하지만 내장 gradle을 직접 사용하기 위해서는 매우 복잡한 과정을 거쳐야 한다.
gradlew와 gradle.bat을 사용한 내장 그레이들 사용하기
내장 그레이들의 사용을 간단하게 만들기 위해 만들어진 것이 바로 gradlew와 gradle.bat 스크립트이다. gradlew는 맥, 리눅스용 스크립트이며, gradle.bat은 윈도우용 스크립트이다. gradlew와 gradle.bat 스크립트는 Gradle 명령어를 내장 그레이들을 이용해 실행하기 위한 환경설정부터 실행까지 모두 수행한다.
gradlew 내부를 보면 다양한 로직들이 들어있으며, 이 로직들은 내장 그레이들을 사용하기 위해 만들어진 스크립트이다.
gradlew.bat에도 윈도우에서 실행하기 위한 스크립트가 있다.
이 두가지 스크립트를 사용하면 다음의 명령어로 간단하게 내장 그레이들을 사용할 수 있다.
mac에서 gradlew 사용하기
mac에서는 다음 명령어로 내장 그레이들을 사용할 수 있다.
./gradlew [작업명]
위의 작업은 gradle [작업명]과 같은 역할을 하는데, 설치된 gradle이 아닌 내장 gradle을 사용한다는 점이 차이점이다.
예를 들어 내장 그레이들을 사용해 firstTask를 돌리고 싶다면 다음과 같이 사용하면 된다.
$ ./gradlew firstTask
> Configure project :
first task
window에서 gradle.bat 사용하기
window에서는 다음 명령어로 내장 그레이들을 사용할 수 있다. gradle.bat 이 아니라, gradlew를 './' 없이 사용한다.
gradlew [작업명]
예를 들어 gradle.bat을 사용해 firstTask를 돌리고 싶다면 다음 명령어를 사용하면 된다.
$ gradlew firstTask
> Configure project :
first task