maven 정리

노요셉·2021년 6월 23일
0

메이븐

정형화된 기본 프로젝트 골격과 빌드, 의존성 관리 등을 해주는 프로젝트 관리 도구이다.

maven get started : https://maven.apache.org/guides/getting-started/index.html

메이븐 기본 구조

메이븐 설치와 환경 설정

메이븐은 순수 자바 언어로 개발된 소프트웨어이기 때문에 운영체제나 환경과 관계없이 JDK가 설치되어 있기만 하면 된다.

maven 설치
https://velog.io/@noyo0123/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EC%8B%A4%EC%8A%B5-%EB%B0%8F-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8

maven 이해

자바 기반의 빌드 도구
메이븐 설정 파일 pom.xml, Project Object Model를 담고 있다.

컴파일, 패키징, 실행 등에 관련된 정의가 없고 <dependency> 태그에 라이브러리 정보를 기입하는 것이 전부

maven으로 할 수 있는 것

컴파일

mvn compile 명령어 실행하면 됌. (pom.xml이 있는 디렉토리에서)

maven은 plugins을 다운로드하고 관계된 의종성을 다운로드 할 것이다.

테스트

mvn test

패키징

mvn package
배포를 위한 패키징을 수행하고, 결과로 jar파일이 생성됌.

메이븐 실행 단위

Goal이라고 하고 골들이 상호 연관해 실행되는데 그러한 관계를 메이븐의 goal 생명 주기라고 함.

maven 빌드 라이프사이클

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

프로젝트를 빌드하고, 배포하는 과정들이 명확히 정의되어있다. 그래서 maven 필수 명령어만 알아도 POM을 통해 원하는 목적( 빌드, 배포, 테스트 등등) 을 수행할 수 있음.

빌드 phase라는 게 있는데, 이것이 빌드 단계가 어떤 라이프 사이클에 있는지 나타낸다.
validate, compile, test, package, deploy ..

크게 위에 나타난 default phase, clean, site 로 나눈다.
default phase: 빌드, 테스트, 배포 과정을 사전에 정의
clean: 메이븐에서 생성된 결과물을 정리하는 단계
site: 프로젝트에 대한 문서화 작업

각각의 build phase가 하는일이 많아서 plugin goal이 구체적인 task(build phase보다 자세한 단계)를 나타냅니다.

📌 clean과 site phase
clean: 컴파일, 패키징 등 메이븐에서 실행하면서 생성한 파일을 삭제하거나 초기화하는 역할
site: 테스트 결과, 빌드 결과를 기록하기 위해서는 site phase에 내용을 정의해야 한다.

pom.xml 구조

https://maven.apache.org/pom.html

선언적 접근 방법을 사용하고 있음.
모든 pom.xml은 최상위 pom.xml를 참조하는데, 이는 메이븐에서 기본으로 제공하고 있으며, 개발자가 만든 pom.xml은 이를 상속받아서 사용한다. super POM이라 함.

super POM에는
build 태그 > 메이븐의 기본 디렉토리 구조 정의

정리하면서 생긴 의문

plugins는 어디에 쓰이는가?
https://maven.apache.org/guides/introduction/introduction-to-plugins.html#:~:text=Plugins%20are%20the%20central%20feature,Project%20Object%20Model%20(POM).

create jar files, create war files, compile code, unit test code, create project documentation 등등 maven을 사용할때 쓰이는 대부분의 기능을 구현한 것

profile
서로 아는 것들을 공유해요~

0개의 댓글