精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

Android編程精選 ? 來(lái)源:CSDN ? 2023-04-07 11:30 ? 次閱讀

首先給大家來(lái)講一個(gè)我們遇到的一個(gè)奇怪的問(wèn)題:

我的一個(gè)springboot項(xiàng)目,用mvn install打包成jar,換一臺(tái)有jdk的機(jī)器就直接可以用java -jar 項(xiàng)目名.jar的方式運(yùn)行,沒(méi)任何問(wèn)題,為什么這里不需要tomcat也可以運(yùn)行了?

然后我打包成war放進(jìn)tomcat運(yùn)行,發(fā)現(xiàn)端口號(hào)變成tomcat默認(rèn)的8080(我在server.port中設(shè)置端口8090)項(xiàng)目名稱(chēng)也必須加上了。

也就是說(shuō)我在原來(lái)的機(jī)器的IDEA中運(yùn)行,項(xiàng)目接口地址為 ip:8090/listall,打包放進(jìn)另一臺(tái)機(jī)器的tomcat就變成了ip:8080/項(xiàng)目名/listall。這又是為什么呢?

通過(guò)jar運(yùn)行實(shí)際上是啟動(dòng)了內(nèi)置的tomcat,所以用的是應(yīng)用的配置文件中的端口

直接部署到tomcat之后,內(nèi)置的tomcat就不會(huì)啟用,所以相關(guān)配置就以安裝的tomcat為準(zhǔn),與應(yīng)用的配置文件就沒(méi)有關(guān)系了

哎,現(xiàn)在學(xué)編程的基本都不會(huì)教歷史了,也沒(méi)人有興趣去鉆研。

總體來(lái)說(shuō)吧,很多年前,Sun 還在世的那個(gè)年代,在度過(guò)了早期用 C++寫(xiě) Html 解析器的蠻荒時(shí)期后,有一批最早的腳本程序進(jìn)入了 cgi 時(shí)代,此時(shí)的 Sun 決定進(jìn)軍這個(gè)領(lǐng)域,為了以示區(qū)別并顯得自己高大上,于是研發(fā)了 servlet 標(biāo)準(zhǔn),搞出了最早的 jsp。并給自己起了個(gè)高大上的稱(chēng)號(hào) JavaEE ( Java 企業(yè)級(jí)應(yīng)用標(biāo)準(zhǔn),其實(shí)不就是一堆服務(wù)器以 http 提供服務(wù)嗎,吹逼)。

既然是企業(yè)級(jí)標(biāo)準(zhǔn)那自然得有自己的服務(wù)器標(biāo)準(zhǔn)。于是 Servlet 標(biāo)準(zhǔn)誕生,以此標(biāo)準(zhǔn)實(shí)現(xiàn)的服務(wù)器稱(chēng)為 Servle 容器服務(wù)器,Tomcat 就是其中代表,被 Sun 捐獻(xiàn)給了 Apache 基金會(huì),那個(gè)時(shí)候的 Web 服務(wù)器還是個(gè)高大上的概念,當(dāng)時(shí)的 Java Web 程序的標(biāo)準(zhǔn)就是 War 包(其實(shí)就是個(gè) Zip 包),這就是 War 包的由來(lái)。

后來(lái)隨著服務(wù)器領(lǐng)域的屢次進(jìn)化,人們發(fā)現(xiàn)我們?yōu)槭裁匆@么笨重的 Web 服務(wù)器,還要實(shí)現(xiàn)一大堆 Servlet 之外的管理功能,簡(jiǎn)化一下抽出核心概念 servlet 不是更好嗎,最早這么干的似乎是 Jetty,出現(xiàn)了可以?xún)?nèi)嵌的 Servelet 服務(wù)器。

去掉了一大堆非核心功能。后來(lái) tomcat 也跟進(jìn)了,再后來(lái),本來(lái)很笨重的傳統(tǒng) JavaEE 服務(wù)器 Jboss 也搞了個(gè) undertow 來(lái)湊熱鬧。正好這個(gè)時(shí)候微服務(wù)的概念興起,“ use Jar,not War ”。要求淘汰傳統(tǒng) Servlet 服務(wù)器的呼聲就起來(lái)了。

jar包和war包的區(qū)別

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

2、war包是做好一個(gè)web應(yīng)用后,通常是網(wǎng)站,打成包部署到容器中;jar包通常是開(kāi)發(fā)時(shí)要引用通用類(lèi),打成包便于存放管理。

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

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

【格式特點(diǎn)】:

安全性可以對(duì) JAR 文件內(nèi)容加上數(shù)字化簽名。這樣,能夠識(shí)別簽名的工具就可以有選擇地為您授予軟件安全特權(quán),這是其他文件做不到的,它還可以檢測(cè)代碼是否被篡改過(guò)。

減少下載時(shí)間如果一個(gè) applet 捆綁到一個(gè) JAR 文件中,那么瀏覽器就可以在一個(gè) HTTP 事務(wù)中下載這個(gè) applet 的類(lèi)文件和相關(guān)的資源,而不是對(duì)每一個(gè)文件打開(kāi)一個(gè)新連接。

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

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

WAR文件就是一個(gè)Web應(yīng)用程序,建立WAR文件,就是把整個(gè)Web應(yīng)用程序(不包括Web應(yīng)用程序?qū)哟谓Y(jié)構(gòu)的根目錄)壓縮起來(lái),指定一個(gè)war擴(kuò)展名。

【建立的條件】:

需要建立正確的Web應(yīng)用程序的目錄層次結(jié)構(gòu)。

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

將Servlet類(lèi)文件放到WEB-INFclasses目錄下,將Web應(yīng)用程序所使用Java類(lèi)庫(kù)文件(即JAR文件)放到WEB-INFlib目錄下。

將JSP頁(yè)面或靜態(tài)HTML頁(yè)面放到上下文根路徑下或其子目錄下。

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

下面給大家講講怎么將springboot項(xiàng)目打包成jar和war

SpringBoot項(xiàng)目打包成jar很簡(jiǎn)單,也是SpringBoot的常用打包格式;本篇博客將SpringBoot打包成jar和war兩種方式都記錄下來(lái);

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

一、打包成jar

1)先new 一個(gè)Spring Starter Project

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

這里注意packaging默認(rèn)為jar,不用修改.

2)創(chuàng)建完成后項(xiàng)目的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包(通過(guò)maven命令的方式):

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

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

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

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

二、打包成war包形式

1)可以在剛才創(chuàng)建的項(xiàng)目上做改動(dòng),首先打包成war需要一個(gè)ServletInitializer類(lèi),這個(gè)類(lèi)的位置需要和啟動(dòng)類(lèi)在同一個(gè)文件下

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

如果一開(kāi)始選擇war包形式,會(huì)自動(dòng)創(chuàng)建此類(lèi)

2)修改pom.xml

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

3)如果我們的SpringBoot是使用html作為前端頁(yè)面開(kāi)發(fā)沒(méi)有問(wèn)題,但是如果我們想用jsp開(kāi)發(fā),這個(gè)時(shí)候就需要配置一些依賴(lài)了:主要是排除SpringBoot的內(nèi)置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





因?yàn)镾pringBoot默認(rèn)推薦的是html,而不是jsp;經(jīng)過(guò)上面的修改就可以使用jsp進(jìn)行開(kāi)發(fā)了;

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

如下:

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

打包成功后,就可以將war包放在tomcat下的webapps下,然后運(yùn)行tomcat,啟動(dòng)項(xiàng)目了;

記錄下來(lái),以后用到的時(shí)候看 ^_^;

當(dāng)然了,在創(chuàng)建項(xiàng)目的時(shí)候直接選擇package為war,直接就能打成war包了

當(dāng)選擇war為打包方式創(chuàng)建項(xiàng)目時(shí),ServletInitializer是默認(rèn)直接創(chuàng)建的

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

此時(shí),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






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2958

    瀏覽量

    104552
  • Web服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    24371
  • JSP技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1578
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    169

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

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【實(shí)用開(kāi)發(fā)工具】將BAT腳本打包成exe可執(zhí)行文件

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

    SpringBoot 如何實(shí)現(xiàn)熱部署

    部署是軟件開(kāi)發(fā)中一個(gè)非常有用的功能,它允許我們?cè)诓恢匦聠?dòng)整個(gè)應(yīng)用的情況下,依舊能夠使我們修改的代碼生效。 現(xiàn)在Java Web 開(kāi)發(fā)應(yīng)該都是使用的 SpringBoot,那么本篇文章就來(lái)介紹
    的頭像 發(fā)表于 09-30 10:16 ?809次閱讀
    <b class='flag-5'>SpringBoot</b> 如何實(shí)現(xiàn)熱<b class='flag-5'>部署</b>

    關(guān)于JAVA不能打包成jar包的問(wèn)題

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

    請(qǐng)問(wèn)如何打jar包和運(yùn)行jar包?

    08:48:25) 分類(lèi):想知道... jar文件聽(tīng)說(shuō)過(guò)嗎,沒(méi)有?或者陌生!好,沒(méi)關(guān)系,這就是我們的第一站:打包發(fā)布。 為什么會(huì)有這個(gè)玩意,首先,這是jar的全稱(chēng):JavaTM A
    發(fā)表于 07-05 01:08

    Linux部署maven(war包)web 項(xiàng)目

    一、說(shuō)明Linux配置Java環(huán)境及安裝Tomcat,請(qǐng)參考博文點(diǎn)擊打開(kāi)鏈接Linux部署maven步驟分為以下幾點(diǎn):1.Eclipse導(dǎo)出war包2.拷貝war包到Linux3.Linux下解壓
    發(fā)表于 07-04 06:40

    基于Linux的Maven的自動(dòng)化打包發(fā)布項(xiàng)目

    參數(shù)分別為: svn的路徑,打包的名稱(chēng),打包的方式jar或者war,服務(wù)器地址,服務(wù)器的路徑,以空格分隔。
    發(fā)表于 07-08 06:38

    基于spring boot的linux服務(wù)器部署方法

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

    springboot-vue后臺(tái)管理項(xiàng)目如何快速打包

    springboot-vue后臺(tái)管理項(xiàng)目快速打包
    發(fā)表于 05-18 15:12

    怎樣去使用springboot

    怎樣去使用springboot?學(xué)習(xí)springboot需要懂得哪些?
    發(fā)表于 10-25 07:13

    如何將LUbuntu系統(tǒng)的根文件系統(tǒng)打包成img

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

    怎樣通過(guò)QEMU模擬器加載系統(tǒng)文件打包成新的roofts鏡像

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

    jarwar之間不得不說(shuō)的事

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

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

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

    Spring Boot配置加載相關(guān)知識(shí)

    Spring BOOT 啟動(dòng)參數(shù) 在Java Web的開(kāi)發(fā)完成后,以前我們都會(huì)打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器?,F(xiàn)在基于SpringBoot開(kāi)發(fā)的項(xiàng)目
    的頭像 發(fā)表于 10-07 15:47 ?460次閱讀

    創(chuàng)建jar文件的過(guò)程

    在這篇文章中,我們將介紹一下以編程方式創(chuàng)建jar文件的過(guò)程。在編寫(xiě)軟件時(shí),最終我們需要將其部署到生產(chǎn)狀態(tài)。在某些情況下,使用帶有獨(dú)立文件的classpath是可以的。通常情況下,處理一個(gè)文件會(huì)更方便
    的頭像 發(fā)表于 10-08 15:36 ?804次閱讀