spring boot+maven项目打包成war包部署到tomcat

一、配置pom文件

1、移除spring boot内置的tomcat
<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>
2、添加servlet支持
<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<dependency>
3、设置打包为war
<!-- 这里设置打包的形式  默认为jar -->
<packaging>war</packaging>

下图是位置
spring boot+maven项目打包成war包部署到tomcat

4、修改SpringApplication 启动类配置
package com.shop.JZShop;

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

public class SpringBootStartApplication extends SpringBootServletInitializer {

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

这个启动类要与spring boot项目的启动类在同一目录下
spring boot+maven项目打包成war包部署到tomcat

二、将项目打包为war包

1、右键单击项目名-> Run As ->Maven clean

这里 maven 会清楚掉之前对这个项目所有的打包信息
spring boot+maven项目打包成war包部署到tomcat

2、进行完上一步后会出现如下信息

spring boot+maven项目打包成war包部署到tomcat

3、右键单击项目-> Run As ->Maven build

spring boot+maven项目打包成war包部署到tomcat

4、在 Goals框内填写 -X package 并照下图勾选

spring boot+maven项目打包成war包部署到tomcat

执行后如果报错 **No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?**说明可能没有选择jdk版本,右键项目->Build Path 选择默认的jdk即可,或者根据项目所使用的jdk版本进行配置
spring boot+maven项目打包成war包部署到tomcat

同时window->preferences->java->installed JREs 这里需要选择jdk
spring boot+maven项目打包成war包部署到tomcat

5、如果一切顺利,最后控制台会显示如下信息

spring boot+maven项目打包成war包部署到tomcat
然后在项目名上右键单击->refresh 刷新一下,在target 目录下会找到生成的war包
spring boot+maven项目打包成war包部署到tomcat

三、将项目部署到Tomcat

1、将war包放到Tomcat的 webapps目录下

spring boot+maven项目打包成war包部署到tomcat

2、修改 tomcat 中 conf 目录下的配置文件 server.xml,在配置文件中找到Host标签,在其中添加如下内容。这里使用的是相对路径,doBase 属性的值是我们所打 war 包的名称
<Context docBase="JZShop-0.0.1-SNAPSHOT" path="/" reloadable="true" privileged="true"/>

修改这一项是因为如果不添加这一句,用tomcat访问时需要加上项目名,这也是为什么doBase属性的值是项目名的原因。

3、tomcat版本问题

因为spring boot内置的tomcat是8.5的版本,所以你所使用的tomcat也需要是8.5的版本,我最开始用的是7.0的版本,tomcat启动后报错项目启动失败。

3、打开浏览器输入 localhost:8080,就成功访问到了主页。