鍍金池/ 問答/Java  Linux/ Spring boot 的 web 項目發(fā)布到 tomcat 一定要打包成War

Spring boot 的 web 項目發(fā)布到 tomcat 一定要打包成War包嗎?

最近在學(xué)Spring boot,用來網(wǎng)上的例子,默認(rèn)配置是打包成Jar包。
http://start.spring.io/ 網(wǎng)站上提供了生成初始項目的功能,默認(rèn)選擇的是打包方式也是Jar包。

這在idea中進行開發(fā)中調(diào)試沒有任何問題。
現(xiàn)在,我想去修改項目的前端,不想打開ieda。想直接把服務(wù)端部署到 tomcat。
在網(wǎng)上搜索了一下部署方式,能找到的都是將打包方式改成war包,然后還要修改配置,還要修改java代碼。

對此,我感覺非常奇怪和不解:
既然發(fā)布到tomcat要用war包,為什么大家的默認(rèn)配置卻是jar包?
一般正常的流程,我認(rèn)為從開發(fā)轉(zhuǎn)到部署是不應(yīng)該改代碼的的,可以改配置,但也應(yīng)該避免不必要的修改(比如發(fā)布時排除內(nèi)嵌tomcat包),為什么我看到的發(fā)布方案都這樣不友好?

對此還有其他疑問:
tomcat上發(fā)布Spring boot一定要用war包嗎,或者用war包比其他方式好很多,都推薦用war包嗎?
可以用jar包發(fā)布嗎?
我記得tomcat上發(fā)布項目也可以不打包的用class文件靜態(tài)文件,一個文件夾下去就可以了,Spring boot可以這么做嗎?那些不好嗎?為什么我沒有搜索到有人這么做。

回答
編輯回答
編輯回答
毀了心

jar 使用內(nèi)嵌式web server (tomcat,jetty,undertow) ,由spring 初始化 webContext,Servlet,Filter 等

2017年2月7日 18:19
編輯回答
貓館

不管是打包成jar 還是 war 其實最終運行都是要解壓的。 只是tomcat 作為一個 web 容器,當(dāng)然用war格式打包比較好了。為什么要用war,因為war是在jar基礎(chǔ)上專門為web 項目定制的包。

你也可以不打包,直接把整個解壓好的項目復(fù)制到 webapp的目錄下面。

2017年6月19日 03:39
編輯回答
萌面人

線上環(huán)境tomcat通常會進行參數(shù)的優(yōu)化,比如開啟線程池,調(diào)大連接數(shù)等等,如果以jar包的形式,tomcat都內(nèi)置了還怎么優(yōu)化。另外,之前在網(wǎng)上看到有說以jar包形式運行可能會出現(xiàn)不可預(yù)知的問題,比如卡頓等。所以通常上線還是打成war包,而開發(fā)測試為了方便則直接使用jar形式。

2017年3月19日 09:19