3장 Maven으로 테스트를 통과한 WAR를 만든다
Maven 프로젝트는 <packaging>war</packaging>으로 패키징을 선언하고 package 단계에서 WAR Plugin을 실행한다. 2026년 8월 공식 Maven 문서의 안정 버전 예시는 3.5.1이다. 버전은 부모 POM 또는 plugin management에서 고정한다.
<packaging>war</packaging>
<build>
<finalName>releaseportal</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.5.1</version>
</plugin>
</plugins>
</pluginManagement>
</build>
정상 빌드 명령은 war:war만 직접 부르는 것이 아니라 전체 lifecycle을 거친다.
./mvnw --batch-mode clean verify
./mvnw --batch-mode package
jar --list --file target/releaseportal.war
보통 package도 앞 단계 테스트를 실행하므로 두 명령을 항상 연달아 실행할 필요는 없다. 팀이 integration-test와 verify 검사를 별도 profile에 묶었다면 CI 명령을 한 줄로 문서화한다. -DskipTests는 운영 배포 pipeline의 기본값이 될 수 없다.
빌드 결과에는 WAR, 체크섬, Git commit, 빌드 JDK, 의존성 목록 또는 SBOM, 테스트 결과를 함께 보관한다. 같은 commit을 서버에서 다시 빌드하지 않는다. CI가 한 번 만든 불변 아티팩트를 개발·검증·운영으로 승격한다.