728x90
결론
빌드 도구 최신형 Gradle 쓰자
왜? 가독성 좋은 언어로 자동으로 라이브러리 의존성을 관리하는데, 심지어 빌드 속도도 빨라서
빌드 도구 | ||
Ant | Maven | Gradle |
build.xml로 관리 | pom.xml로 관리 | build.gradle로 관리 |
빠른 빌드 속도, 멀티 프로젝트 빌드 가능 | ||
정형화되지 않는 스크립트 (규칙성이 없어개발자마다 스크립트 짜는 스타일이 다르기에 이해하는데 많은 시간이 소요) |
간결한 스크립트 groovy 언어 사용 (xml의 껍데기 태그로 가독성이 떨어지는 것을 보완한 언어) |
|
remote repository를 사용 불가 (의존성을 수동으로 찾아서 넣어줘야한다.) 그래서 ivy.xml로 ant 의존성 관리함 |
자동으로 라이브러리와 의존성을 관리하는 기능 remote repository 사용 가능 (mavenrepository에서 의존성을 찾아 넣어준다) |
|
생명주기가 없어 각각의 결과물에 대한 의존 관계 등을 정의 |
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
'IT > Spring' 카테고리의 다른 글
[Spring] Spring Legacy project 없을 경우 해결 방법 (0) | 2023.07.10 |
---|---|
[Spring] 회원관리(4) 회원 서비스 개발 및 테스트 (0) | 2022.08.20 |
[Spring] 회원관리(3) 회원 리포지토리 테스트 케이스 작성 (0) | 2022.07.24 |
[Spring] 회원관리(2) 회원 도메인과 리포지토리 만들기 (0) | 2022.06.30 |
Spring[7] - Spring MVC 소개 (0) | 2022.06.30 |