메이븐 저장소
- 중앙 저장소
- 오픈 소스 라이브러리, 메이븐 플러그인, 메이븐 아키타입 관리
- http://repo1.maven.org/maven2/
- 개발자 임의로 라이브러리 배포 불가
- 원격 저장소
- 사내 원격 저장소 또는 별도의 3자 업체에서 제공하는 저장소
- 로컬 저장소
- 개발자 PC의 저장소
메이븐 저장소 설정
- <repository> 엘리먼트 설정을 통해 추가 저장소를 설정 가능
메이븐 의존 라이브러리 관리
- <dependency> 엘리먼트 설정을 통해 라이브러리 설정
- <version> 엘리먼트의 의존성 관리
- 예1) [3.8, 4.8): 3.8 버전을 포함하고, 4.8보다 작은 버전을 사용
- 예2) LATEST/RELEASE - 가장 최신 버전 사용
- 개발중인 라이브러리에 SNAPSHOT 접미어 사용 시, 매 빌드 시 최신 버전의 라이브러리 다운로드
- <scope> 엘리먼트의 속성
- compile : 해당 라이브러리는 컴파일 단계 이상에서 포함
- provided : 해당 라이브러리는 배포 단계 및 그 이후 단계에서 제외 (예: servlet.jar)
- runtime : 애플리케이션 실행 시에만 사용
- test : 테스트 시점에만 사용
- system : provided와 비슷하나, 사용자가 직접 제공하는 jar 파일
- import : 다른 POM 설정 파일에 정의되어 있는 의존관계 설정을 현재 프로젝트로 가져옴
메이븐 의존성 전이
- 프로젝트에 포함되는 라이브러리가 포함하는 라이브러리를 자동으로 포함시켜줌
- 즉, 라이브러리의 POM 에 설정된 의존성을 프로젝트에서 로드
- 의존성 전이를 피하고 싶을 땐 다음과 같은 방법이 가능
- <exclusion>엘리먼트를 통해 특정 라이브러리를 명시적으로 제외
- <optional> 엘리먼트를 통해 선택적으로 포함되는 라이브러리를 제외시킬 수 있음
- <scope>를 통해, 특정 단계에만 포함할 라이브러리를 설정
속성
- <properties> 엘리먼트 하위의 <property.name>에 정의
- ${property.name}의 형태로 사용
- POM/project 속성
- pom.xml 파일의 엘리먼트에 설정한 정보. pom 또는 project 접두어를 가짐
- ${project.build.directory}, ${pom.build.directory} : target 디렉토리
- ${project.build.outputDirectory} : target/classes 디렉토리
- ${project.name}, ${pom.name} : 프로젝트 이름
- ${project.version}, ${pom.version}, ${version} : 프로젝트 버전
- ${project.build.finalName} : package 페이즈를 실행해 압축한 최종 파일 이름
- setting 속성
- settings.xml 파일에 설정한 정보. settings 접두어를 가짐
- ${settings.localRepository} : 로컬 저장소 경로
- 환경 변수 속성
- 시스템 환경 변수. env 접두어를 사용
- ${env.PATH} : 시스템의 PATH 설정
- ${env.JAVA_HOME} : 시스템의 JAVA_HOME 설정 값
- 자바 시스템 속성
- 자바 시스템 속성으로 설정된 모든 속성값을 참조 가능
- {$basedir}: pom.xml 설정 파일이 위치하는 디렉토리
출처: 자바 세상의 빌드를 이끄는 메이븐 (박재성 저)
'공부 > Maven' 카테고리의 다른 글
[서적 핵심 정리] Maven과 데이터베이스 통합 (0) | 2013.04.06 |
---|---|
[서적 핵심 정리] Maven과 이클립스 통합 (0) | 2013.04.06 |
[서적 핵심 정리] Maven 라이프사이클 (0) | 2013.04.06 |
[서적 핵심 정리] Maven 설정 파일 (2) pom.xml (0) | 2013.04.06 |
[서적 핵심 정리] Maven 설정 파일 (1) settings.xml (0) | 2013.04.06 |