Maven
1. 개요
아파치 소프트웨어 재단에서 개발하는 Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구. 이에 따라 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 Deploy 자원을 관리할 수 있는 환경을 제공한다. 또한 라이브러리 관리 기능도 내포하고 있다. Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, settings.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치해주고 경로까지 지정해준다.
2. 장, 단점
'''장점'''
- 컴파일과 빌드를 동시에 수행할 수 있다.
- 서버의 Deploy 자원을 관리할 수 있는 환경을 제공한다.
- pom.xml 파일을 통해 관리하므로 개발, 유지보수 측면에서 오픈소스 라이브러리, 프로젝트 등 관리가 용이하다.
- IDE에 종속된 부분들을 제거할 수 있다.
- Maven Profile 기능을 통해 배포 설정 파일을 관리하고 배포 파일을 생성할 수 있다.
- Maven에서 기본적으로 지원하지 않는 빌드 과정을 추가해야 하는 경우 상당한 고생이 따른다.
- 특정 플러그인이 설정이 약간만 달라도 해당 설정을 분리해서 중복 기술할 때가 발생한다. 불필요하게 설정이 길어지고 중복, 가독성 저하가 발생하여 유지보수성을 떨어뜨린다.
- 이와 같은 단점을 해결하기 위해, Gradle(그레이들)이라는 새로운 빌드 툴이 등장하였다. Gradle은 안드로이드 애플리케이션의 기본 빌드 툴로 채택되었다.
3. 구조
Maven 프로젝트의 기본 디렉토리 정책은 다음과 같다.
'''application-core'''
- pom.xml
- src
- main
- java
- com.package.dir
- resources
- java
- test
- java
- com.package.dir
- resources
- java
- main
4. 가상인물
* 메이븐 - 온라인 게임 마비노기의 등장인물