WEBBOOK CHAPTER

WAR 배포, 밤에 깨지 않게: 3장 Maven으로 테스트를 통과한 WAR를 만든다

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가 한 번 만든 불변 아티팩트를 개발·검증·운영으로 승격한다.