龙空技术网

如何将spring boot项目打包成war包

软件测试小七 182

前言:

现在大家对“将web项目打成war包”大约比较关怀,我们都需要了解一些“将web项目打成war包”的相关文章。那么小编在网络上汇集了一些对于“将web项目打成war包””的相关内容,希望朋友们能喜欢,兄弟们一起来了解一下吧!

同事问了,打成war不能执行,报错,找了好久找不到原因,今天自己也碰到这个问题,一样的。

原因是servlet关联没有,二是启动时调用原始的启动类

解决方案如下:

pom.xml

1、打war

<packaging>war</packaging>

2、去掉关联,可选步骤

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 移除嵌入式tomcat插件 --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

3、添加servlet-api的依赖(下面任一)

<!--要放到tomcat中运行,war的方式,加这个,否则不用加--><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、增加启动再调用原始的main类

若原始的启动类是:AdminApplication,那么在同包中,增加如下的文件

import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/*** 增加这个类,修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法*/public class SpringBootStartApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {// 注意这里要指向原先用main方法执行的Application启动类return builder.sources(AdminApplication.class);}}

或者启动类改成

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplicationpublic class AdminApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {// 注意这里要指向原先用main方法执行的Application启动类return builder.sources(AdminApplication.class);}public static void main(String[] args) {SpringApplication.run(AdminApplication.class, args);}}

标签: #将web项目打成war包