0x00 简介

在idea运行的springboot项目,要打包成war包才能部署到tomcat

0x01 操作

1、修改打包方式
在pom.xml里设置
war
image.png
2、移除嵌入式tomcat插件
在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码

  1. <exclusions>
  2. <exclusion>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-tomcat</artifactId>
  5. </exclusion>
  6. </exclusions>

image.png
3、添加servlet-api的依赖,二选一

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

----------------------------------------------------------------------

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.0.36</version>
    <scope>provided</scope>
</dependency>

4、修改启动类,并重写初始化方法
原来方法

public class Shiro550Application {

    public static void main(String[] args) {
        SpringApplication.run(Shiro550Application.class, args);
    }

}

在原来基础上增加一个类,注意return builder.sources(Shiro550Application.class);要指向原来的类名

public class Shiro550Application {

    public static void main(String[] args) {
        SpringApplication.run(Shiro550Application.class, args);
    }

}

class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(Shiro550Application.class);
    }
}

0x02 使用maven打包

在项目根目录下(即包含pom.xml的目录),在命令行里输入:
mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。
image.png
如果报错,则在main下添加webapp文件夹,WEB-INF文件夹,然后新建空文件web.xml

0x03 部署

将生成的war包放到tomcat下的webapp文件夹就好了
image.png
第一次访问war包会直接解压,第二次访问就是正常网站了