본문 바로가기
프레임워크/Maven & Gradle

Gradle이란?

by 클레어몬트 2024. 10. 6.

https://claremont.tistory.com/entry/Maven%EC%9D%B4%EB%9E%80

 

Maven이란?

ㅇMaven: Java 프로젝트의 라이프사이클 관리를 위한 빌드 도구빌드, 의존성 관리, 그리고 프로젝트 관리를 자동화하는 도구이다. Apache Software Foundation에서 개발한 오픈 소스 프로젝트로, 프로젝트

claremont.tistory.com

Gradle은 Maven의 진화 느낌이기 때문에 위의 글을 먼저 읽고 오면 이해하기가 더 수월하다 :)

 

 

 

 

Gradle은 Maven의 장황한 설정 파일과 에러가 쉽게 나는 문제를 해결하기 위해서 만들어진 빌드 도구

ㅇGradle: Groovy 기반의 스크립트 언어

Gradle은 Java와 같은 JVM 언어 프로젝트뿐만 아니라, 여러 언어의 프로젝트 빌드를 자동화하는 강력한 빌드 도구이다. Groovy 또는 Kotlin DSL(Domain Specific Language)을 사용하여 유연한 빌드 스크립트를 작성할 수 있으며, 특히 안드로이드 스튜디오 프로젝트의 공식 빌드 도구로 널리 사용된다. Gradle은 의존성 관리, 빌드 성능 최적화, 멀티 프로젝트 지원 등에서 탁월한 성능을 제공한다.

 

※ Groovy 언어란?

Java를 발전시킨 언어로 현재 아파치 재단에서 관리하고 있다. 그루비는 자바와 문법이 거의 동일하므로 자바 프로그래머라면 금방 적응해서 쓸 수 있다. 차이점은 public, private 등의 접근 레벨 지시자나 세미콜론 등이 옵션이라는 것 정도며 자바에서는 지원되지 않는 클로저 함수가 지원되고 함수형 프로그래밍이 가능하다. 최근 Maven을 대체하기 시작한 Gradle 빌드 시스템이 바로 이 Groovy 언어를 기반으로 한다. JVM 위에서 그대로 돌아가기 때문에 Java API도 문제없이 사용 가능하다. IDE 역시 Java를 지원하는 툴이라면 Java도 지원하는 경우가 대부분이며 대표적으로는 이클립스, 넷빈즈, IntelliJ IDEA 등이 있다.

 

※ DSL(Domain Specific Language): 특정 도메인을 대상으로 만들어진 특수 프로그래밍 언어

 

 

[Gradle 주요 개념]

1. 빌드 스크립트(build.gradle)

Gradle은 XML 기반의 설정 파일을 사용하는 Maven과 달리, Groovy 또는 Kotlin을 기반으로 하는 스크립트 파일을 사용한다. 이러한 스크립트 방식은 개발자가 빌드 과정을 더 유연하게 정의할 수 있도록 해준다. 빌드 스크립트에서 프로젝트의 의존성, 태스크, 플러그인 등을 정의하며, 필요한 경우 코드 수준에서 빌드 프로세스를 제어할 수 있다.

쉽게 말하면, build.gradle 파일에서 라이브러리 의존성을 코드처럼 정의할 수가 있다.

 

2. 의존성 관리: 프로젝트별로 어떤 의존성을 갖는지 명시해주어야 한다

Gradle은 의존성 관리에 있어 Maven의 강력한 기능을 계승하면서도 더 높은 유연성을 제공한다. 프로젝트에 필요한 라이브러리를 선언하면 Gradle은 이를 중앙 저장소나 커스텀 저장소에서 자동으로 가져와 프로젝트에 적용한다. 또한, Gradle은 '의존성 캐싱'을 통해 중복 다운로드를 피하고 빌드 속도를 향상시킨다.

 

3. 태스트(task)

Gradle의 빌드 프로세스는 태스크(task) 단위로 이루어진다. 각 태스크는 프로젝트 빌드의 특정 단계를 수행하며, 이러한 태스크들은 서로 의존성을 가질 수 있다. 예를 들어, '컴파일' 태스크는 '클린' 태스크 이후에 실행되도록 구성할 수 있다. 이를 통해 빌드 프로세스를 유연하게 제어할 수 있다.

 

 

[Gradle의 장점]

  • 유연성: Groovy 또는 Kotlin을 기반으로 하는 빌드 스크립트 덕분에 복잡한 빌드 로직을 쉽게 정의할 수 있다.
  • 빠른 빌드 속도: Gradle은 증분 빌드와 의존성 캐싱을 통해 빌드 성능을 크게 향상시킨다.
  • 플러그인 시스템: Gradle은 다양한 플러그인을 지원하여 확장성이 뛰어나며, 프로젝트 요구에 맞게 빌드 프로세스를 커스터마이징 할 수 있다.
  • 멀티 프로젝트 지원: Gradle은 멀티 모듈 프로젝트를 손쉽게 관리할 수 있으며, 각 모듈 간의 의존성을 효과적으로 처리한다.

 

 

[Maven vs Gradle]

https://claremont.tistory.com/entry/Maven-vs-Gradle

 

Maven vs Gradle

소프트웨어 개발에서 빌드 도구는 프로젝트의 빌드, 의존성 관리, 배포 과정 등을 자동화하여 효율성을 높이는 핵심 요소이다. Maven과 Gradle은 자바를 포함한 JVM 기반 프로젝트에서 널리 사용되

claremont.tistory.com

 

 

 

 

 

 

출처 및 참고: https://github.com/gradle/gradle, https://namu.wiki/w/Groovy, [10분 테코톡] 메리의 Gradle https://www.youtube.com/watch?v=V4knLFDG-ZM

매우 매우 좋은 영상이다 :)

 

'프레임워크 > Maven & Gradle' 카테고리의 다른 글

Maven vs Gradle  (4) 2024.10.06
Maven이란?  (3) 2024.10.06