개요

POM은 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 프로젝트 정보들을 담고 있으며 이는 메이븐 프로젝트 생성 시 기본 설정 파일로 생성되는 pom.xml 파일에 기술된다.

설명

pom.xml 파일은 프로젝트의 세부 메타 데이터 정보를 포함하며 크게 10개의 항목으로 구성된다.
프로젝트 일반 정보, 버전 및 설정 관리, 빌드 환경, 라이브러리 저장소 및 의존성 등의 내용을 포함한다.

  • General Information
    프로젝트 이름, 설명, 버전 정보 등을 기술한다. - 프로젝트 정보 생성 참조
  • Organization : 프로젝트 조직 정보: 이름, 홈페이지 URL
  • Project Team and Collaborations tools
    형상관리 서버, 이슈 트랙커, 통합 빌드 서버 정보 등
  • Build
    인코딩 정보 등 빌드 Lifecycle 환경 설정
  • Reporting
    리포트 생성 기능을 설정한다. -
  • Dependencies
    프로젝트에서 사용하는 라이브러리를 선언하여 Build Path에 포함시킨다. - Dependency(의존성) 설정 참조
  • Repositories
    라이브러리 저장소 위치 설정
  • Distribution Management
    배포 환경 설정
  • Profiles
    이기종 환경에서의 이식성을 높여 주기 위한 빌드 설정
    Maven 빌드 profile 소개
  • Properties

사용법

pom.xml 파일에 프로젝트 이름, 패키징 방법, 버전 정보, 프로젝트 설명 등의 파일을 기술하며 프로젝트에서 사용하는 환경 설정
빌드 방법, 사용하는 라이브러리 정보 등을 기술한다.

프로젝트 정보 생성

프로젝트 groupId, artifactId, 패키징 타입, 버전 정보 및 프로젝트 설명을 기술한다. 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>egovframework.guideprogram</groupId>
  <artifactId>egovframework.guideprogram.basicsample</artifactId>
  <packaging>war</packaging>
  <version>1.0.0-SNAPSHOT</version>
  <name>egovframework.guideprogram.basicsample</name>
  <url>http://maven.apache.org</url>
 
  <properties>
    <!-- Spring version -->   
    <spring.maven.artifact.version>2.5.6</spring.maven.artifact.version>
    <compileSource>1.5</compileSource>
    <encoding>UTF-8</encoding>
  </properties>    
</project>

2. Repository 설정

사용할 리포지토리 정보를 설정한다. 주로 프로젝트에서 Nexus와 같은 로컬 리포지토리를 사용할 경우 
접속 정보를 설정해서 Nexus에 접속하여 artifact들을 다운로드 받을 수 있다. 
  <repositories>
    <repository>
      <id>central</id>
      <releases>
        <enabled>true</enabled>
      </releases>
      <url>http://192.168.100.15:8081/nexus/content/groups/public</url>
    </repository>
    <repository>
      <id>snapshots</id>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <url>http://192.168.100.15:8081/nexus/content/groups/public-snapshots</url>
    </repository>
  </repositories>

Dependency(의존성) 설정

프로젝트에서 사용할 라이브러리(Maven에서는 artifact라 함)을 선언한다.
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <version>${spring.maven.artifact.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>2.5</version>
      <type>jar</type>
    </dependency>
  </dependencies>

4. Reporting 설정

메이븐은 프로젝트 정보에 대한 기본 report 뿐만 아니라 플러그인 설정을 통해 emma, JavaDoc 등의 report 생성 기능을 제공한다. 
  <reporting>
    <outputDirectory>${basedir}/target/site</outputDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.0.1</version>
      </plugin>
      <!-- JUnit Test Results & EMMA Coverage Reporting -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
	<artifactId>emma-maven-plugin</artifactId>
	<inherited>true</inherited>
      </plugin>
      <plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>surefire-report-maven-plugin</artifactId>
	<inherited>true</inherited>
      </plugin>
      <!-- Generating JavaDoc Report -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-javadoc-plugin</artifactId>
	<configuration>
	  <minmemory>128m</minmemory>
	  <maxmemory>512m</maxmemory>
	  <encoding>UTF-8</encoding>
	  <docencoding>UTF-8</docencoding>
	  <charset>UTF-8</charset>
	</configuration>
      </plugin>
    </plugins>
  </reporting>

샘플

pom.xml 예제

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>egovframework.dev.com</groupId>
  <artifactId>egovframework-dev-com</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>
  <name>egovframework-dev-com Maven Webapp</name>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>    
    </plugin>
  </plugins>
</project>
 
egovframework/dev2/dep/maven/프로젝트_객체_모델_pom.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki