hanker

[Spring] Gradle .war 와 -plain.war의 차이 본문

SPRING

[Spring] Gradle .war 와 -plain.war의 차이

hanker 2025. 6. 11. 15:43
반응형

Gradle에서 JAR/WAR 파일을 멀티 아카이브 형식으로 생성할 때, 보통 아래 두 가지를 만들어준다.

  • project-name.war
  • project-name-plain.war

일반적으로 war파일이 생성되는 건 알겠는데, plain.war는 뭘까

 


plain.war

 

Spring Boot는 기본적으로 내장 Tomcat을 포함한 실행 가능한 JAR 또는 WAR 파일을 만들 수 있다.  
Gradle에서 생성된 project-name.war는 내장 Tomcat이 포함된 실행 가능한 WAR 파일이므로  
java -jar project-name.war 명령으로 바로 실행할 수 있다.

 

 

하지만 -plain war로는 실행이 불가능하다.

-plain.war는 실행에 필요한 의존 라이브러리나 부트스트랩 설정이 포함되지 않기 때문에, Spring Boot 애플리케이션처럼 단독 실행은 불가능하다.

파일명 설명
project-name.war 실행 가능한 WAR (내장 Tomcat 포함, Spring Boot에서 실행 가능)
project-name-plain.war 순수 WAR (라이브러리 제외, 실행 불가능, 외부 컨테이너에서 실행용)

 

 

그럼 언제 -plain.war를 쓸까?

JEUS, JBoss, Tomcat 같은 외부 WAS(Web Application Server)에 배포할 경우에는 내장 톰캣이 필요하지 않기 때문에

-plain.war 또는 war 태스크로 생성된 순수 WAR 파일을 사용하는 것이 일반적이다.

 

 

 


정리

 

  • -plain.war : 의존성(dependencies)이 포함되지 않은 순수한 WAR 아카이브이다. 보통 라이브러리를 별도 제공하거나, 컨테이너가 라이브러리를 따로 로딩하는 구조에서 사용한다.
  • 기본 WAR (ncip_new.war) : 보통 spring-boot-gradle-plugin이 적용된 경우, 내장 톰캣 포함 + 실행 가능한 구조로 패키징된 WAR이다.

 

반응형