1. 程式人生 > >使用Spring Boot Gradle 打war包的一點心得體會

使用Spring Boot Gradle 打war包的一點心得體會

最近實驗室的一些專案採用了Spring Boot架構進行開發。專案完成以後,就需要部署到伺服器。常規辦法就是將專案打成war包,直接拖到tomcat的webaaps下,但是Spring boot 的預設是將專案打成jar包,所以就需要進行一些配置。百度和Google了配置方法都是大同小異。

不過網上的例子大部分都是使用的是Eclipse+Maven ,我們實驗室使用的idea+gradle。所以就有一些小的變化,不過都是相通的。需要修改的地方是:

  1. Application中

    104047_jLDI_2341314.png

    這裡繼承SpringBootServletInitializer 並重寫其中的configure方法目的是使用Spring框架的Servlet3.0支援。並且允許我們可以配置專案從serclet容器中啟動。

  2. 在build.gradle裡配置

    104954_PXCi_2341314.png

    主要是新增war包的支援,其次的話就是在spring-boot-starter-tomcat處改為provided。provided和compile的區別在與前者是在除錯使用時會載入對應的包,但是 在打包時不會講對應的包加入到war包的lib中而後者則是兩種情況都要呼叫對應的包。

  3. 至此基本的配置都已經完成了。前面的工作的目的都是防止Spring Boot中內建的Tomcat 與實際的tomcat容器產生衝突。

    這樣的話一個常規的Spring Boot專案就可以直接打包部署,但是今天在部署另外一個專案時遇到了一個奇葩的問題(經驗不足。。。),專案在啟動時報如下的錯:

    110111_joq6_2341314.png

    排查了好久,終於在Stackoverflow(不得不說是程式猿的好幫手啊)找到了解決辦法,外國兄弟和我遇到了同樣一個問題。

110314_vFkX_2341314.png

下圖是解決方式之一,他的意思大概是tomcat中的websocket jars與專案中的包衝突了,建議是刪除產生對應的包。並貼圖列舉了哪些包是造成問題的原因。但是按照他的辦法並沒有解決我的問題,還是同樣的錯誤。

    110434_KxAD_2341314.png

於是我繼續向下看,發現了另外一個解決辦法:

111034_bW7l_2341314.png

按照這個辦法在build.gradle中找到對應的程式碼,註釋掉,重啟伺服器,專案成功啟動。

分析其中的原因:原來是這個專案中多引用了Spring-boot-starter-jetty這個包,與tomcat容器產生了衝突。導致 了啟動失敗。

以後還需要多分析和細心檢查

Ps.如有錯誤還請各位大大指教。

相關推薦

使用Spring Boot Gradle war一點心得體會

最近實驗室的一些專案採用了Spring Boot架構進行開發。專案完成以後,就需要部署到伺服器。常規辦法就是將專案打成war包,直接拖到tomcat的webaaps下,但是Spring boot 的預設是將專案打成jar包,所以就需要進行一些配置。百度和Goo

Spring boot如何war發布到tomcat

spring boot war tomcat 前言: 平時在使用java做項目開發時,首先想到利用框架來提升開發效率,和提高可維護性。選擇spring可以使用ssm(spring框架,springMVC,mybatis),而且企業中應用也比較廣泛,然而還是發現,在框架中有很多配置,而且看起來相當繁

spring boot生成的war執行時出現java.lang.NullPointerException: null

最近寫了一個數據庫同步的程式,見之前的部落格,沒有用到spring框架來整合,用的時純Java程式碼。然後,專案經理要我把程式合到spring boot框架中,因為涉及到多資料來源,時間又比較緊,同意我直接將純Java程式碼合進去。 用的jenkins進行部署,當部署成功後,發現出現一個錯誤: 定位到

SpringBoot2.0-使用gradlewar部署

環境:IntelliJ idea + SpringBoot2.0 + gradle4.8 + tomcat8 由於SpringBoot程式內部集成了tomcat,故官方推薦開發者將專案打成jar包,並且用java -jar xx.jar執行專案;但是在實際開

Gradle (一) 在已有的web工程中使用gradlewar

gradle官網下載最新的壓縮包,解壓後設置環境變數 GRADLE_HOME 為解壓目錄,在path前加入 %GRADLE_HOME%\lib; 開啟cmd 執行 gradle -v 檢視版本 當前使用 2.14 在原有專案下建立  build.gradle 內容如下

IDEA下spring boot專案打包war部署外部tomcat問題

最近需要把開發的spring boot專案打包部署到雲伺服器上,自己先把專案部署到本地的tomcat上執行,結果發現怎麼部署都會報錯。現在特別整理了所有部署流程。以幫助大家解決問題。前提是你得保證你得spring boot專案在idea上能跑起來,並且訪問到伺服器,下面直接重

IDEA打包spring boot工程為war並部署到阿里雲伺服器

一、打包 1、首先修改pom.xml中的程式碼,把<packaging></packaging>中的jar改為war 2、點選IDEA左下角按鈕,之後點選右側邊欄的Maven Projects,雙擊Lifecycle下的install即可打包  

gradle war

build.gradle檔案apply plugin: 'war' webAppDirName = 'WebRoot' //設定 WebApp 根目錄 version = '' buildDir = 'target' //war 輸出路徑

spring boot專案jar部署

       經過以下步驟, 最終會形成maven依賴的多個jar(包括lib下新增的)、 我們編寫的程式程式碼打成一個jar, 將程式jar與 依賴jar分開,便於管理:

在Intellij Idea中Maven構建的Spring Boot專案jar

IDE工具:Intellij Idea 2017.1.3,專案管理工具:Maven,框架:Spring Boot 公司一個小專案一個人做,就萌生了用spring boot的想法,自己摸索難免很多彎路,此處對打可執行的jar做一個小計。失敗的嘗試方式:File --> P

spring boot打包成war的頁面該放到哪裡?

背景 經常有朋友問我,平時都是使用spring mvc,打包成war包釋出到tomcat上,如何快速到切換到spring boot的war或者jar包上? 先來看看傳統的war包樣式是什麼樣子的? 1. 傳統的spring MVC格式的war包   可以看到,webapp/reso

Spring boot + Gradle + Eclipsewar發布總結

重寫 並且 .html jdb log4j2 jce title file apach 首先感謝兩位博主的分享 http://lib.csdn.net/article/git/55444?knId=767 https://my.oschina.net/alexnine/b

Spring Boot war 的步驟

clas mis pid ali onf main `` ilo ng- ## Spring Boot 打 war 包的步驟 1. 添加 spring-boot-start-tomcat 的 provided 依賴 ``` <depend

spring bootjarwar的區別作用以及需要的改動

spring boot打jar包和打war包的區別作用 此文為轉載:http://mrlee23.iteye.com/blog/2047968   在開發除錯完成之後,可以將應用打

spring boot專案war

1  pom檔案中將打包形式 jar 修改為war     <packaging>war</packaging> 2 不使用自帶的tomcat <dependency>         <groupId>org.spri

Spring Boot 使用外接的 Servlet 容器 -- 專案War和外部Tomcat配置與專案啟動

嵌入式 & 外接 Servlet 容器的優缺點; 嵌入式 Servlet 容器: 優點:簡單,便攜; 缺點:預設不支援 JSP、優化定製複雜(使用定製器【ServerProperties,自定義定製器EmbeddedServletContainerCus

spring boot 專案war部署到伺服器

      這是spring boot學習的第二篇了,在上一篇已經整合了spring boot專案了,如果還有小夥伴沒有看得可以先去看第一篇        到這裡的小夥伴應該都是會整合基本的spring boot專案 ,並且可以在本地工具上執行訪問了,如果還做不到的,說明你沒有用心哦o( ̄ヘ ̄o#)

spring bootjarwar的區別

spring boot既可以打成war釋出,也可以找成jar包釋出。說一下區別 jar包:直接通過內建tomcat執行,不需要額外安裝tomcat。如需修改內建tomcat的配置,只需要在spring boot的配置檔案中配置。內建tomcat沒有自己的日誌輸

Spring-bootwar部署到tomcat

1、maven專案,修改pom包將<packaging>jar</packaging> 改為<packaging>war</packaging> 2、打包時排除tomcat.<dependency> <g

spring boot -- 打包jar,war(二)war,mapper檔案掃描不到

我在專案中使用了mybatis,使用了 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource"