2017년 8월 21일 월요일

Maven이란?

Maven : 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구

플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어 내는 빌드 기능 뿐만 아니라 레포팅 및 documentation 작성 기능 등을 제공한다.

>>내가 사용할 라이브러리 뿐만아니라 해당 라이브러리가 작동하는데 필요한 라이브러리들도 자동으로 받아줌

장점
• 뛰어난 의존성 관리 
 - 의존성 자동 업데이트 
 - 저장소를 통한 라이브리 일괄 관리 
• 모든 프로젝트에 걸쳐 쉽게 적용 가능한 일관적인 사용법 
• 라이브러리 및 메타 데이터 저장을 위한 지속적으로 확장 되고 있는 저장소 
• 쉽게 작성 가능한 플러그 인을 통한 확장성 
• 동시에 다수의 프로젝트 핸들링 할 수 있는 쉬운 설정 기반의 메커니즘
• 간단한 설정을 통한 배포 관리 
• Java, C++ 등 다수의 프로그래밍 언어 지원
단점
• Repository 관리의 불편함 
 - Maven 프로젝트의 급속한 발전으로 central repository가 제공하는 라이브러리들이 빠르게 증가하고 있으나 아직 3rd 파티 라이브러 등 미제공 라이브러리들이 있음 
• pom.xml 파일 관리 
 - 메이븐 프로젝트 관리에 대한 모든 내용이 pom.xml 파일에 담기게 되믄로 길고 장황하게 될 수 있음 
• 프로젝트에 특화된 복잡한 빌드 기능 제약 
 - 메이븐 프로젝트 특성상 소프트웨어 빌드에 통용되는 라이프 사이클을 제공하고 있어 세부 항목 또는 특화된 빌드 환경에 대한 지원이 미약함



pom.xml(Project Object Model) 
프로젝트 정보, 빌드 설정, 빌드 환경 등 프로젝트 라이브러리의 의존관계 관리하는 프로젝트 정보 기술.

<scope> 
compile : 컴파일 할때 필요. 테스트 및 런타임에도 클래스 패스에 포함 된다. scorp 을 설정 하지 않는 경우 기본값이다.
runtime : 런타임에 필요. JDBC 드라이버 등이 예가 된다. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우.
provided : 컴파일 시에 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈. servlet, jsp api 등이 이에 해당. 배포시 제외된다.
test : 테스트 코드를 컴파일 할때 필요. 테스트시 클래스 패스에 포함되며, 배포시 제외된다

댓글 없음:

댓글 쓰기