打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Spring Boot Gradle 打war包的一点心得体会

最近实验室的一些项目采用了Spring Boot架构进行开发。项目完成以后,就需要部署到服务器。常规办法就是将项目打成war包,直接拖到tomcat的webaaps下,但是Spring boot 的默认是将项目打成jar包,所以就需要进行一些配置。百度和Google了配置方法都是大同小异。

不过网上的例子大部分都是使用的是Eclipse+Maven ,我们实验室使用的idea+gradle。所以就有一些小的变化,不过都是相通的。需要修改的地方是:

  1. Application中

    这里继承SpringBootServletInitializer 并重写其中的configure方法目的是使用Spring框架的Servlet3.0支持。并且允许我们可以配置项目从serclet容器中启动。

  2. 在build.gradle里配置

    主要是添加war包的支持,其次的话就是在spring-boot-starter-tomcat处改为provided。provided和compile的区别在与前者是在调试使用时会加载对应的包,但是 在打包时不会讲对应的包加入到war包的lib中而后者则是两种情况都要调用对应的包。

  3. 至此基本的配置都已经完成了。前面的工作的目的都是防止Spring Boot中内置的Tomcat 与实际的tomcat容器产生冲突。

    这样的话一个常规的Spring Boot项目就可以直接打包部署,但是今天在部署另外一个项目时遇到了一个奇葩的问题(经验不足。。。),项目在启动时报如下的错:


    排查了好久,终于在Stackoverflow(不得不说是程序猿的好帮手啊)找到了解决办法,外国兄弟和我遇到了同样一个问题。

下图是解决方式之一,他的意思大概是tomcat中的websocket jars与项目中的包冲突了,建议是删除产生对应的包。并贴图列举了哪些包是造成问题的原因。但是按照他的办法并没有解决我的问题,还是同样的错误。

    

于是我继续向下看,发现了另外一个解决办法:

按照这个办法在build.gradle中找到对应的代码,注释掉,重启服务器,项目成功启动。

分析其中的原因:原来是这个项目中多引用了Spring-boot-starter-jetty这个包,与tomcat容器产生了冲突。导致 了启动失败。

以后还需要多分析和细心检查

另外贴上Spring boot打包的一篇文章:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

Ps.如有错误还请各位大大指教。

拓展阅读:

深入理解遗传算法(一)

深入理解遗传算法(二)

从1到100求和学算法思维(一)

从1到100求和学算法思维(二)

从1到100求和学算法思维(三)

从1到100求和学算法思维(四)

从1到100求和学算法思维(五)

从1到100求和学算法思维(六)

 where2go 团队


微信号:算法与编程之美          

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
Spring Boot 发布 jar 包转为 war 包秘籍。
spring boot 项目部署到服务器 两种方式
一文带你看懂Springboot核心功能及优缺点
简单明了的带你理解springboot原理和三大核心注解
Jetty、Undertow容器及war包部署到外置Tomcat容器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服