일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바
- 웹 프로그래밍
- 깃허브
- 그래이들
- 동적 자원
- 국비 프로젝트
- 조건문
- 타입변환
- 자바 이항 연산자
- 정적 자원
- 람다
- 애플페이
- 자바 프로젝트
- 람다식
- 스프링부트
- 삼항 연산자
- 그래들
- if문
- 빌드 도구
- 자바 연산자
- 멀티 태스킹
- 연산식
- 변수
- 단항 연산자
- Gradle
- Java
- 자바 람다식
- 연산자
- Github
- 웹
- Today
- Total
인디언식 기우제
Spring 프레임워크 Maven vs Gradle 본문
스프링 프로젝트를 하다보면 더 다양한 기능, 효율적인 개발을 위해 여러 라이브러리들을 사용해서 개발을 하게 된다. 나는 이전 프로젝트들은 전부 Maven을 사용하였는데, 이번에 스프링 부트 강의를 듣다보니 Gradle을 알게되었다. 현재 현업에서는 거의 Gradle방식을 사용해서 개발을 한다고 해서 Maven과 Gradle 은 무엇이고, 어떤것이 다른지 알고싶어 찾아보았다.
빌드 관리 도구(Build Tool)
Maven과 Gradle은 빌드 도구이다. 빌드 도구는 소프트웨어 개발에 있어서 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구이다. 소스의 빌드 과정을 자동으로 처리해주며, 외부 소스코드(외부 라이브러리)를 자동 추가 및 관리를 해준다.
Maven

- 메이븐(Maven)은 자바 빌드 도구로, 자동으로 라이브러리와 의존성을 관리하여준다.

- 가장 많이 쓰이던 빌드 도구인 Ant의 대안으로 만들어졌다.
- 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이다.
- XML 스크립트를 기반으로 한다
- 필요한 라이브러리를 pom.xml에 정의하면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리를 하여 네트워크를 통해 자동으로 다운받아 준다.
Gradle

- Gradle은 가장 최근에 나온 자바 빌드 도구로 Groovy문법을 사용한다.
- Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 도구이다.
- Build.gradle에 스크립트를 작성하며, 대규모 프로젝트에서 복잡해지는 경향이 있는 XML 기반 스크립트에 비해 관리가 편하다.
- 현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있으며, 스프링부트에서도 사용된다.
Groovy - JVM에서 실행되는 스크립트 언어. JVM에서 동작하지만 소스코드를 컴파일할 필요가 없다. Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다. 도메인 전문 언어와 단순화된 문법을 지원하여 코드를 읽고 유지 보수하기 편해진다.
Gradle을 사용해야 하는 이유
1. 간결한 스크립트
- Maven은 XML 문법으로 스크립트를 작성한다. XML은 여는 태그와 닫는 태그를 넣어야 하기 때문에 복잡한 빌드 스크립트를 작성하기가 어려우며 가독성이 떨어진다. 반면, Gradle은 Groovy 문법으로 간결한 스크립트를 작성하여 가독성이 좋다.
2. 빌드 속도

- Gradle은 캐싱(캐시를 사용)을 하기때문에 Maven같은 이전 빌드 도구보다 빌드 속도가 빠르다. 빌드 캐시를 이용할 경우 Gradle과 Maven 의 빌드 속도가 최대 100배까지 벌어질 수 있다고 한다.
3. 멀티 프로젝트 빌드
- 대규모 자바 프로젝트는 대부분 다중 모듈로 구성되는데, 여러 모듈이 동시에 개발되는 경우 각각 따로 빌드 작업을 하면 번거로울 뿐만 아니라 실수가 생기기도 쉽다. Gradle의 멀티 프로젝트 빌드 기능을 이용하면 이런 번거로움과 실수를 줄일 수 있다.
마치며
Maven과 Gradle, 빌드 도구들에 대해 알아보았다.
지금까지는 Maven만을 사용하였는데, 이제는 Gradle을 사용하고 스프링 부트 프로젝트를 해봐야겠다.
현업에서 많이 쓰이는 기술들을 미리 배워두고싶다.