1. 빌드 관리 도구
- 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정 == "빌드 자동화 도구"
- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램
- 애플리케이션을 개발하면서, 일반경로로 개발에 필요한 다양한 외부 라이브러리들을 다운로드하고,
해당 라이브러리를 사용하여 개발해야하는 상황에서 각 라이브러리들을 번거롭게 모두 다운받을 필요없이, 빌드도구 설정파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구
2. maven
- Maven은 Java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어졌다.
- 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다.
- Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.
- 자바 전용 프로젝트 라이프사이클 관리 목적 빌드 도구이며 Apache Ant 불편함을 해결하고자 만들어짐
- pom.xml을 이용한 정형화된 빌드 시스템(필요한 라이브러리를 정의해 놓으면 알아서 네트워크를 자동으로 다운로드하여줌)
- 간단한 설정을 통한 배포 관리가 가능
3. gradle
- Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴이다. (완전한 오픈소스)
- Groovy 언어를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결하다.)
- Gradle은 프로젝트의 어느부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.
-> 업데이트가 이미 반영된 빌드의 부분은 즉 더이상 재실행되지 않는다. (따라서 빌드 시간이 훨씬 단축될 수 있다!)
- Maven 과 Ant의 장점을 조합하여 만든 빌드 도구
- Build.gradle을 이용한 정형화된 빌드 시스템
- 멀티 프로젝트에 용이
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 |