springboot打war包,成功部署

前沿

故事发生背景:最近帮老师的项目做了一个联调,项目是springboot项目,但是打包却打的是war包,这就不是很常见了,中间出了很多问题,便从网上找了不少资料,便总结出来流程,以便自己和他人方便使用。

一、修改pom.xml文件

jar 改为 war若没有则手动添加即可(我这里便没有手动添加的)

二、移除嵌入式tomcat插件

在 pom.xml 里找到spring-boot-starter-web依赖,在其中添加如下代码,

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

因为spring-boot-starter-web 依赖中有Tomcat 的依赖,点进去就可以看到,如下图

三、添加servlet-api的依赖

在 pom.xml 中新增以下依赖:

javax.servlet

javax.servlet-api

3.1.0

provided

四、修改启动类,并重写初始化方法

我们平常用 main 方法启动的方式,都有一个App的启动类,代码如下:

@SpringBootApplication

public class DemoFengfanliApplication{

public static void main(String[] args) {

SpringApplication.run(DemoFengfanliApplication.class, args);

}

}

我们需要类似于web.xml 的配置方式来启动 Spring 上下文了,在 Application 类的同级添加一个(自定义的)SpringBootStartApplication类,其代码如下:

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**

* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法

*/

public class SpringBootStartApplication extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

// 注意这里要指向原先用main方法执行的Application启动类

return builder.sources(DemoFengfanliApplication.class);

}

}

五、打包

1. 方式一:maven命令

在项目根目录下(即包含pom.xml的目录),在命令行里输入:mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现 [INFO] BUILD SUCCESS 即为打包成功。

2. 方式二:可视化打包

六、部署

然后把target目录下的war包放到 tomcat 的 webapps 目录下,启动 tomcat,即可自动解压部署。最后在浏览器中输入

http://localhost:[端口号]/[打包项目名]/

发布成功

七、修改打包默认名称

配置configuration 中的 finalName,就是打包后的默认名称。进行名称规范合理化。

demo_fengfanli

org.springframework.boot

spring-boot-maven-plugin