빌드 관리 툴, maven
maven과 gradle은 자바의 빌드 관리 툴이다.
나는 처음부터 gradle만 사용해왔고, gradle만 보았다. 그런데 역시 다방면으로 경험해야 좋은 법...
maven으로 관리 되는 spring boot 프로젝트의 소스 코드를 볼 일이 생겼다.
maven에 대해서 알아보고자 한다.
특징
maven
- 과거 자바의 대표 관리 도구였던 Ant를 대체하기 위해 개발되었다.
- pom.xml (project object model) 파일로 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성을 관리한다. (xml 기반의 빌드 스크립트)
- 라이프 사이클이 존재한다.
라이프 사이클이란?
=> 미리 정해진 빌드 순서
maven은 작업 방식이 정해져있고, 빌드 순서가 정해져있어 라이프 사이클이 존재한다고 한다.
maven은 크게 3가지 라이프 사이클을 제공한다.
1. clean -> 이전 빌드에서 생성된 파일들을 삭제
2. Default -> 프로젝트 빌드 및 배포
3.Site -> 프로젝트 사이트를 생성
각 라이프 사이클은 사전에 정의된 작은 Phase를 가지고있다.
Phase는 시점을 의미하며, 순서에 따라 Phase에 바인딩 된 Goal이 실행된다.
각 Phase는 의존 관계를 가지며, 순서대로 실행된다.
1. clean -> 3개
2. Default -> 23개
3. Site -> 4개
내가 가장 많이 쓰는 커맨드를 알아보면..
mvn clean package
이 코드의 의미는
Maven에서 두 가지 라이프사이클, Clean LifeCycle과 Default LifeCycle을 연속적으로 실행한다.
clean 명령어는 Clean LifeCycle에 속한 Phase들을 모두 실행한다.
1. pre-clean (clean 작업을 준비 단계)
2. clean (이전 빌드의 산출물을 삭제, 기본적으로 target 디렉토리 삭제)
3. post-clean (clean 작업 후 추가적으로 필요한 정리 작업 수행)
즉, mvn clean을 실행하면 위의 세 가지 Phase가 순차적으로 실행되어 이전 빌드 결과물들이 삭제된다.
package 명령어는 Default LifeCycle에 속한 여러 Phase 중 package Phase까지 실행됩니다.
- validate: 프로젝트가 올바르게 구성되었는지, 모든 필요한 정보가 있는지 확인합니다.
- compile: 소스 코드를 컴파일합니다.
- test: 컴파일된 코드를 대상으로 단위 테스트를 실행합니다.
- package: 컴파일된 코드를 JAR 파일이나 WAR 파일 등의 패키지로 만듭니다.
장점 및 단점
[장점]
1. pom.xml 파일을 통해 프로젝트 관리가 용이
2. 컴파일과 빌드를 동시에 수행 가능
[단점]
1. 특정 플러그인의 설정이 다를 때, 따로 분리해서 중복 기술해야한다. -> 가독성 저하, 유지 보수성 저하.
2. 느린 빌드 속도
'공부의 일상' 카테고리의 다른 글
| [배포 자동화] aws, github actions을 활용한 자동 배포 파이프라인 구축기 (1) | 2025.02.02 |
|---|---|
| [Spring Boot] 패키지 구조 참고 사이트 (0) | 2024.08.24 |
| [웹 취약점] 계정 관리 취약점 및 대응 방안 (2) | 2024.07.14 |
| [무중단 배포] 롤링 배포, 블루 그린 배포, 카나리 배포 (0) | 2024.06.11 |
| [io 도메인] 자주 접하게 되는 ".io" URL은 뭘까? (접속하면 위험한 주소일까?) (2) | 2024.06.04 |