1. Maven
- 빌드 도구로써 주로 자바기반의 프로젝트에서 많이 사용됩니다.
- XML기반으로 설정 모델을 제공하고 pom.xml 파일로 작성할 수 있습니다.
💡 POM은 project object model의 약어입니다.
Maven’s Objectives
https://maven.apache.org/what-is-maven.html
- 위의 Maven 홈페이지에서 Maven 이 이루고자 하는 목표를 확인가능
왜 Maven을 사용할까?
- archetypes 라는 프로젝트 템플릿을 제공 → 매번 같은 설정을 반복하지 않게 도와줌
- 프로젝트에서 사용하는 외부 라이브러리인 dependency 를 관리해줌
- 플러인과 외부 라이브러리를 분리하여 관리
- dependency를 다운닫는 Repository가 로컬이 될 수도 있고 Maven Central 와 같은 공개된
Repository가 될 수도 있음
Maven Project 생성하기
1) File > New > Project.. 를 선택
2) Maven Archetype을 선택
3) Archetype에서 maven-archetype-quickstart를 선택
4) Name, GroupId 설정
Maven coordinates
- groupId : 회사나 단체명 ex) org.springframework, org.prgms
- artifactId : 프로젝트명(해당 maven 프로젝트에 대한 모듈 이름) ex) spring-context, order-api, customer-service
- version :프로젝트의 버전(기본적으로 1.0-SNAPSHOT → 배포할려면 1.0(버전)-REALEASE) ex) 5.2.15.RELEASE, 1.0-SNAPSHOT
Transitive Dependencies
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#transitive-dependencies
- 정의 : 의존성의 의존성
- 예시 : 만약 a가 b를 참조하고, b가 c를 참조한다면, a 는 c를 transitive 의존성으로 간주 만약 c가 d를 참조한다면, a는 d에 대해서도 transitive 의존성을 가짐
→ 이러한 경우, maven은 의존성 트리를 구성하여 동일한 groupId, artifactId에 대해서는 가장 최신의 version 정보를 사용하게 됨.
→ 이러한 기능은 때로는 좋아 보이지만, 때로는 버전 간 충돌, 라이브러리 간 충돌 등의 문제를 야기할 수 있음
(참고사항) 의존 관계 디버그
Maven Dependency Plugin을 사용하여 의존 관계 트리를 찍어볼 수 있음 → 아래 명령어 사용