SpringBoot项目打包与部署
springboot的war想要在tomcat服务器上运行,必须添加配置。
1.继承并重写
让启动类继承SpringBootServletInitializer,并重写configure方法,关键代码如下
@SpringBootApplication
public class UploadDemoApplication extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(UploadDemoApplication.class, args);
} @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
若在创建SpringBoot项目时已经自动创建,则跳过此步。
2.修改pom文件
2.1 在pom文件中添加打包方式为war
<groupId>com.example</groupId>
<artifactId>upload-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>upload-demo</name>
<!--配置打包方式war-->
<packaging>war</packaging>
<description>Demo project for Spring Boot</description>
2.2 修改tomcat依赖
1)对内置的tomcat进行设置
由于springboot有内置的tomcat,所以在外部tomcat中部署时,必须对内置的tomcat进行设置,有两种方式,二选一即可,本人觉得第二种方式更简单。
第一种方式:移除内置的tomcat
在web的依赖中移除tomcat,并添加servlet依赖
<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>
<!--servlet的 api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
第二种方式:修改tomcat的使用范围
我们在开发时需要内置的tomcat,而在部署时不需要,就可以设置tomcat只在编译和测试时生效。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2)在build中指定打包的项目名称
<build>
<finalName>upload-demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
要注意,tomcat进行部署的时候,访问需要带项目名称,所以就指定了打包后的名称。为了在开发环境和正式环境的一致性,请在application.properties文件中配置访问接口时带指定的路径(或项目名)。配置后在开发环境访问接口时,必须加配置的路径才能访问。
server.servlet.context-path=/upload-demo
3.打包部署
清理项目,进行打包:(若是jar包,选择install打包;若是war包则选择package打包)

把这个war包放到tomcat的webapps中,然后启动,访问即可。(需带项目名称,若无需带项目名,则在配置文件不能配置带项目名访问,另外war包也要改为ROOT.war)
需要注意的是,如果是分模块的项目,有依赖关系,则需要先将被依赖的项目打包,再打包自己。
SpringBoot项目打包与部署的更多相关文章
- Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)
Spring-boot因为其对jar包的高度集成以及简化服务配置,快速部署等的优点,逐渐成为Java开发人员的热衷的框架.下面演示一下怎么在Eclipse中新建Spring-boot项目以及打包部署. ...
- SpringBoot项目打包成jar后,启动脚本
将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...
- springboot项目打包成jar/war包
springboot项目打包过程中包含第三方jar 开发IDE是IntelliJ IDEA,数据库是mysql,内置服务器tomcat. 打包步骤: 1. 确定项目调试运行没问题 2. 将第三方jar ...
- springboot项目打包运行
在springboot项目打包成jar包时,在cmd中使用java -jar **.jar时,浏览器无法访问. 解决方法:把项目改成war包项目,在pom文件中更改,并打成war包. 使用maven命 ...
- SpringBoot 项目打包后运行报 org.apache.ibatis.binding.BindingException
今天把本地的一个SpringBoot项目打包扔到Linux服务器上,启动执行,接口一访问就报错,但是在本地Eclipse中启动执行不报错,错误如下: org.apache.ibatis.binding ...
- SpringBoot项目设置热部署
记录一个SpringBoot 设置热部署(修改项目之后,项目自动重启)实例 POM.XML 文件 <!-- 配置springBoot项目的热部署启动 --> <dependency& ...
- 用gradle把springboot项目打包成jar
``` 用gradle把springboot项目打包成jar ```### build.gradle 中添加 buildscript { repositories { mavenLocal() mav ...
- SpringBoot 项目打包后获取不到resource下资源的解决
SpringBoot 项目打包后获取不到resource下资源的解决 在项目中有几个文件需要下载,然后不想暴露真实路径,又没有CDN,便决定使用接口的方式来获取文件.最初的时候使用了传统的方法来获取文 ...
- ******可用 SpringBoot 项目打包分开lib,配置和资源文件
spring-boot多模块打包后,无法找到其他模块中的类https://blog.csdn.net/Can96/article/details/96172172 关于SpringBoot项目打包没有 ...
- maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类
将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...
随机推荐
- vue07-router 路由
main.js vue init webpack //选择router import router from './router' new Vue({ el: '#app', router, comp ...
- 亚马逊机器学习大学推出"负责任AI"课程 - 聚焦AI偏见缓解与公平性实践
亚马逊机器学习大学推出"负责任AI"课程 亚马逊机器学习大学(MLU)最新发布"负责任AI--偏见缓解与公平性标准"课程.这个免费的在线公开课程教授负责任AI的 ...
- Linux/CentOS系统中僵尸进程的成因、影响与解决方案
以下是一份针对Linux/CentOS系统中僵尸进程的成因.影响与解决方案的详细技术解析: ️ 一.僵尸进程的成因 僵尸进程(Zombie Process)是子进程终止后未被父进程完全 ...
- 从日志到告警,带你用好 SeaTunnel 的事件监听能力
在数据集成任务日益复杂的今天,如何实时掌握作业执行过程中的关键事件,并基于这些事件触发后续逻辑处理,已经成为企业构建数据平台时不可或缺的一环.Apache SeaTunnel 从 2.3.0 开始引入 ...
- 堆priority_queue
#include<queue> //#include<bits/stdc++.h> using namespace std; priority_queue<int> ...
- 【渲染流水线】[几何阶段]-[顶点着色]以UnityURP为例
作用:处理模型顶点数据(坐标.法线.UV),输出裁剪空间位置(如顶点的MVP矩阵转换顶点从模型空间到裁剪空间). 裁剪空间:MVP变换的终点,顶点坐标未归一化,需保留w分量用于深度计算 可配置 ...
- 十年大厂员工终明白:MySQL性能优化的尽头,是对B+树的极致理解
存储引擎 存储引擎是数据库管理系统(DBMS)或键值存储系统的核心组件,它定义了数据在持久化存储介质上如何组织.存储.检索和管理.不同的存储引擎针对特定负载(如读密集型.写密集型.混合型)和数据模型( ...
- [题解]P3147 [USACO16OPEN] 262144 P
P3146 [USACO16OPEN] 248 G(弱化版) P3147 [USACO16OPEN] 262144 P 我们先考虑区间dp,设\(f[i][j]\)表示\(a[i,j]\)恰好合并成\ ...
- Windsurf 评测:这款 人工智能 IDE 是你需要的颠覆性工具吗?
Windsurf 评测:这款 人工智能 IDE 是你需要的颠覆性工具吗? 当你盯着一团乱麻的代码库不知从何下手时,你绝不是孤身一人. 如今的编程不仅仅是编写函数:它关乎管理庞大的项目.处理多个文件.并 ...
- 接口设计之道: RPC 与 RESTful 的抉择与融合
在现代软件开发中, API 接口设计是系统架构的基石.通过近期关于"统一使用 POST"."gRPC"."RESTful"等话题的深入探讨与 ...