티스토리 뷰

Web/Spring

[Spring] 메이븐(Maven)이란?

쩨리쩨리 2018. 5. 17. 03:50
반응형

* Maven

 

- Spring 프레임 워크 기반의 프로젝트를 진행하려 spring에 대해서 알아보던 중 maven을 프로젝트에 추가해야 할 필요성을 느꼈다. 그럼 메이븐이란 무엇인가?

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

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

- 필요한 라이브러리를 특정 문서(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이라 한다.

 

- 플러그인의 goal을 실행하는 방법 : mvn groupId:artifactId:version:goal 과 mvn plugin: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이다.

 

 

 

 

 

 

 

반응형
댓글
공지사항