메이븐 설정 파일
알아야할 설정 파일
- settings.xml (메이븐 빌드툴 관련)
- pom.xml (메이븐 기반 프로젝트에서 사용하는 설정 파일)
pom.xml 설정 파일
메이븐은 빌드와 관련된 정보를 프로젝트 객체 모델(Project Object Model)이라는 이름으로 정의한다.
메이븐의 'mvn' 명령은 기본적으로 pom.xml파일을 읽어 빌드를 실행한다. (pom.xml 파일이 아닌 다른 설정 파일을 사용하려면 -f 또는 --file 옵션을 사용한다.)
mvn -f customPom.xml package
POM은 크게 4가지 카테고리로 분류된다.
- 프로젝트 기본 정보
- 빌드 설정
- 프로젝트 관계 설정 (dependency 관련)
- 빌드 환경 (빌드환경에 따른 정보, 프로파일)
프로젝트 기본 정보
프로젝트 이름, 프로젝트 URL, 참여한 개발자 목록, 라이센스 등 기본적인 정보를 관리하는 부분
빌드 설정
기본적인 빌드 설정을 변경하기 위한 카테고리이며 기본으로 제공하는 플러그인의 설정을 변경할 때나 플러그인을 추가하여 빌드 과정에 포함시키기 위한 설정에 사용됨 (다양한 리포트 문서도 생성 가능)
프로젝트 관계 설정 (dependencies)
라이브러리의 의존관계를 설정하는 부분
빌드 환경
모든 프로젝트는 다양한 환경에 배포하는 것이 가능해야 한다.(개발서버, 운영서버, 테스트 서버)
환경에 따라 약간씩 변경되는 부분이 발생하는데, 다양한 환경에 따라 다른 설정 정보를 관리할 수 있는 카테고리이다. (profile 기능을 제공)
pom.xml 주요 엘리먼트
<project ..>
<build>
<defaultGoal>...</defaultGoal>
<finalName>...</finalName>
<resources>...</resources>
<testResources>...</testResources>
<plugins>...</plugins>
</build>
<reporting>...</reporting>
<modules>...</modules>
<dependencies>...</dependencies>
<dependencyManagement>...</dependencyManagement>
<distributionManagement>...</distributionManagement>
<pluginManagement>...</pluginManagement>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<properties>...</properties>
<profiles>...</profiles>
</project>
최상위 POM 설정 파일
메이븐은 기본적인 디렉토리 구조와 기본적인 플러그인 정보를 포함하고 있는 POM 설정파일을 제공한다. 이 POM을 최상위 POM 파일이라고 부르며 메이븐에 포함되어 있는 jar파일을 통하여 배포한다.
우리가 만든 메이븐 프로젝트의 POM은 최상위 POM을 상속받는 구조이다.
mvn help:effective-pom
명령어를 실행하여 상속하고 있는 POM파일의 정보를 확인할 수 있다.
mvn package 명령어를 통해서 설정파일이 잘 적용되었는지 확인한다.
프로젝트를 빌드하면 target이라는 디렉토리가 생성된다. (메이븐 빌드 후 모든 산출물은 target 디렉토리에서 관리)
- target/classess : src/main/java 존재하는 컴파일된 바이너리 코드, src/main/resources 자원이 복사됨
- target/test-classess : src/test/java 존재하는 컴파일된 바이너리 코드, src/test/resources 자원이 복사됨
- target/{project_name} : war로 패키징하는 데 필요한 모든 자원의 위치, target/classess 디렉토리 하위의 파일들이 {project_name}/WEB-INF/classess 디렉토리 아래에 복사된다.
- target/surefire-reports : 빌드하면서 생성된 리포트 문서의 위치
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Maven] 메이븐 페이즈와 플러그인 (0) | 2019.03.28 |
---|---|
[Maven] 메이븐 라이프사이클과 페이즈 (0) | 2019.03.28 |
[Maven] 메이븐 설정 파일 (settings.xml) (0) | 2019.03.25 |
[Maven] 메이븐 설치 및 템플릿 프로젝트 생성 (0) | 2019.03.25 |
[Maven] 메이븐(Maven) 생명주기 (0) | 2018.07.27 |