Maven-개요
Maven은 무엇입니까?
Maven은 개발자에게 완전한 빌드 수명주기 프레임 워크를 제공하는 프로젝트 관리 및 이해 도구입니다. Maven은 표준 디렉터리 레이아웃과 기본 빌드 수명주기를 사용하므로 개발 팀은 거의 즉시 프로젝트의 빌드 인프라를 자동화 할 수 있습니다.
여러 개발 팀 환경의 경우 Maven은 매우 짧은 시간에 표준에 따라 작업하는 방법을 설정할 수 있습니다. 대부분의 프로젝트 설정이 간단하고 재사용 가능하기 때문에 Maven은 보고서를 작성하고, 확인하고, 자동화 설정을 빌드하고 테스트하는 동안 개발자의 삶을 쉽게 만듭니다.
Maven은 개발자에게 다음을 관리하는 방법을 제공합니다.
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- 메일 링리스트
요약하면 Maven은 프로젝트 빌드 프로세스를 단순화하고 표준화합니다. 컴파일, 배포, 문서화, 팀 협업 및 기타 작업을 원활하게 처리합니다. Maven은 재사용 성을 높이고 대부분의 빌드 관련 작업을 처리합니다.
메이븐 에볼루션
Maven은 원래 Jakarta Turbine 프로젝트에서 건물 프로세스를 단순화하도록 설계되었습니다. 여러 프로젝트가 있었고 각 프로젝트에는 약간 다른 ANT 빌드 파일이 포함되어 있습니다. JAR이 CVS에 체크인되었습니다.
Apache 그룹이 개발되었습니다. Maven 여러 프로젝트를 함께 빌드하고, 프로젝트 정보를 게시하고, 프로젝트를 배포하고, 여러 프로젝트에서 JAR을 공유하고, 팀 공동 작업을 지원할 수 있습니다.
객관적인
Maven의 주요 목표는 개발자에게 다음을 제공하는 것입니다.
재사용 가능하고 유지 보수 가능하며 이해하기 쉬운 프로젝트를위한 포괄적 인 모델입니다.
이 선언적 모델과 상호 작용하는 플러그인 또는 도구입니다.
Maven 프로젝트 구조와 내용은 전체 Maven 시스템의 기본 단위 인 POM (Project Object Model)이라고하는 pom.xml이라는 xml 파일에 선언되어 있습니다. 이후 장에서 POM에 대해 자세히 설명합니다.
구성보다 관례
Maven 사용 Convention 위에 Configuration이는 개발자가 직접 빌드 프로세스를 만들 필요가 없음을 의미합니다.
개발자는 각각의 모든 구성 세부 사항을 언급 할 필요가 없습니다. Maven은 프로젝트에 대해 합리적인 기본 동작을 제공합니다. Maven 프로젝트가 생성되면 Maven은 기본 프로젝트 구조를 생성합니다. 개발자는 그에 따라 파일을 배치하기 만하면되며 pom.xml에 구성을 정의 할 필요가 없습니다.
예를 들어 다음 표는 프로젝트 소스 코드 파일, 리소스 파일 및 기타 구성의 기본값을 보여줍니다. 가정,${basedir} 프로젝트 위치를 나타냅니다-
안건 | 기본 |
---|---|
소스 코드 | $ {basedir} / src / main / java |
자원 | $ {basedir} / src / main / resources |
테스트 | $ {basedir} / src / test |
준수 된 바이트 코드 | $ {basedir} / 대상 |
배포 가능한 JAR | $ {basedir} / target / classes |
프로젝트를 빌드하기 위해 Maven은 개발자에게 수명주기 목표 및 프로젝트 종속성 (Maven 플러그인 기능 및 기본 규칙에 의존)을 언급하는 옵션을 제공합니다. 대부분의 프로젝트 관리 및 빌드 관련 작업은 Maven 플러그인에 의해 유지됩니다.
개발자는 개별 플러그인의 작동 방식을 이해할 필요없이 주어진 Maven 프로젝트를 빌드 할 수 있습니다. 이후 장에서 Maven 플러그인에 대해 자세히 설명합니다.
Maven의 특징
모범 사례를 따르는 간단한 프로젝트 설정.
모든 프로젝트에서 일관된 사용.
자동 업데이트를 포함한 종속성 관리.
크고 성장하는 라이브러리 저장소.
Java 또는 스크립팅 언어로 플러그인을 쉽게 작성할 수있는 기능으로 확장 가능합니다.
추가 구성이 거의 또는 전혀없이 새로운 기능에 즉시 액세스 할 수 있습니다.
Model-based builds − Maven은 jar, war, 메타 데이터와 같은 사전 정의 된 출력 유형으로 원하는 수의 프로젝트를 빌드 할 수 있습니다.
Coherent site of project information − 빌드 프로세스에 따라 동일한 메타 데이터를 사용하여 maven은 완전한 문서가 포함 된 웹 사이트와 PDF를 생성 할 수 있습니다.
Release management and distribution publication − 추가 구성없이, maven은 CVS와 같은 소스 제어 시스템과 통합되고 프로젝트 릴리스를 관리합니다.
Backward Compatibility− 이전 버전의 Maven에서 Maven 3으로 프로젝트의 여러 모듈을 쉽게 이식 할 수 있습니다. 이전 버전도 지원할 수 있습니다.
Automatic parent versioning − 유지 보수를 위해 하위 모듈에서 상위 모듈을 지정할 필요가 없습니다.
Parallel builds− 프로젝트 의존성 그래프를 분석하여 일정 모듈을 병렬로 구축 할 수 있습니다. 이를 사용하면 20-50 %의 성능 향상을 달성 할 수 있습니다.
Better Error and Integrity Reporting − Maven은 오류보고를 개선했으며 오류에 대한 전체 설명을 얻을 수있는 Maven 위키 페이지에 대한 링크를 제공합니다.