POM 구조 이해
메이븐은 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구이다.
다른 빌드 도구와는 다르게 선언적 접근 방법(Declarative Approach)를 사용한다. 빌드 프로세스를 이벤트 단위로 기술하는 것이 아니라, 프로젝트를 설명하고 프로젝트 구조에 대해서 정의하고 이와 관련된 연관 정보들을 기술하는 형태를 가지고 있다.
pom.xml 에 들어가는 정보내용
기본정보 |
프로젝트 정의(컨텍스트와 아티팩트를 정의) : 필수 연관 정보(라이브러리 연관 관계 및 상위 프로젝트 등 관련 정보에 대한 기술) : 필수 |
프로젝트 정보 |
선택 |
빌드 설정 |
빌드 정의(기본 설정되어 있는 빌드 프로세스에 변경을 위하여 별도의 플러그인을 적용할 때 사용) : 선택 리포트 정의(빌드 프로세스에 대한 리포팅 뿐 아니라 연관된 시스템과 결과 정보 등을 리포트로 만들기 위해 정의) : 선택 |
환경설정 |
선택 |
최상위 태그는 <project> (XML의 루트 태그)
모든 pom.xml은 최상위 pom.xml을 참조한다.
메이븐에서 기본적으로 제공하고 있는 것이며 개발자가 만드는 모든 pom.xml은 이를 상속받아서 사용한다.
이를 슈퍼 POM(Super POM)이라고 부른다. 재정의 하지 않는 이상 항상 기본값으로 적용되어 동작한다.
pom.xml 에서 사용되는 태그 (몇개만 설명)
<build>
- 메이븐의 기본 디렉터리 구조가 정의 되어 있다. 이정의 내용을 변경하여 메이븐의 기본 구조를 변경할 수 있다.
<version>
- 메이븐에서 버전에 대한 명명 규칙을 SNAPSHOT 과 RELEASE로 구분한다.
- SNAPSHOT은 완성되지 않은 버전, RELEASE는 완성되어서 공식 배포된 버전이다.
<properties>
- pom.xml 파일 내부에서 사용할 속성을 정의한다. 주로 버전 정보 같이 공통적으로 많이 사용하는 내용을 속성으로 정의한다.
<scm>
- 버전 관리 시스템과 연계하기 위한 정보를 기술
<repositories>
- 메이븐 저장소 정보를 기술. 주로 사내 사설 저장소를 사용할 때 사용
<distributionManagement>
- 빌드의 결과물을 배포할 위치를 지정. 주로 사내 사설 저장소의 정보를 사용
<profiles>
- 특정 항목 혹은 특정 속성에 따라 빌드를 다르게 수행할 수 있다. 주로 하나의 pom.xml 파일로 개발, 테스트, 운영환경에서 모두 실행 가능하도록 할 때 유용하게 사용한다.
최신 pom정보는 (maven.apache.org/pom.html)에서 얻을 수 있음
최소 pom
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Maven] 메이븐(Maven) 생명주기 (0) | 2018.07.27 |
---|---|
[Maven] 메이븐(Maven) 기본 Properties(설정파일) (0) | 2018.07.27 |
[Maven] 메이븐(maven) 의존성 관리 및 저장소의 이해 (0) | 2018.07.02 |
[Maven] 메이븐(Maven) 빌드 및 패키징 (0) | 2018.06.14 |
[Maven] 메이븐(Maven) 설치 및 프로젝트 생성 (0) | 2018.06.13 |