SpringBoot项目在Idea中用gradle命令打成war包部署到Tomcat

1、前言

最近在做项目过程中遇到了一个需求,就是SpringBoot项目在Idea中用gradle命令打成war包部署到Tomcat,关于这一问题在网上看了很多博客,内容有相同的地方,也有不同的地方,甚至也有冲突的地方,所以本人就简单的了解了一下,将结果总结如下。

2、打包的配置

一般创建SringBoot项目都会到Spring Initializr 上面进行创建,这是官方提供的一个界面化的初始化工具,前段时间改版了一次,最新的界面如下:

我们选择Gradle Project 和Packaging 为War生成项目,在Idea中打开项目,如果操作系统已经配置好Gradle,直接可以在Terminal中执行gradle build命令即可打包成功,war包保存在build/libs/目录下。经过测试可以在tomcat下运行。

接下来我们来看看这样生成的项目和以往的项目有什么区别。经过比较我们发现需要打成war需要配置两个地方:

1、build.gradle中plugins中加id:'war'

 以上两种写法都可以。

2、继承SpringBootServletInitializer

此处有两种方式:

1、官方生成的SpringBoot项目中是在项目主入口类(TestApplication)同级目录下生成ServletInitializer类继承SpringBootServletInitializer并重写configure方法,如下图所示:

2、项目主入口类(TestApplication)直接继承SpringBootServletInitializer并重写configure方法,如下图所示:

经过测试、只需要经过这两个配置就可以直接打包(war包)成功并且可以在tomat中启动运行。

3、同一个Tomcat运行多个SpringBoot项目

网上很多文章提到要在同一个Tomcat中运行两个SpringBoot项目必须在application.yml进项配置,要是不配置的话只能运行一个,本人在测试打包的过程中同时运行过两个不同SpringBoot项目可以直接启动成功,并且访问两个不同的项目。为防止各位看官在部署过程中遇到这样的问题,列举两个比较通用的配置方法供大家参考:

1、配置spring.jmx.enabled=false

#spring.jmx.enabled=false 可以在一个tomcat启动多个springboot项目
spring:  
  jmx:
    enabled: false

2、配置spring.jmx.default-domain=项目名称

spring:  
  jmx:
    default-domain: 项目名称

4、后记

以上代码除了第3个问题其他的都已在实际项目测试过,如果有问题可以随时留言交流讨论。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值