새소식

인기 검색어

개인공부/SPRING

MAVEN이란?

  • -

Maven

메이븐이란 무엇인가?

- 프로젝트를 진행하게 되면 단순히 자신이 작성한 코드만으로 개발하는 것이 아니라 많은 라이브러리들을 활용해서 개발을 한다. 이때 라이브러리들의 수가 수십 개가 넘는 일이 발생하곤 하는데, 라이브러리들이 많아지면 관리가 힘들어지게 된다. 이때 필요한 게 메이븐이다.

 

- 메이븐은 내가 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운로드하여 준다.

예를 들어보면, 10명이서 프로젝트를 진행하는데 라이브러리를 추가하고 삭제해야 하는 과정이 생겼다. 여기서 사용하는 라이브러리 수가 몇 개 안 된다면jar를 추가하는 방식으로 사용할 수 있지만, 프로젝트의 사이즈가 커지고 사용하는 라이브러리가 많아진다면 관리가 어려워진다.

메신저 등을 이용하여 라이브러리를 전송하고 받아서 import하고 이런 방식보다 dependency를 추가하고 삭제하여 라이브러리를 관리한 pom.xml 파일만 공유하는 게 훨씬 효율적인 방법이다.

또한 Maven은 필요한 라이브러리의 하위 라이브러리까지 버전에 맞게 설치해준다.
예를 들어, 팀원에게 pom.xml을 통해서 dependency에 추가하고 라이브러리를 설치한다고 하면, dependency에 명시되어있는 라이브러리를 사용하기 위한 다른 하위 라이브러리도 알아서 같이 설치를 해준다.

- 요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운로드하여 준다.

-따라서 메이븐을 사용하면 jar 파일을 공유하고 카톡으로 보내는 등의 쓸모없는 짓을 할 필요 없이 pom.xml에 필요한 것을 명시해 놓으면 라이브러리를 아주 쉽게 관리할 수 있다.

 

- 메이븐은 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며 최근에는 메이븐과 같은 라이브러리 관리 프로그램인 Gradle이 많이 사용되고 있다.

 

 


Maven의 장점과 단점

 

1. 라이브러리의 관리를 쉽게 할 수 있다.

2. 프로젝트의 작성부터 컴파일, 페스트 등 프로젝트 라이프 사이클에 포함되는 각 테스트를 지원해 준다.

3. war 파일 기반의 배포용으로도 자주 사용된다.

4. 작업 환경이 다른 개발자들이 소스코드를 공유하기 위해 메이븐을 사용할 때 pom.xml을 같이 공유하면 개발환경이 다르더라도 에러가 터지지 않고 정상적으로 실행된다.

 


Maven 라이브 사이클

 

- maven에서는 미리 정의하고 있는 빌드 순서가 있다. 이 순서를 라이프 사이클(LifeCycle)이라고 한다.

- 라이프 사이클의 각 빌드 단계를 phase라 하는데, 이런 각 phase들은 의존 관계를 가지고 있다.

- 각각의 phase는 의존관계를 가지고 있어 해당 phase가 수행되려면 이전 단계의 phase가 모두 수행되어야 한다.

 

- 메이븐에서 제공되는 모든 기능은 플러그인을 기반으로 동작한다.

- 즉 각각의 phase는 어떤 일을 할지 정의하지 않고 어떤 플러그인의 goal을 실행할지 설정한다.

- 메이븐에서는 하나의 플러그인에서 여러 작업을 수행할 수 있도록 지원하며, 플러그인에서 실행할 수 있는 각각의 기능(명령)을 goal이라 한다.

 

 


Maven의 라이프 사이클 종류

 

1. Clean : 빌드 시 생성되었던 Output 및 파일들을 지워주는 단계

2. Vaildate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계

3. Compile : 프로젝트의 소스코드를 컴파일하는 단계

4. Test : 유닛(단위) 테스트를 수행하는 단계(테스트 실패 시 빌드 실패로 처리, 스킵 가능)

5. Package : 실제 컴파일된 소스 코드와 리소스들을 jar 파일 등의 배포를 위한 패키지로 만드는 단계

6. Install : 패키지를 로컬 저장소에 설치하는 단계

7. Default(Build) : 일반적인 빌드 프로세스를 위한 모델이다.

8. Site : 프로젝트 문서와 사이트 작성, 생성하는 단계

9. Deploy : 만들어진 package를 원격 저장소에 release 하는 단계

 

등이 있는데, 가장 일반적으로 사용하는 표준 라이프 사이클은 Clean, Build, Site이다.

 

출처 : 스프링5 프로그래밍 입문 저자 : '최범균'

https://www.yes24.com/Product/Goods/62268795

'개인공부 > SPRING' 카테고리의 다른 글

@Bean vs @Component 차이  (1) 2022.10.08
Lombok이란? 및 Lombok 활용법  (0) 2022.10.06
spring 입문  (0) 2022.10.06
어노테이션(@, annotation)의 정의와 종류  (0) 2022.10.06
IntelliJ Spring 프로젝트 생성  (0) 2022.10.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.