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、启动结果

点击启动

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis进阶(持久化、复制、集群、多线程、缓存)

Redis进阶 1.Redis持久化1.1 什么是Redis持久化&#xff1f;为什么需要持久化&#xff1f;1.2 Redis持久化方式——RDB(Redis DataBase)1.2.1 什么是RDB&#xff1f;1.2.2 备份文件位置1.2.3 触发RDB的方式1.2.3.1 自动触发1.2.3.2 手动触发1.2.3.3 其他触发方式 1.2.4 RDB优缺…

【GPT概念04】仅解码器(only decode)模型的解码策略

一、说明 在我之前的博客中&#xff0c;我们研究了关于生成式预训练转换器的整个概述&#xff0c;以及一篇关于生成式预训练转换器&#xff08;GPT&#xff09;的博客——预训练、微调和不同的用例应用。现在让我们看看所有仅解码器模型的解码策略是什么。 二、解码策略 在之前…

阿里云代理仓库地址

在天朝使用jcenter、mavenCentral及google三个远程仓库&#xff0c;Gradle Sync会很慢&#xff0c;google仓库甚至需要科学上网才能访问。为了加快Gradle Sync速度&#xff0c;一招教你优先用 阿里云仓库服务 的仓库作为下载源。 一劳永逸之道 将本项目的gradle/init.d/init.g…

【小程序开发】功能页面 API 汇总集合

ty.device.openCategoryActivatorPage 进入配网-选品类首页 需引入DeviceKit&#xff0c;且在>2.3.2版本才可使用 参数 Object object 属性类型默认值必填说明completefunction否接口调用结束的回调函数&#xff08;调用成功、失败都会执行&#xff09;successfunction否…

【Jenkins】Spark on Yarn 部署脚本

文章目录 停止 Yarn 集群中的 Spark 应用提交 Spark 应用到 YARN✔️ 目标:提供 Jenkins 脚本,用于 在 Jenkins 中实现 Spark 任务提交到 YARN 及重启操作。 停止 Yarn 集群中的 Spark 应用 Shell 脚本: # 停止spark应用(仅支持一个yarn应用,如果跑了多个应用,会报错)…

【Linux】多线程编程基础

&#x1f4bb;文章目录 &#x1f4c4;前言&#x1f33a;linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 &#x1f33b;linux线程冲突概念互斥锁函数介绍加锁的缺点 &#x1f4d3;总结 &#x1f4c4;前言 无论你是否为程序员&#xff0c;相信多线程这个词汇应…

How to install Miniconda on ubuntu 22.04

How to install Miniconda on ubuntu 22.04 介绍安装脚本细节 初始化脚本细节 卸载脚本细节 介绍 通常来说&#xff0c;要安装conda有以下三种安装方案&#xff1a; Miniconda Miniconda 是 conda 的免费最小安装程序。它是 Anaconda 的一个小型引导版本&#xff0c;仅​​包…

量子计算机

近日&#xff0c;在AWS re&#xff1a;Invent全球大会上&#xff0c;亚马逊官宣AWS三箭齐发量子计算组合拳&#xff1a;Braket、AWS量子计算中心和量子解决方案实验室。 随着亚马逊的强势入局&#xff0c;加上此前鼓吹量子霸权的谷歌、起步最早的IBM、暗自发力的微软&#xff…

Android仿微信视频聊天本地与远程切换功能

一、xml布局 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto&qu…

react-jsx

react04 jsx语法 - 01 基础知识&#xff1a; jsx javascript xml(html) 把js和heml标签混合到一起 react视图编写及构建的简要流程 &#xff1a; 如何在react中使vs code支持格式化和快捷键提示&#xff1a;1, 2,修改文件后缀为jsx&#xff0c;因为webpack的打包规则中可以…

如何通过idea搭建一个SpringBoot的Web项目(最基础版)

通过idea搭建一个SpringBoot的Web项目 文章目录 通过idea搭建一个SpringBoot的Web项目一、打开idea&#xff0c;找到 create new project二、创建方式三、配置项目依赖四、新建项目模块五、总结 一、打开idea&#xff0c;找到 create new project 方式1 方式2 二、创建方式 新…

BERT 论文阅读笔记

文章目录 前言论文阅读同类工作比较模型架构训练方式使用步骤实验结果 其他 前言 BERT是在NLP领域中第一个预训练好的大型神经网络&#xff0c;可以通过模型微调的方式应用于后续很多下游任务中&#xff0c;从而避免了下游NLP应用需要单独构建一个新的神经网络进行复杂的预训练…

合根植物。

4.合根植物 - 蓝桥云课 (lanqiao.cn) 题目描述 w星球的一个种植园&#xff0c;被分成mxn个小格子(东西方向m行&#xff0c;南北方向n列)。每个格子里种了一株合根植物 这种植物有个特点&#xff0c;它的根可能会沿着南北或东西方向伸展从而与另一个格子的植物合成为一体。 如果…

马斯克开源Grok-1

Grok-1是由马斯克AI创企xAI发布的第一代大语言模型&#xff0c;它以其巨大的参数量——高达3140亿&#xff0c;引起了全球范围内的广泛关注。这一参数量远超其他知名模型&#xff0c;如OpenAI的GPT-3.5&#xff0c;后者仅有1750亿参数。在2024年3月17日&#xff0c;马斯克宣布将…

【jvm】jinfo使用

jinfo介绍 jinfo 是一个命令行工具&#xff0c;用于查看和修改 Java 虚拟机&#xff08;JVM&#xff09;的配置参数。它通常用于调试和性能调优。 使用 jinfo 命令&#xff0c;你可以查看当前 JVM 的配置参数&#xff0c;包括堆大小、线程数、垃圾回收器类型等。此外&#xf…

天翼云防火墙配置端口转换案例

环境: 天翼云 云墙 问题描述: 天翼云防火墙配置端口转换案例 云主机192.168.10.9:2231 解决方案: 1.先登入云墙 可以从控制中心登入不用再输入密码 2.新建对象和端口 192.168.10.9:2231 3.到弹性IP这选个公网IP 记住弹性IP和后面虚拟IP 4.新建 目的NAT,按原有复制…

【Arxml专题】-29-使用Cantools将CAN Matrix Arxml自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 CAN Matrix Arxml自动生成C语言代码 2.1 批处理文件CAN_Matrix_Arxml_To_C.bat内容说明 2.2 CAN Matrix Arxml文件要求 2.3 如何…

论文翻译 - Automatically Auditing Large Language Models via Discrete Optimization

Automatically Auditing Large Language Models via Discrete Optimization Abstract1 Introduction2 Related Work3 Formulating and Solving the Auditing Optimization Problem3.1 Preliminaries3.2 The auditing optimization problem Abstract 为意外行为审计大型语言模型…

20232831 2023-2024-2 《网络攻防实践》第3次作业

目录 20232831 2023-2024-2 《网络攻防实践》第3次作业1.实验内容2.实验过程&#xff08;1&#xff09;动手实践tcpdump&#xff08;2&#xff09;动手实践Wireshark&#xff08;3&#xff09;取证分析实践&#xff0c;解码网络扫描器&#xff08;listen.cap&#xff09; 3.学习…

【小程序开发】家庭 API 集合(总)

ty.home.getCurrentHomeInfo 获取当前家庭信息 需引入HomeKit&#xff0c;且在>3.0.1版本才可使用 请求参数 Object object 属性类型默认值必填说明completefunction否接口调用结束的回调函数&#xff08;调用成功、失败都会执行&#xff09;successfunction否接口调用成…