본문 바로가기
spring boot

빌드관리도구(Maven / Gradle)

by 신방동불주먹 2023. 1. 25.

1. 빌드 관리 도구

- 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정 == "빌드 자동화 도구"

- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램

- 애플리케이션을 개발하면서, 일반경로로 개발에 필요한 다양한 외부 라이브러리들을 다운로드하고,

해당 라이브러리를 사용하여 개발해야하는 상황에서 각 라이브러리들을 번거롭게 모두 다운받을 필요없이, 빌드도구 설정파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구

 

 

 

 

 

2. maven

 

- Maven은 Java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어졌다.

- 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다.

- Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.

  1. 자바 전용 프로젝트 라이프사이클 관리 목적 빌드 도구이며 Apache Ant 불편함을 해결하고자 만들어짐
  2. pom.xml을 이용한 정형화된 빌드 시스템(필요한 라이브러리를 정의해 놓으면 알아서 네트워크를 자동으로 다운로드하여줌)
  3. 간단한 설정을 통한 배포 관리가 가능

 

 

3. gradle

 

- Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴이다. (완전한 오픈소스)

- Groovy 언어를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결하다.)

- Gradle은 프로젝트의 어느부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.

-> 업데이트가 이미 반영된 빌드의 부분은 즉 더이상 재실행되지 않는다. (따라서 빌드 시간이 훨씬 단축될 수 있다!)

  1. Maven 과 Ant의 장점을 조합하여 만든 빌드 도구
  2. Build.gradle을 이용한 정형화된 빌드 시스템
  3. 멀티 프로젝트에 용이

 

4. 차이점

Gradle은 어떤 task가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용한다. 이미 업데이트된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다.

-> 빌드 설정 규모가 점점 커지면 커질수록, 빌드시간의 차이도 Maven과 비교하여 꽤 격차가 벌어질 수 있을것같다.

-maven 의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle 은 설정 주입 방식을 제공한다.

- 또한 Gradle은 concurrent에 안전한 캐시를 허용한다.

-> 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록 checksum 기반의 캐시를 사용하고, 캐시를 repository와 동기화시킬 수 있다.

 

 

 

**groovy

- jvm에서 실행되는 스크립트 언어

- 문법이 java와 아주 가까움

- java와 호환이 되며 java 클래스 파일을 그대로 groovy 클래스로 사용이 가능

'spring boot' 카테고리의 다른 글

Spring Data JPA  (0) 2023.05.03
yaml 파일  (0) 2023.02.28
정적 컨텐츠 / 템플릿 엔진 / API  (0) 2023.01.25
프로젝트 빌드,실행  (0) 2023.01.25
View 환경설정(Thymeleaf)  (0) 2023.01.25