spring boot+maven项目打包成war包部署到tomcat【局域网内访问】

2022年6月4日13:48:58

一、配置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>

添加Tomcat

<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</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【局域网内访问】

报错1:

执行后如果报错 **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【局域网内访问】

报错2:

如果控制台中出现 **非法字符:’\ufeff" ** 一类的错误,但查看相应文件后不存在非法字符,请再次执行Maven build ,如继续同样报错,请点击eclipse左上角file -> restart 重启eclipse 或者 右键单击 -> Maven -> Update Project 。如果上述操作不管用,那么可以用Notepad,将报错文件中的内容复制进去,以你项目整体的编码格式(如utf-8)保存一遍,然后将文件替换,即可解决

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"/>

path 是虚拟路径;
docBase 是应用程序的物理路径;
privileged 设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet;
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,可以在不重起tomcat的情况下,自动装载改变后的应用程序,实现热部署;

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

3、tomcat版本问题

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

同时 tomcat 需要配置环境变量,否则也无法正常访问页面配置环境变量请点击

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

四、使局域网内访问(需将war包放到Linux系统的Tomcat中)

1、给MySQL账号添加远程访问权限

mysql添加远程访问权限点这里

2、开启防火墙,开放8080端口

如果是ubuntu系统的话,点这里

  • 作者:Been~You
  • 原文链接:https://jz-2017.blog.csdn.net/article/details/89925400
    更新时间:2022年6月4日13:48:58 ,共 2473 字。