在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SpringBoot部署打包成jar和war有什么不同呢?

Android編程精選 ? 來源:CSDN ? 2023-04-07 11:30 ? 次閱讀

首先給大家來講一個我們遇到的一個奇怪的問題:

我的一個springboot項目,用mvn install打包成jar,換一臺有jdk的機器就直接可以用java -jar 項目名.jar的方式運行,沒任何問題,為什么這里不需要tomcat也可以運行了?

然后我打包成war放進tomcat運行,發現端口號變成tomcat默認的8080(我在server.port中設置端口8090)項目名稱也必須加上了。

也就是說我在原來的機器的IDEA中運行,項目接口地址為 ip:8090/listall,打包放進另一臺機器的tomcat就變成了ip:8080/項目名/listall。這又是為什么呢?

通過jar運行實際上是啟動了內置的tomcat,所以用的是應用的配置文件中的端口

直接部署到tomcat之后,內置的tomcat就不會啟用,所以相關配置就以安裝的tomcat為準,與應用的配置文件就沒有關系了

哎,現在學編程的基本都不會教歷史了,也沒人有興趣去鉆研。

總體來說吧,很多年前,Sun 還在世的那個年代,在度過了早期用 C++寫 Html 解析器的蠻荒時期后,有一批最早的腳本程序進入了 cgi 時代,此時的 Sun 決定進軍這個領域,為了以示區別并顯得自己高大上,于是研發了 servlet 標準,搞出了最早的 jsp。并給自己起了個高大上的稱號 JavaEE ( Java 企業級應用標準,其實不就是一堆服務器以 http 提供服務嗎,吹逼)。

既然是企業級標準那自然得有自己的服務器標準。于是 Servlet 標準誕生,以此標準實現的服務器稱為 Servle 容器服務器,Tomcat 就是其中代表,被 Sun 捐獻給了 Apache 基金會,那個時候的 Web 服務器還是個高大上的概念,當時的 Java Web 程序的標準就是 War 包(其實就是個 Zip 包),這就是 War 包的由來。

后來隨著服務器領域的屢次進化,人們發現我們為什么要這么笨重的 Web 服務器,還要實現一大堆 Servlet 之外的管理功能,簡化一下抽出核心概念 servlet 不是更好嗎,最早這么干的似乎是 Jetty,出現了可以內嵌的 Servelet 服務器。

去掉了一大堆非核心功能。后來 tomcat 也跟進了,再后來,本來很笨重的傳統 JavaEE 服務器 Jboss 也搞了個 undertow 來湊熱鬧。正好這個時候微服務的概念興起,“ use Jar,not War ”。要求淘汰傳統 Servlet 服務器的呼聲就起來了。

jar包和war包的區別

1、war是一個web模塊,其中需要包括WEB-INF,是可以直接運行的WEB模塊;jar一般只是包括一些class文件,在聲明了Main_class之后是可以用java命令運行的。

2、war包是做好一個web應用后,通常是網站,打成包部署到容器中;jar包通常是開發時要引用通用類,打成包便于存放管理。

3、war是Sun提出的一種Web應用程序格式,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織;classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)可以打包成jar放到WEB-INF下的lib目錄下。

JAR文件格式以流行的ZIP文件格式為基礎。與ZIP文件不同的是,JAR 文件不僅用于壓縮和發布,而且還用于部署和封裝庫、組件和插件程序,并可被像編譯器和 JVM 這樣的工具直接使用。

【格式特點】:

安全性可以對 JAR 文件內容加上數字化簽名。這樣,能夠識別簽名的工具就可以有選擇地為您授予軟件安全特權,這是其他文件做不到的,它還可以檢測代碼是否被篡改過。

減少下載時間如果一個 applet 捆綁到一個 JAR 文件中,那么瀏覽器就可以在一個 HTTP 事務中下載這個 applet 的類文件和相關的資源,而不是對每一個文件打開一個新連接。

壓縮JAR 格式允許您壓縮文件以提高存儲效率。

傳輸平臺擴展Java 擴展框架(Java Extensions Framework)提供了向 Java 核心平臺添加功能的方法,這些擴展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 開發的擴展例子)。

WAR文件就是一個Web應用程序,建立WAR文件,就是把整個Web應用程序(不包括Web應用程序層次結構的根目錄)壓縮起來,指定一個war擴展名。

【建立的條件】:

需要建立正確的Web應用程序的目錄層次結構。

建立WEB-INF子目錄,并在該目錄下建立classes與lib兩個子目錄。

將Servlet類文件放到WEB-INFclasses目錄下,將Web應用程序所使用Java類庫文件(即JAR文件)放到WEB-INFlib目錄下。

將JSP頁面或靜態HTML頁面放到上下文根路徑下或其子目錄下。

建立META-INF目錄,并在該目錄下建立context.xml文件。

下面給大家講講怎么將springboot項目打包成jar和war

SpringBoot項目打包成jar很簡單,也是SpringBoot的常用打包格式;本篇博客將SpringBoot打包成jar和war兩種方式都記錄下來;

先介紹將SpringBoot打包成jar包的方式:(以下示例是在idea中演示)

一、打包成jar

1)先new 一個Spring Starter Project

efdd9226-d4a6-11ed-bfe3-dac502259ad0.png

這里注意packaging默認為jar,不用修改.

2)創建完成后項目的pom如下:



4.0.0

org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
 

com.example
demo
0.0.1-SNAPSHOT
demo
DemoprojectforSpringBoot


1.8




org.springframework.boot
spring-boot-starter



org.springframework.boot
spring-boot-starter-test
test






org.springframework.boot
spring-boot-maven-plugin





3)打成jar包(通過maven命令的方式):

在Terminal窗口,使用mvn clean package命令打包:

eff269f8-d4a6-11ed-bfe3-dac502259ad0.png

然后在target目錄下就能看到打包好的jar包了

f03f3d5a-d4a6-11ed-bfe3-dac502259ad0.png

二、打包成war包形式

1)可以在剛才創建的項目上做改動,首先打包成war需要一個ServletInitializer類,這個類的位置需要和啟動類在同一個文件下

f0571aba-d4a6-11ed-bfe3-dac502259ad0.png

如果一開始選擇war包形式,會自動創建此類

2)修改pom.xml

修改pom.xml的war將原先的jar改為war;

3)如果我們的SpringBoot是使用html作為前端頁面開發沒有問題,但是如果我們想用jsp開發,這個時候就需要配置一些依賴了:主要是排除SpringBoot的內置Tomcat,添加javax.servlet-api和tomcat-servlet-api(SpringMVC還需要配置后綴);

最后的pom.xml如下:



4.0.0

org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
 

com.example
demo
0.0.1-SNAPSHOT
war
demo
DemoprojectforSpringBoot


1.8




org.springframework.boot
spring-boot-starter-thymeleaf


org.springframework.boot
spring-boot-starter-tomcat




javax.servlet
javax.servlet-api
provided



org.apache.tomcat
tomcat-servlet-api
8.0.36
provided



org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-tomcat
provided



org.springframework.boot
spring-boot-starter-test
test






org.springframework.boot
spring-boot-maven-plugin





因為SpringBoot默認推薦的是html,而不是jsp;經過上面的修改就可以使用jsp進行開發了;

4)打包成war:使用mvn clean package

如下:

f07225bc-d4a6-11ed-bfe3-dac502259ad0.png

打包成功后,就可以將war包放在tomcat下的webapps下,然后運行tomcat,啟動項目了;

記錄下來,以后用到的時候看 ^_^;

當然了,在創建項目的時候直接選擇package為war,直接就能打成war包了

當選擇war為打包方式創建項目時,ServletInitializer是默認直接創建的

f08bd2b4-d4a6-11ed-bfe3-dac502259ad0.png

此時,pom文件如下



4.0.0

org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
 

com.example
demo
0.0.1-SNAPSHOT
war
demo
DemoprojectforSpringBoot


1.8




org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-tomcat
provided


org.springframework.boot
spring-boot-starter-test
test






org.springframework.boot
spring-boot-maven-plugin





直接mvn clean package就能打包成功

f0b39e34-d4a6-11ed-bfe3-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2972

    瀏覽量

    104855
  • Web服務器
    +關注

    關注

    0

    文章

    138

    瀏覽量

    24437
  • JSP技術
    +關注

    關注

    0

    文章

    3

    瀏覽量

    1595
  • SpringBoot
    +關注

    關注

    0

    文章

    173

    瀏覽量

    184

原文標題:SpringBoot 部署打包成 jar 和 war 有什么不同?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【實用開發工具】將BAT腳本打包成exe可執行文件

    【實用開發工具】將BAT腳本打包成exe可執行文件
    的頭像 發表于 08-21 19:51 ?2.6w次閱讀
    【實用開發工具】將BAT腳本<b class='flag-5'>打包成</b>exe可執行文件

    SpringBoot 如何實現熱部署

    部署是軟件開發中一個非常有用的功能,它允許我們在不重新啟動整個應用的情況下,依舊能夠使我們修改的代碼生效。 現在Java Web 開發應該都是使用的 SpringBoot,那么本篇文章就來介紹
    的頭像 發表于 09-30 10:16 ?839次閱讀
    <b class='flag-5'>SpringBoot</b> 如何實現熱<b class='flag-5'>部署</b>

    關于JAVA不能打包成jar包的問題

    前幾天在對JAVA文件打包成jar包時,遇到一些問題,至今未能解決,記錄下來,還望大家指教。   在將多個CLASS文件打包成jar包時,比如我要把放在/mysoft/bin目錄下的類
    發表于 12-09 11:57

    請問如何打jar包和運行jar包?

    08:48:25) 分類:想知道... jar文件聽說過嗎,沒有?或者陌生!好,沒關系,這就是我們的第一站:打包發布。 為什么會有這個玩意,首先,這是jar的全稱:JavaTM A
    發表于 07-05 01:08

    Linux部署maven(war包)web 項目

    一、說明Linux配置Java環境及安裝Tomcat,請參考博文點擊打開鏈接Linux部署maven步驟分為以下幾點:1.Eclipse導出war包2.拷貝war包到Linux3.Linux下解壓
    發表于 07-04 06:40

    基于Linux的Maven的自動化打包發布項目

    參數分別為: svn的路徑,打包的名稱,打包的方式jar或者war,服務器地址,服務器的路徑,以空格分隔。
    發表于 07-08 06:38

    基于spring boot的linux服務器部署方法

    最近一直在研究springboot服務器,之前受到springmvc等框架的困擾,思路不對,一直想把springboot打包成war包然后部署
    發表于 07-22 06:51

    springboot-vue后臺管理項目如何快速打包

    springboot-vue后臺管理項目快速打包
    發表于 05-18 15:12

    怎樣去使用springboot

    怎樣去使用springboot?學習springboot需要懂得哪些?
    發表于 10-25 07:13

    如何將LUbuntu系統的根文件系統打包成img

    如何將LUbuntu系統的根文件系統打包成img?其整體操作哪些流程?
    發表于 03-03 06:16

    怎樣通過QEMU模擬器加載系統文件打包成新的roofts鏡像

    怎樣通過QEMU模擬器加載系統文件打包成新的roofts鏡像?哪些步驟?
    發表于 03-04 07:23

    jarwar之間不得不說的事

    ava編譯好之后生成class文件,但如果直接發布這些class文件的話會很不方便,所以就把許多的class文件打包成一個jar,jar中除了class文件還可以包括一些資源和配置文件,通常一個
    的頭像 發表于 12-12 15:32 ?5216次閱讀
    <b class='flag-5'>jar</b>與<b class='flag-5'>war</b>之間不得不說的事

    【Python】如何將Python腳本打包成exe可執行文件

    【Python實用技巧】如何將Python腳本打包成exe可執行文件?
    的頭像 發表于 08-18 12:40 ?1.8w次閱讀
    【Python】如何將Python腳本<b class='flag-5'>打包成</b>exe可執行文件

    Spring Boot配置加載相關知識

    Spring BOOT 啟動參數 在Java Web的開發完成后,以前我們都會打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器?,F在基于SpringBoot開發的項目
    的頭像 發表于 10-07 15:47 ?497次閱讀

    創建jar文件的過程

    在這篇文章中,我們將介紹一下以編程方式創建jar文件的過程。在編寫軟件時,最終我們需要將其部署到生產狀態。在某些情況下,使用帶有獨立文件的classpath是可以的。通常情況下,處理一個文件會更方便
    的頭像 發表于 10-08 15:36 ?837次閱讀
    主站蜘蛛池模板: 亚洲一区二区三区中文字幕| 日本精品视频一视频高清| 黑人一区二区三区中文字幕| 波多野吉衣一区二区三区在线观看| 99久久久精品| 韩国三级日本三级在线观看| 欧美精品首页| 日本黄色小视频网站| 天堂网在线www| 色综合天天综合网亚洲影院| 波多野结衣在线观看一区| 激情综合亚洲| 免费看日本大片免费| 日韩大胆| 色天使视频| 天堂网在线资源www种子| 色综合天天综合中文网| 亚洲你懂得| 一级做a爰片久久毛片鸭王| 免费观看黄视频网站| 亚洲国产福利精品一区二区| japanese69xxx日本| 欧美成人区| 欧美毛片网站| 久久99热精品这里久久精品| 日本不卡1| 国模欢欢大尺度| 婷婷激情狠狠综合五月| 天天做人人爱夜夜爽2020| 日本黄段视频| 大学生毛片| 一本一本大道香蕉久在线精品| 97在线亚洲| 久久久福利| xxxx曰本| 美女被异性狂揉下部羞羞视频 | 丁香六月综合网| 福利体验区| 狠狠色噜狠狠狠狠| 日本成人小视频| 在线免费视频手机版|