본문 바로가기

IT/Spring

[JAVA_SPRING] Maven이란?/Maven이 무엇인가? - 사좋배 공유

Apache Maven의 사전적 정의

 

Apache Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.

Apache License로 배포되는 오픈 소스 소프트웨어이다.

사전적 정의만 봐서는 이해할수가 없다.

 

 

Apache Maven이란?

프로젝트를 진행하게 되면 단순히 자신이 작성한 코드만으로개발하는것이 아니라 많은 라이브러리들을 활용해서 개발을 하게 된다. 이때 사용되는 라이브러리들의 수가 수십개가 훌쩍 넘어버리는 일이 발생해 이 많은 라이브러리들을 관리하는 것이 힘들어지는 경우가 종종 발생하곤 합니다. Maven은 이러한 문제를 해결해 줄 수 있는 도구 입니다. Maven은 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운 받아 줍니다.

쉽게말하면, 필요한 라이브러리를 특정문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운받아주고 라이브러리들을 관리해 주는 역할을 하는것.

 

Apache Maven의 장점

1. 라이브러리의 관리를 매우 용이하게 해준다.

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

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

 

Apache Maven의 LifeCycle

메이븐은 프레임워크이기 때문에 동작 방식이 정해져있는데, 일련의 단계(Phase)에 연계된 Gaol을 실행하는 과정을 Build라고 하며, 미리 정의되어 있는 Build들의 순서를 라이프사이클(LifeCycle)이라 한다.

즉, 미리 정의된 빌드순서를 라이프사이클(LifeCycle)이라고 하고, 각 빌드 단계를 Phase라고 합니다.

Maven build: 메이븐 빌드를 실행한다.

Maven build....: 새로운 사용자 빌드를 만든다.

Maven clean: target에 지정된 모든 소스를 삭제한다.

Maven generate-sources: 컴파일 과정에 포함될 소스를 생성한다.

Maven install: Local Repository에 패키지를 복사한다.

 

일반적으로 메이븐은 3개의 표준 라이프사이클을 제공한다.

 

1.Clean: 빌드 시 생성되었던 Output을 지워준다.

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

3.Site: 프로젝트 문서와 사이트 작성을 수행한다.