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