===== 개요 ===== POM은 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 프로젝트 정보들을 담고 있으며 이는 메이븐 프로젝트 생성 시 기본 설정 파일로 생성되는 pom.xml 파일에 기술된다. \\ ===== 설명 ===== pom.xml 파일은 프로젝트의 세부 메타 데이터 정보를 포함하며 크게 10개의 항목으로 구성된다. \\ 프로젝트 일반 정보, 버전 및 설정 관리, 빌드 환경, 라이브러리 저장소 및 의존성 등의 내용을 포함한다. \\ \\ {{:egovframework:dev:dep:maven:mvn-pom-structure.gif|}} * **General Information** \\ 프로젝트 이름, 설명, 버전 정보 등을 기술한다. - [[#프로젝트 정보 생성]] 참조 * Organization : 프로젝트 조직 정보: 이름, 홈페이지 URL * Project Team and Collaborations tools \\ 형상관리 서버, 이슈 트랙커, 통합 빌드 서버 정보 등 * **Build** \\ 인코딩 정보 등 [[빌드 Lifecycle]] 환경 설정 * **Reporting** \\ 리포트 생성 기능을 설정한다. - * **Dependencies** \\ 프로젝트에서 사용하는 __라이브러리__를 선언하여 Build Path에 포함시킨다. - [[#Dependency(의존성) 설정]] 참조 * Repositories \\ 라이브러리 저장소 위치 설정 * Distribution Management \\ 배포 환경 설정 * Profiles \\ 이기종 환경에서의 이식성을 높여 주기 위한 빌드 설정 \\ [[http://maven.apache.org/guides/introduction/introduction-to-profiles.html|Maven 빌드 profile 소개]] * Properties ===== 사용법 ===== pom.xml 파일에 프로젝트 이름, 패키징 방법, 버전 정보, 프로젝트 설명 등의 파일을 기술하며 프로젝트에서 사용하는 환경 설정 \\ 빌드 방법, 사용하는 라이브러리 정보 등을 기술한다. ==== 프로젝트 정보 생성 ==== 프로젝트 groupId, artifactId, 패키징 타입, 버전 정보 및 프로젝트 설명을 기술한다. 4.0.0 egovframework.guideprogram egovframework.guideprogram.basicsample war 1.0.0-SNAPSHOT egovframework.guideprogram.basicsample http://maven.apache.org 2.5.6 1.5 UTF-8 ==== 2. Repository 설정 ==== 사용할 리포지토리 정보를 설정한다. 주로 프로젝트에서 Nexus와 같은 로컬 리포지토리를 사용할 경우 접속 정보를 설정해서 Nexus에 접속하여 artifact들을 다운로드 받을 수 있다. central true http://192.168.100.15:8081/nexus/content/groups/public snapshots true http://192.168.100.15:8081/nexus/content/groups/public-snapshots ==== Dependency(의존성) 설정 ==== 프로젝트에서 사용할 라이브러리(Maven에서는 artifact라 함)을 선언한다. org.springframework spring ${spring.maven.artifact.version} org.springframework spring-webmvc 2.5 jar ==== 4. Reporting 설정 ==== 메이븐은 프로젝트 정보에 대한 기본 report 뿐만 아니라 플러그인 설정을 통해 emma, JavaDoc 등의 report 생성 기능을 제공한다. ${basedir}/target/site maven-project-info-reports-plugin 2.0.1 org.codehaus.mojo emma-maven-plugin true org.codehaus.mojo surefire-report-maven-plugin true org.apache.maven.plugins maven-javadoc-plugin 128m 512m UTF-8 UTF-8 UTF-8 ===== 샘플 ===== ==== pom.xml 예제 ==== 4.0.0 egovframework.dev.com egovframework-dev-com 1.0 war egovframework-dev-com Maven Webapp junit junit 4.4 test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5