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個問題其他的都已在實際項目測試過,如果有問題可以隨時留言交流討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章