springboot 带有内置Tomcat 服务器,可以直接将项目打包成jar运行,但是如果在需要把项目达成war包该怎么办呢?下面是将springboot项目部署为war项目的一些步骤
1、首先 在pom.xml中将打包形式 jar 修改为war
<packaging>war</packaging>
1
2、将springboot内置的Tomcat依赖移除 ,需要注意的是,使用不同的模板引擎的时候,需要移除的依赖位置也不同,下面是原生的依赖和thymeleaf 模板引擎移除依赖的一些方法 (后面打包发现。 可以不需要在依赖中去除tomcat 依赖 直接添加)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
1
2
3
4
5
就可以了
原生Tomcat依赖移除
1
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
thymeleaf 模板引擎依赖移除
1
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3、将Tomcat依赖移除后,为了保证编译正确,还需要添加对 servlet-api 的依赖(开始使用的时候是需要加servlet-api的依赖的,但是在后面使用中发现,可以不添加该依赖)
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
1
2
3
4
5
6
4、设置,打包后的项目访问名称,在build节点里设置文件名 (这里是一个特别需要注意的地方,由于开始的时候是使用的单模块程序,所以可以对项目命名,但是在多模块打包中发现,如果添加项目名称 这个结点。打包好的程序在tomcat中运行的时候会发生错误,war 包的目录格式有问题)
</plugins>
<finalName>项目名称</finalName>
</build>
1
2
3
5、由于我们需要使用外部Tomcat服务器部署war包,所以不能使用创建项目的application.java 这个main方法了,需要重写一个类似于 web.xml 文件配置的方式来启动 Spring 应用上下文,此时我们需要声明一个类,这个类的作用与在 web.xml 中配置负责初始化 Spring 应用上下文的监听器作用类似。
/**
* Created by Sean on 2017/9/5.
*/
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(application名称.class);
}
1
2
3
4
5
6
7
8
这样就可以将项目打包成war 包,并放入外部Tomcat就可以使用了。
不过需要重点注意的地方是 项目中所有请求路径都必须加上上面步骤4所写的项目名。不然会访问不到路径。
---------------------
作者:Sean_zzZ
来源:CSDN
原文:https://blog.csdn.net/github_38151745/article/details/78707664
版权声明:本文为博主原创文章,转载请附上博文链接!