Spring Boot 项目打成 war 包部署
Spring Boot 一个非常方便的功能就是支持内置的 Servlet 容器,一般我们部署 Spring Boot 应用时都是打成一个可执行的 Jar 包进行部署。其实 Spring Boot 也是支持打成传统的 war 包部署的。肯定有人问:既然 Jar 包简单又方便,为什么还要 用 war 包部署呢?其实我就是自己折腾下,哈哈~
需要注意的是,假如你的应用使用了 Spring 的 WebFlux 功能,那么是不支持 war 包部署的。
配置调整
1. 修改 pom.xml 中的打包方式
<packaging>war</packaging>
2. 调整依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 该包只在编译和测试的时候使用 -->
<scope>provided</scope>
</dependency>
3. 继承 SpringBootServletInitializer
@SpringBootApplication
public class AppQuickStart extends SpringBootServletInitializer {
private static Logger logger = LoggerFactory.getLogger(AppQuickStart.class);
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
logger.info("app begin to start...");
SpringApplication.run(AppQuickStart.class, args);
logger.info("app start success...");
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(AppQuickStart.class);
}
}
4. 一些其他注意点
下面是 build 的配置,主要是设置了应用的名称,还用就是加了maven-war-plugin
这个插件,不然会报找不到web.xml
这个错误。
<build>
<finalName>appName</finalName>
<!-- 省略其他配置 -->
<plugins>
<plugin>
<configuration>
<excludeDevtools>true</excludeDevtools>
</configuration>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
好了,到此就可以执行mvn clean install
命令打包了。
报 404 问题
网上有很多文章说 Spring Boot 应用打成 war 部署 Tomcat 后访问接口会报 404 错误。如果你是完全上面的步骤配置的不应该会有问题。
假如真的有问题,建议从下面几方面来解决:
- URL 有没有写对:部署 Tomcat 后是需要填写 context-path 的,这个 context-path 并不是 Spring Boot 中配置的,而是 Tomcat 中配置的,如果你没对 Tomcat 做特殊的配置,那么这个 context-path 就是你打包好的项目的名称;
- 检查接口参数有没传对;
- 终极办法,打开日志的 Dubug 级别,一般问题都能看出来,如果你日志是 info 级别,你的全局异常处理没做到位,有些异常是看不出来的。
Spring Boot 项目打成 war 包部署的更多相关文章
- spring boot 项目打成war包部署到服务器
这是spring boot学习的第二篇了,在上一篇已经整合了spring boot项目了,如果还有小伙伴没有看得可以先去看第一篇 基础整合spring boot项目 到这里的小伙伴应该都是会整合基本的 ...
- Spring boot 项目打成war包并在idea中运行
1. 修改pom文件原来是jar改成<packaging>war</packaging> 2. 在pom文件中添加移除内置tomcat并且添加添加servlet-api的依赖. ...
- IDEA下spring boot项目打包war包部署外部tomcat问题
第一步,修改配置pom.xml文件 <packaging>war</packaging> <dependency> <groupId>org.sprin ...
- 将web项目打成war包部署在tomcat步骤
将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...
- Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案
即上篇通过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,所以将解决过程分享给大家,希望能帮助到小伙伴们~ 将打好的war包拷贝到Tomcat的w ...
- spring boot 项目打成war,丢入tomcat独立运行
小插曲:通过cmd运行startup.bat,cmd界面显示乱码 解决方法:进入tomcat目录,conf文件夹,用编辑器打开logging.properties 将java.util.logging ...
- Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案
Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.proper ...
- springboot-把web项目打成war包部署到外部tomcat
将打包方式修改为war <packaging>war</packaging> 移除tomcat依赖或者将tomcat依赖scope改为provide 移除tomcat依赖 &l ...
- 【spring Boot】2.在Myecplise上把spring Boot项目打包 war包和jar包
========================================================第一部分======================================== ...
随机推荐
- 第4篇 Scrum 冲刺博客(专✌️团队)
一.站立式会议 1.1会议图片 1.2成员完成情况 成员 昨天完成的任务 今天计划完成的任务 工作中的困难 陈忠明 按下载热度返回歌曲信息,与前端尝试交互 歌曲信息的上传/下载包 前后端交互问题 吴茂 ...
- in文件注意事项及详细解释(转载)
转载自:https://www.cnblogs.com/sysu/p/10817315.html 和 https://www.cnblogs.com/panscience/p/4953940.h ...
- Markdown - Typora 10分钟入门 - 精简归纳
Markdown - Typora 10分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 22 转载请注明出处! 目录 Markdown - Typora 10分钟入门 - 精简归纳 ...
- shell脚本同步私人git仓库
前言 分别在个人电脑.个人服务器.码云三个地方建立了数据仓库用于保存自己的各种数据,通过git+shell进行数据同步. 此举不仅可以避免因存储损坏.版本更迭.数据误操作等因素带来的各种麻烦,也能实现 ...
- php验证当前是设备是电脑端还是手机端
<?php // 验证设备为PC还是WAP $agent = $_SERVER['HTTP_USER_AGENT']; if(strpos($agent,"comFront" ...
- render 强大的渲染函数
可以动态的创建节点 可以改变表格中要去换一种形式去展示的列 (未完暂定)
- 前端通过jqplot绘制折线图
首先需要下载jqplot需要的js与css文件,我已近打包好了,需要的可以下载 接下来导入其中关键的js与css如下, <link href="css/jquery.jqplot.mi ...
- POJ-2104-K-th Number(区间第K大+主席树模板题)
Description You are working for Macrohard company in data structures department. After failing your ...
- 浅析vue的两项原理
一.vue双向绑定原理 Vue.js-作者为中国人尤雨溪 vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的se ...
- springboot入门遇到Whitelabel Error Page错误
错误页面: 解决方法: 启动类要放在最外层,改成下面的