SpringBoot项目如何打包成war包,并部署在tomcat上运行

项目场景:

        正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了。

        有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,或者使用工具idea直接启动,便于开发调试。


实现步骤

1、将pom文件打包方式更改为 war

<packaging>war</packaging>

2、 排除内置 Tomcat

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<!-- 排除内置的tomcat -->
	<exclusions>
		<exclusion>
			<artifactId>org.springframework.boot</artifactId>
			<groupId>spring-boot-starter-tomcat</groupId>
		</exclusion>
	</exclusions>
</dependency>

3、添加tomcat依赖,需要用到 servlet-api 的相关 jar 包 

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<!-- tomcat范围改成provided,否则后面就会出问题,tomcat无法解析jsp -->
	<scope>provided</scope>
</dependency>

4、  继承 SpringBootServletInitializer 并重写 configure 方法

新建文件文件名随意,或者直接修改启动类继承 SpringBootServletInitializer 并重写 configure 方法,也是一样的。

package com.test;

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

/**
 * 注意,使用war方式部署,需要开启此类
 *
 */
public class ServletInitializer extends SpringBootServletInitializer {
	  
    @Override  
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  
        return application.sources(ApplicationMain.class);  
    }
} 

部署方式:

方式一:使用外部tomcat启动

1、利用maven命令打包

2、 将打的war包,复制粘贴到tomcat的webapps目录下(不用解压,启动tomcat自动解压)

3、启动tomcat 

在tomcat安装目录下的bin目录下面找到startup.bat命令,启动tomcat

 4、启动结果

war包自动解压了

 

5、 测试结果,访问swagger页面:

访问路径这里需要注意,原来我们在application.properties配置的访问路径已经不生效了。

这是原来访问路径:http://localhost:8080/testservice/swagger-ui.html

#已经不生效了
server.servlet.context-path=/testservice

现在的访问路径:

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

比如我现在的访问路径就是:

http://localhost:8080/spring-boot-test-war/swagger-ui.html

 spring-boot-test-war是我打包后的项目名,这个可以改的。

 方式二:使用工具idea直接启动

 1、配置web.xml文件

点击File->Project Structure

 创建src/main/webapp和web.xml

 

 此时项目结构图如下:

 2、配置artifacts

配置完后,tomcat启动才能找到这个war包,会生成out目录输出文件。

当然你也可以选择target下面已经打包好的war包,但是这样有个缺点,就是每次改文件你都需要用maven重新打包,输出到target目录下,不方便开发。

 

3、配置tomcat

在IDEA右上角的项目运行列表中选中 Edit Configurations

进入新的窗口点击"+",找到Toncat Server中的Local进行点击,配置Tomcat路径

 

4、tomcat 选择启动的war包

这里注意选择exploded结尾的,才是out目录输出的

Application context上下文配置访问路径 

访问路径这里需要注意,原来我们在application.properties配置的访问路径已经不生效了。

#已经不生效了
server.servlet.context-path=/testservice

现在的访问路径:

http://localhost:8080/testservice/swagger-ui.html

 testservice是我Application context上下文配置的访问路径 ,这个可以改的。

5、配置tomcat启动默认打开的页面

6、启动结果

点击启动

 

 

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将 Spring Boot 项目打包 WAR 文件并运行,您需要执行以下步骤: 1. 修改 pom.xml 文件,将 packaging 标签的值从 jar 改为 war: ```xml <packaging>war</packaging> ``` 2. 将 SpringBootServletInitializer 类添加到您的项目中。这个类是由 Spring Boot 提供的,它允许您将 Spring Boot 应用程序部署到 Servlet 容器中。如果您的项目已经含了这个类,就不需要再添加了。 ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } } ``` 3. 执行 mvn package 命令来构建 WAR 文件。构建完后,WAR 文件将会在 target 目录下生。 ```bash mvn package ``` 4. 将 WAR 文件部署到 Servlet 容器中。您可以使用 Tomcat、Jetty 等 Servlet 容器运行您的应用程序。将 WAR 文件复制到 Servlet 容器的 webapps 目录下即可。 5. 启动 Servlet 容器。您可以使用 Servlet 容器的启动脚本来启动容器。例如,如果您使用的是 Tomcat,可以运行以下命令启动 Tomcat: ```bash cd /path/to/tomcat/bin ./catalina.sh run ``` 6. 访问应用程序。一旦 Servlet 容器启动,您就可以通过浏览器访问您的应用程序。默认情况下,应用程序将在 http://localhost:8080/ 上运行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛哥是个大帅比

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值