개요
기존에 존재하는 어느 프로젝트를 내 피씨에 클론해서 실행시키려는 경우에, 간간히 그래들 빌드 에러를 뱉어내는 경우가 있다.
- 현재 나의 PC 환경이 프로젝트의 환경보다 더 높은 버전을 가지고 있는 경우
- 그 외 ?
보통 빌드툴은 메이븐을 쓰는 경우도 있지만 나의 경우에는 실무에서 그래들을 사용하고 있다. 따라서 인텔리제이 내의 그래들 설정 방법에 대해서 조금 살펴보려고 한다. 틀린 부분도 있다. 그리고 추가적인 것도 하는김에 덧붙이려고 한다.
Build and run using 과 Run tests using 항목
Gradle 과 intelij IDEA 가 보인다. 두 개의 차이는 단순 속도차이라고 생각했지만 문득 둘의 차이에 대해서 궁금해졌다. gradle 빌드 툴에 의해서 빌드되는 것과 intellij idea 로 빌드되는 것 그리고 테스트에서 이용되는 것 차이는 아래와 같다.
- gradle
- 개발자가 더 복잡한 build configuration 을 사용할 수 있도록 해준다.
- build.gradle 파일에 tasks 가 정의된다.
- 더 복잡한 빌드프로세스를 수행한다.
- intellij idea
- 자체 빌드 메커니즘을 이용한다.
- 프로젝트에 종속된 파일이나 수정된 파일들을 간단히 컴파일한다. 이를 incremental build 라고 부른다.
위의 내용만 보면 사실 gradle 자체가 빌드툴이기 때문에 당연한 이야기라고 생각이 된다. 다만 너무 무의식중에 개발을 하다보니 이러한 개념을 잊어버리고 혼자 삽질을 하는 경우가 있어서 다시 한번 적게 되었다.
Use Gradle from 항목
- 현재 프로젝트에 몇 버전의 그래들을 사용할 것인지 설정할 수 있다.
- 목록은 아래와 같다.
- gradle-wrapper.properties
- wrapper task in Gradle build script
- Specified location
- gradle-wrapper.properties
- gradle-wrapper 를 사용하는 기본적인 권장 옵션이다.
- 해당 경우는 gradle 의 버전 업데이트를 gradle 에게 맡기고 프로젝트 빌드를 위한 gradle 을 자동으로 다운받는다. 해당 옵션을 이용함으로써 정확한 gradle version 으로 빌드할 수 있게 해준다.
- gradle version 은 프로젝트 내 gradle 디렉토리의 gradle-wrapper.properties 파일에 저장된다. 그리고 프로젝트 내의 gradle version 문제에 대해서 해결할 수 있도록 도와준다.
- wrapper task in Gradle build script
- wrapper configuration task 를 통해서 gradle wrapper 를 설정할 수 있다. 직접적으로 프로젝트의 gradle version 을 관리하는 경우, 이 방법이 편리하다.
- 만약 디폴트 gradle wrapper 옵션을 사용하는 경우 wrapper task 를 변경하였을 시에 task 는 자동으로 업데이트 된다.
- specified location
- gradle wrapper 를 사용하지 않고 특정한 gradle version 을 수동으로 다운로드하려고 하는경우, 해당 옵션을 사용하면 된다. gradle 의 설치위치를 지정한다.
The Gradle Wrapper
그래들 빌드를 실행시키기 위해서 추천하는 방법은 gradle wrapper 를 이용하는 방법이다. 짧게 말하면 wrapper 라고 표현한다. the wrapper 는 선언된 gradle version 을 호출하는 스크립트이다. 결과적으로 개발자는 gradle 프로젝트를 빠르게 시작하고 실행시킬 수 있다. ( 따로 메뉴얼을 참고하거나 그러지 않아도 되서 결과적으로 시간과 비용의 절약으로 이어진다. )
wrapper workflow
1. 그래들 배포파일을 서버에서 다운로드
2. gradle_user_home 에 저장 및 압축해제
3. 해당 배포파일 사용
gradle wrapper 을 이용하면 아래와 같은 장점을 얻을 수 있다.
- gradle 버전에 따른 프로젝트의 표준화가 이루어진다.
- 다른 사용자 또는 새 gradle 버전에 대해서 프로비저닝이 간단하다. wrapper 정의만 변경하면 되므로.
사용사례 살펴보기
gradle wrapper 추가하기
gradle wrapper 파일을 생성하려면 현재 PC 에 설치된 gradle 런타임 버전이 필요하다. (설치관련 링크)
모든 vanilla gradle build 는 wrapper 라고 불리는 task 를 제공한다. wrapper task 를 실행하면 프로젝트 디렉토리에 wrapper 파일을 생성한다.
gradle wrapper
> Task :wrapper
BUILD SUCCESSFUL in 0s
생성된 wrapper 파일인 gradle/wrapper/gradle-wrapper.properties 에 gradle 배포에 대하 정보를 저장한다.
- gradle 배포를 호스팅하는 서버
- gradle 배포유형, 기본적으로 런타임만 포함하고 샘플코드와 문서는 포함하지 않는 -bin 배포이다.
- 빌드에 실행되는 gradle 버전이다.
gradle wrapper 버전업하기
프로젝트는 일반적으로 새로운 기능과 개선사항의 이점들을 누리기 위해서 gradle version 을 업그레이드하려고 할 것이다. gradle 버전을 업그레이드하는 하나의 방법은 gradle-wrapper.properties 파일의 distributionUrl 을 수동으로 변경하는 것이다. 더 좋고 권장되는 방법은 wrapper task 를 실행하고 gradle version 을 제공하는 것이다. wrapper task 를 이용하는 것은 gradle version 의 wrapper shell script 또는 batch file 이 특정한 gradle version 에 적용되는 것이다.
wrapper task 를 한 번 실행하면 gradle-wrapper.properties 가 업데이트된다. 하지만 gradle-wrapper.jar 는 건드리지 말자.
gradle wrapper task 를 수행하면 특정한 버전을 지정하여 wrapper 를 생성할 수 있다. 디폴트는 최신버전이다. gradle wrapper task 를 통해 업그레이드 한 뒤, ./gradlew -version 을 통해서 업그레이드한 버전이 몇 버전인지 확인이 가능하다.
$ ./gradlew wrapper --gradle-version 6.7
BUILD SUCCESSFUL in 4s
$ ./gradlew --version
reference
'빌드툴' 카테고리의 다른 글
20210828 [gradle] The concept of conventions is deprecated. Use extensions instead (0) | 2021.08.28 |
---|---|
20200908 [gradle] sourceSets (0) | 2020.09.08 |
20200903 [groovy & gradle] 그루비 앤 그래들 (0) | 2020.09.03 |
20200825 [gradle] 현재 로컬환경의 gradle 버전 올리기. (0) | 2020.08.25 |