springboot创建war包部署在外部tomcat上

今天我想跟大家分享的是使用springboot如何创建可部署在外部Tomcat的war包?网上都讲了很多,不过我还是要记录一下:

springboot官方文档上面写的已经很清楚了(85.1 Create a deployable war file)

1、主类继承SpringBootServletInitializer且覆盖它的configure 方法。

@SpringBootApplication
public class Application extends SpringBootServletInitializer {    
   @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {      
        return application.sources(Application.class);
    }    
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

2、修改你的build配置以便你的项目生成war文件而不是jar文件。如果你使用了Maven并且使用了spring-boot-starter-parent这个类,你只需要修改pom.xml packaging 为war就可以了(不熟悉maven的同学可以先学习一下maven相关知识)

<packaging>war</packaging>

如果你使用Gradle,你需要修改build.gradle应用war插件

apply plugin: 'war'

3、该过程的最后一步是确保嵌入的servlet容器不会干扰将要部署WAR文件的servlet容器。为此,需要标记所提供的内嵌servlet容器依赖为provided。

maven配置

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … --></dependencies>

Gradle配置

dependencies {    // …
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // …}