[Spring] Maven & Gradle에 대한 간략한 정리
Maven
pom.xml
- 메이븐 프로젝트의 핵심
- 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일
- 프로젝트에 필요한 의존 모듈과 플러그인 등에 대한 설정 정보를 가짐
- 모든 메이븐 프로젝트는 루트 디렉토리에 pom.xml이 존재
artifact
메이븐이 관리하는 모듈의 단위
위의 artifact를 해석하면 spring-context라는 식별자를 가진 5.3.10 버전의 아티팩트에 대한 의존을 추가한 것이다.
메이븐은 코드를 컴파일하거나 실행할 때 dependency로 설정한 artifact 파일을 사용한다.
- 의존을 추가: 자바 어플리케이션 클래스패스에 모듈을 추가하는 것
- artifact의 full name: 아티팩트이름-버전.jar
- 위의 이미지는 소스코드를 컴파일 하고 실행할 때 클래스패스에 spring-context-5.3.10.jar 파일을 추가한다는 뜻
jar 파일이 추가되는 과정
1. 메이븐 로컬 레포지토리에 [그룹ID]/[아티팩트ID]/[버전] 디렉토리에 아티팩트ID-버전.jar 파일이 있는지 검사
2 - 1) 있다면? 파일을 사용
2 - 2) 없다면? 원격 중앙 레포지토리에서 해당 파일을 다운로드하여 로컬 레포지토리에 복사한 다음 사용
📌 메이븐은 [사용자홈폴더]/.m2/repository 폴더를 로컬 리포지토리로 사용
의존 전이 (Transitive Dependencies)
dependencies 아래에 spring-context가 있고 그 아래에 spring-aop, spring-beans, spring-core, spring-expression이 있다. spring-context를 사용하기 위해서 다른 artifact들도 필요한 것이다. 의존하는 artifact가 있다면 메이븐은 다른 artifact도 같이 다운로드 한다. 그리고 의존하는 대상의 의존하는 대상도 함께 다운로드 한다.
src 디렉토리 아래에 main 디렉토리가 있고 그 아래에 java, resources 디렉토리들이 위치한다. 위의 이미지에는 없지만 main 아래에 webapp 디렉토리가 위치할 때가 있다.
- java: 자바 코드가 위치
- resources: 자바 코드 외에 다른 파일들이 위치
- webapp: JSP 소스 코드나 WEB-INF/web.xml 파일이 위치
Gradle
주석으로 gradle의 설명을 대체하겠다.