지난번에 parent태그에 대해서 찾아봤지만 pom에는 다른태그들도 많다.
한번 정리해보는 시간을 가져보자
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mytest</groupId>
<artifactId>TestBase</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>TestBase</name>
<description>TestBase</description>
<properties>
...
</properties>
<dependencies>
...
</dependencies>
<build>
<plugins>
...
</plugins>
</build>
</project>
대충 써보면 이정도가 기본 구성이 될수있을꺼같다.
각 태그가 무슨역할을 하는지 알아보자
project태그에는 프로젝트의 정보를 기술하면된다.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mytest</groupId>
<artifactId>TestBase</artifactId>
<version>0.0.1-SNAPSHOT</version>
...
</project>
사실 최소한의 구성이라고하면 이렇게 project태그만 채워줘도 된다. 하지만 이렇게 쓰는경우는 없지 않은가?
예시에 적어놓은것도 있지만 가능한 속성은 더 많다.
modelVersion
maven의 pom.xml의 모델버전이다. 현재는 4.0.0
groupId
프로젝트를 생성한 그룹명, 프로젝트의 식별값
일반적으로 회사이름을 거꾸로해서 쓴다.
artifactId
버전정보를 생략한 jar파일의 이름, 프로젝트의 이름으로 사용합니다.
소문자와 특수문자를 조합해서 사용
version
프로젝트 버전
packaging
프로젝트를 어떤형태로 패키징할지 packaging type을 적어준다.
jar, war, ear, pom, rar, ejb...
타입에 따라서 다른형태로 패키징이 된다.
본문에서는 war로 해놨으니 war가 된다.
부모 pom이라면 pom으로 해야된다.
name
프로그램이름
보통 artifactId와 같이 갈것이다.
url
프로젝트와 관련된 Web 사이트의 주소이다. 기본적으로 Apache Maven의 Web 사이트의 주소가 지정되어 있다.
description
말그대로 설명이다. 주석같은 느낌?
해당 maven 내부에서 반복적으로 사용될 상수 값을 정의할 때 사용
ex) 공통으로 사용할 버전, 설정값
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...
</properties>
이렇게 공통으로 모아서 정리해두면 보기도 쉽고 정의하기도 편하다.
의존성을 정의하는부분 사실이게 핵심이라고 할 수있다.
프로젝트와 의존관계에 있는 라이브러리들을 모아 관리합니다.
<dependency>들을 모아서 관리한다.
<dependency>태그에는 라이브러리 정보를 기술하며 최소 groupId
, artifactId
, version
정보가 필요함
parent로 상속구조만들면 생략가능
<dependencies>
<dependency>
<groupId>그룹 ID</groupId>
<artifactId>아티팩트 ID</artifactId>
<version>버전</version>
<scope>이 라이브러리가 이용되는 범위</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
빌드할때 사용할 플러그인 목록을 기술
configuration, execution등의 옵션으로 여러 플러그인들의 실행에 관련된 설정을 지정가능
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
pom.xml을 이렇게 자세하게 뜯어본적은 없는데 알고있는것도 이렇게 글로 정리하면 좀 느낌이 다른듯