728x90

결론

빌드 도구 최신형 Gradle 쓰자

왜? 가독성 좋은 언어로 자동으로 라이브러리 의존성을 관리하는데, 심지어 빌드 속도도 빨라서

빌드 도구
Ant Maven Gradle
build.xml로 관리 pom.xml로 관리 build.gradle로 관리
    빠른 빌드 속도, 멀티 프로젝트 빌드 가능
정형화되지 않는 스크립트

(규칙성이 없어개발자마다 스크립트 짜는 스타일이 다르기에 이해하는데 많은 시간이 소요)
  간결한 스크립트
groovy 언어 사용
(xml의 껍데기 태그로 가독성이 떨어지는 것을 보완한 언어)
remote repository를 사용 불가
(의존성을 수동으로 찾아서 넣어줘야한다.)

그래서 ivy.xml로 ant 의존성 관리함
자동으로 라이브러리와 의존성을 관리하는 기능
remote repository 사용 가능
(mavenrepository에서 의존성을 찾아 넣어준다)
생명주기가 없어 각각의 결과물에 대한 의존 관계 등을 정의    

Spring 프로젝트를 생성하기 위해서 Spring initializr에 들어갔다가 다음과 같이 gradle과 maven이 있는 것을 확인했다. '두개의 차이점이 뭐지? 뭐가 더 좋은걸까~' 라는 의문을 가져 포스팅했다.


Maven과 Gradle을 알기 전에 먼저 빌드란?

빌드(Build)
소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물
쉽게 말해 작성한 소스코드(java)와 그외에 파일(.xml, .jpg, .jar, .properties 등)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물
+ 컴파일 뿐 아니라 테스팅, 검사, 배포까지 일련의 작업들을 통틀어 빌드라고 한다.

 

빌드 도구(Build Tool)
프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램
(덕분에 라이브러리 버전 동기화 및 추가 등의 어려움 등을 해소)
빌드 도구
- Ant
- Maven
- Gradle

※ 참고로 Ant는 초기의 java 빌드 도구로 많이 사용. 하지만 스크립트 작성도 많고 라이브러리 의존관리가 되지 않아 불편한 부분이 존재.


Maven과 Gradle 설명

Maven
공식 사이트: https://maven.apache.org/what-is-maven.html
- Apache사에서 만든 빌드툴이다.
- 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.
- 프로젝트의 전체적인 라이프 사이클을 관리하는 도구다.
- 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소는 라이브러리를 공유하는 파일 서버라 볼 수 있다.
- 필요한 라이브러리를 특정 문서(pom.xml)에 정의하기에 사용할 라이브러리 뿐 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운받아준다.

## 장점

  • 편리한 의존성 라이브러리 관리
  • 정해진 빌드 방법을 사용하여 협업에서 유리하게 작용
  • 다양한 플러그인을 통해 많은 작업이 자동화됨

 

Gradle
- 그루비(Groovy)를 기반으로 한 빌드 도구이다.
- 이전 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개된 것이다.
- Gradle 설치 없이 Gradle Wrapper를 이용하여 빌드 지원

## 장점

  • 빠른 빌드 속도
  • 멀티 프로젝트 빌드

 

Maven vs Gradle 비교 문서: https://gradle.org/gradle-vs-maven-performance/


참고 사이트

- maven 정의 [https://goddaehee.tistory.com/199]

- maven 장점 [https://velog.io/@changyeonyoo/Maven-%EC%9D%B4%EB%9E%80]

- gradle 장점 [https://velog.io/@coastby/Gradle-gradle의-장점]

- gradle 장점2 [https://yozm.wishket.com/magazine/detail/1700/]

- ant, maven, gradle 차이 [https://blog.naver.com/rorean/222236619759]

728x90

+ Recent posts