빌드 태그 활용
Maven 프로젝트에서 build 태그는 기본 빌드 구성을 재정의할 때 사용됩니다. 기본 설정은 유효 POM에서 확인 가능하며, 사용자 정의가 필요할 때 명시적으로 선언합니다.
유효 POM 출력 명령
mvn help:effective-pom
빌드 태그 구조
빌드 구성은 세 가지 주요 요소로 분류됩니다:
디렉터리 구조 정의
<sourceDirectory>src/core/java</sourceDirectory>
<outputDirectory>target/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
| 태그 | 기능 |
|---|---|
| sourceDirectory | 메인 소스 코드 위치 |
| outputDirectory | 컴파일 결과 출력 경로 |
| resources | 리소스 파일 디렉터리 |
플러그인 관리
pluginManagement를 통해 플러그인 버전을 중앙 관리합니다:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
생명주기 플러그인
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
JDK 버전 지정
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
Spring Boot 패키징
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.3</version>
</plugin>
</plugins>
</build>
의존성 범위 확장
import 범위
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
runtime 범위
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
프로필 관리
프로필은 환경별(개발/테스트/운영) 구성 관리를 지원합니다.
프로필 구성
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>development</env>
</properties>
</profile>
</profiles>
다중 환경 설정
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application-*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application-${env}.yml</include>
</includes>
</resource>
</resources>
</build>
프로필 활성화
명령행에서 프로필 지정:
mvn package -Denv=production