Gradle에 대해 알아보자
안드로이드 프로젝트를 진행하고 스프링부트를 사용하면서 아직도 gradle이 뭔지 모르는 나를 보며 이 정리가 필요할 것 같았다.
Gradle이 뭘까?
- 이전세대 빌드 툴의 장점들을 모아서 만든 빌드툴(Ant, Maven)
빌드 툴(Build Tool)이란 뭘까?
- 소스코드를 컴파일, 테스트, 정적분석 등을 하여 실행가능한 어플리케이션으로 자동생성하는 프로그램
- 라이브러리 자동추가 및 관리
- 프로젝트 진행시 라이브러리 버전 자동 동기화
- JVM기반의 빌드도구
- 오픈소스 기반의 Build자동화
- Groovy기반(if, else, for등 로직구현 가능) DSL(특정 영역을 타겟하고 있는 언어)로 작성
cf. 이전세대 빌드 툴
- Ant
- 개발자가 자유롭게 빌드 단위를 설정할 수 있다.
- 빌드 단위간의 의존관계를 자유롭게 설정 할 수 있다
- 유연성이 높은만큼 이해가 어렵다.
- Maven
- CoC(관례에 따른 개발) 전략에 따라 많은 부분이 관례로 정해져 있다.
- 라이브러리를 직접 다우로드 할 필요가 없다.
- 특수한 경우에 맞춤화된 로직을 찾기 어렵다.
Gradle Wrapper는 무엇일까?
- 이미 존재하는 프로젝트를 새로운 환경에 설치할 때 별도의 설치나 과정없이 바로 빌드할 수 있게 하기 위함
- Java, Gradle설치가 필요하지 않고 버전을 신경쓸 필요도 없음
project/
gradlew
gradlew.bat
gradle/wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
build.gradle
settings.gradle
- gradlew파일은 유닉스용 실행 스크립트다.
>gradle build
위 코드는 로컬에 설치된 gradle을 사용한다. 이경우 Java나 Gradle이 설치되어 있어야 하며 프로젝트와 로컬의 버전이 호환되지 않으면 문제가 발생할 수 있다.
> ./gradlew build
위 코드는 wrapper을 사용한다.
- gradlew.bat 파일은 윈도우용 실행 배치 스크립트다. 윈도우에서 실행 가능한 것을 제외하면 gradlew와 종일
- gradle-wrapper.jar 파일은 wrapper 파일이다. 이 파일을 사용하여 gradle task를 실행하기 때문에 로컬환경의 영향을 받지 않는다.
- gradle-wrapper.properties 파일은 gradle wrapper 설정파일이다. 이 파일의 wrapper버전등을 변경하면 task실행시 자동으로 wrapper파일을 로컬캐시에 다운받는다.
- build.gradle 파일은 의존성이나 플러그인 설정 등을 위한 스크립트 파일이다.
- settings.gradle 파일은 프로젝트의 구성정보를 기록한다. 어떤 하위 프로젝트들이 어떤 관계로 구성되어 있는지를 기술한다.
참고링크
https://medium.com/@goinhacker/운영-자동화-1-빌드-자동화-by-gradle-7630c0993d09