회사에서 JSP를 사용하다 보니 스프링 부트 프로젝트는 war 파일로밖에 배포할 수 없다. 스프링 부트 프로젝트에서는 Gradle을 쓰고 있는데 Intellij-Gradle 환경에서는 외장 톰캣 사용을 위해서는 별도의 설정이 필요하다.
Intellij에서 Gradle로 빌드하면 war 파일로 배포가 정상적으로 이뤄지지 않는 버그가 있다고 한다.
- https://stackoverflow.com/questions/47078199/intellij-fails-deploying-exploded-war-to-tomcat
- https://youtrack.jetbrains.com/issue/IDEA-176700/Gradle-exploded-WAR-is-not-generated-when-Delegate-IDE-buildrun-actions-to-gradle-is-enable
실제로 외장 톰캣을 설정하고 실행해보니 Gradle의 output 경로인 build/libs 디렉터리가 제대로 생성되지 않는 것을 확인했다. 몇 년 전부터 있던 버그인데 아직도 해결이 안 된 거 같다.
결국, 인텔리제이에서 Gradle을 사용하여 빌드하고 외장 톰캣으로 실행하는 것은 어렵다고 판단된다. 따라서, Gradle을 사용하는 프로젝트에서 외장 톰캣으로 실행하려면, gradle로 빌드하지 말고 Intellij IDE를 사용하도록 설정해야 한다.
Settings - Build, Execution, Deployment - Build Tools - Gradle - Build and run using과 Run tests using을 Gradle이 아닌 IntelliJ로 설정해준다.