最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項目打成war和jar的區(qū)別說明

 更新時間:2022年06月07日 09:35:30   作者:CrazySnail_x  
這篇文章主要介紹了SpringBoot項目打成war和jar的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

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

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

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

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

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

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

  • 哎,現(xiàn)在學(xué)編程的基本都不會教歷史了,也沒人有興趣去鉆研??傮w來說吧,很多年前,Sun 還在世的那個年代,在度過了早期用 C++寫 Html 解析器的蠻荒時期后,有一批最早的腳本程序進入了 cgi 時代,此時的 Sun 決定進軍這個領(lǐng)域,為了以示區(qū)別并顯得自己高大上,于是研發(fā)了 servlet 標(biāo)準(zhǔn),搞出了最早的 jsp。
  • 并給自己起了個高大上的稱號 JavaEE ( Java 企業(yè)級應(yīng)用標(biāo)準(zhǔn),我呸,不就是一堆服務(wù)器以 http 提供服務(wù)嗎,吹逼)。既然是企業(yè)級標(biāo)準(zhǔn)那自然得有自己的服務(wù)器標(biāo)準(zhǔn)。
  • 于是 Servlet 標(biāo)準(zhǔn)誕生,以此標(biāo)準(zhǔn)實現(xiàn)的服務(wù)器稱為 Servle 容器服務(wù)器,Tomcat 就是其中代表,被 Sun 捐獻(xiàn)給了 Apache 基金會,那個時候的 Web 服務(wù)器還是個高大上的概念,當(dāng)時的 Java Web 程序的標(biāo)準(zhǔn)就是 War 包(其實就是個 Zip 包),這就是 War 包的由來。
  • 后來隨著服務(wù)器領(lǐng)域的屢次進化,人們發(fā)現(xiàn)我們?yōu)槭裁匆@么笨重的 Web 服務(wù)器,還要實現(xiàn)一大堆 Servlet 之外的管理功能,簡化一下抽出核心概念 servlet 不是更好嗎,最早這么干的似乎是 Jetty,出現(xiàn)了可以內(nèi)嵌的 Servelet 服務(wù)器。去掉了一大堆非核心功能。
  • 后來 tomcat 也跟進了,再后來,本來很笨重的傳統(tǒng) JavaEE 服務(wù)器 Jboss 也搞了個 undertow 來湊熱鬧。正好這個時候微服務(wù)的概念興起,“ use Jar,not War ”。要求淘汰傳統(tǒng) Servlet 服務(wù)器的呼聲就起來了。

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

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

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

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

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

【格式特點】

  • 安全性 可以對 JAR 文件內(nèi)容加上數(shù)字化簽名。這樣,能夠識別簽名的工具就可以有選擇地為您授予軟件安全特權(quán),這是其他文件做不到的,它還可以檢測代碼是否被篡改過。
  • 減少下載時間 如果一個 applet 捆綁到一個 JAR 文件中,那么瀏覽器就可以在一個 HTTP 事務(wù)中下載這個 applet 的類文件和相關(guān)的資源,而不是對每一個文件打開一個新連接。
  • 壓縮:JAR 格式允許您壓縮文件以提高存儲效率。
  • 傳輸平臺擴展:Java 擴展框架(Java Extensions Framework)提供了向 Java 核心平臺添加功能的方法,這些擴展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 開發(fā)的擴展例子)。
  • WAR文件:就是一個Web應(yīng)用程序,建立WAR文件,就是把整個Web應(yīng)用程序(不包括Web應(yīng)用程序?qū)哟谓Y(jié)構(gòu)的根目錄)壓縮起來,指定一個war擴展名。

【建立的條件】

  • 需要建立正確的Web應(yīng)用程序的目錄層次結(jié)構(gòu)。
  • 建立WEB-INF子目錄,并在該目錄下建立classes與lib兩個子目錄。
  • 將Servlet類文件放到WEB-INF\classes目錄下,將Web應(yīng)用程序所使用Java類庫文件(即JAR文件)放到WEB-INF\lib目錄下。
  • 將JSP頁面或靜態(tài)HTML頁面放到上下文根路徑下或其子目錄下。
  • 建立META-INF目錄,并在該目錄下建立context.xml文件。

給大家講講如何將springboot項目打包成jar和war

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

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

一、打包成jar 

1.先new 一個Spring Starter Project 

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

2.創(chuàng)建完成后項目的pom如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
 
	<properties>
		<java.version>1.8</java.version>
	</properties>
 
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
 
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
 
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
 
</project>

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

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

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

二、打包成war包形式 

1.可以在剛才創(chuàng)建的項目上做改動

首先打包成war需要一個ServletInitializer類,這個類的位置需要和啟動類在同一個文件下

 (如果一開始選擇war包形式,會自動創(chuàng)建此類) 

2.修改pom.xml 

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

3.如果我們的SpringBoot是使用html作為前端頁面開發(fā)沒有問題

但是如果我們想用jsp開發(fā),這個時候就需要配置一些依賴了:主要是排除SpringBoot的內(nèi)置Tomcat,添加javax.servlet-api和tomcat-servlet-api(SpringMVC還需要配置后綴); 

最后的pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
 
	<properties>
		<java.version>1.8</java.version>
	</properties>
 
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
 
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.0.36</version>
            <scope>provided</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
 
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
 
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
 
</project>

因為SpringBoot默認(rèn)推薦的是html,而不是jsp;經(jīng)過上面的修改就可以使用jsp進行開發(fā)了; 

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

如下: 

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

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

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

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

此時,pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
 
	<properties>
		<java.version>1.8</java.version>
	</properties>
 
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
 
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
 
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
 
</project>

直接 mvn clean package就能打包成功

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的全過程

    基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的全過程

    多租戶是一種軟件架構(gòu)技術(shù),在多用戶的環(huán)境下,共有同一套系統(tǒng),并且要注意數(shù)據(jù)之間的隔離性,下面這篇文章主要給大家介紹了關(guān)于基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • BaseDao封裝JavaWeb的增刪改查的實現(xiàn)代碼

    BaseDao封裝JavaWeb的增刪改查的實現(xiàn)代碼

    Basedao 是一種基于數(shù)據(jù)訪問對象(Data Access Object)模式的設(shè)計方法,它是一個用于處理數(shù)據(jù)庫操作的基礎(chǔ)類,負(fù)責(zé)封裝數(shù)據(jù)庫訪問的底層操作,提供通用的數(shù)據(jù)庫訪問方法,本文給大家介紹了BaseDao封裝JavaWeb的增刪改查的實現(xiàn)代碼,需要的朋友可以參考下
    2024-03-03
  • SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    這篇文章主要介紹了SpringAOP 通過JoinPoint獲取參數(shù)名和值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解Spring Boot Oauth2緩存UserDetails到Ehcache

    詳解Spring Boot Oauth2緩存UserDetails到Ehcache

    這篇文章主要介紹了詳解Spring Boot Oauth2緩存UserDetails到Ehcache,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 一篇文章帶你入門Springboot沙箱環(huán)境支付寶支付(附源碼)

    一篇文章帶你入門Springboot沙箱環(huán)境支付寶支付(附源碼)

    螞蟻沙箱環(huán)境 (Beta) 是協(xié)助開發(fā)者進行接口功能開發(fā)及主要功能聯(lián)調(diào)的輔助環(huán)境。沙箱環(huán)境模擬了開放平臺部分產(chǎn)品的主要功能和主要邏輯
    2021-06-06
  • Spring配置文件的拆分和整合過程分析

    Spring配置文件的拆分和整合過程分析

    在實際應(yīng)用里,隨著應(yīng)用規(guī)模的增加,系統(tǒng)中 Bean 數(shù)量也大量增加,導(dǎo)致配置文件非常龐大。為了避免這種情況的產(chǎn)生,提高配置文件的可讀性與可維護性,可以將Spring 配置文件分解成多個配置文件,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • scala中常用特殊符號詳解

    scala中常用特殊符號詳解

    這篇文章主要介紹了scala中常用特殊符號詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java中FileWriter的用法及wirte()重載方法詳解

    Java中FileWriter的用法及wirte()重載方法詳解

    這篇文章主要介紹了Java中FileWriter的用法及wirte()重載方法詳解,FileWriter是Java編程語言中的一個類,用于將字符寫入文件,它提供了一種簡單而方便的方式來創(chuàng)建、打開和寫入文件,通過使用FileWriter,我們可以將字符數(shù)據(jù)寫入文本文件,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)的程序員老黃歷實例

    Java實現(xiàn)的程序員老黃歷實例

    這篇文章主要介紹了Java實現(xiàn)的程序員老黃歷實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • springboot啟動mongoDB報錯之禁用mongoDB自動配置問題

    springboot啟動mongoDB報錯之禁用mongoDB自動配置問題

    這篇文章主要介紹了springboot啟動mongoDB報錯之禁用mongoDB自動配置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論

内乡县| 城市| 乐昌市| 雷州市| 铜陵市| 镇康县| 茶陵县| 涿鹿县| 思茅市| 册亨县| 敖汉旗| 岳池县| 宜川县| 资源县| 漾濞| 贵港市| 昆山市| 鱼台县| 桐柏县| 台南县| 淳化县| 娄底市| 自贡市| 平顶山市| 哈尔滨市| 大理市| 雷波县| 襄城县| 乐昌市| 嘉善县| 中宁县| 新龙县| 合江县| 涞源县| 双桥区| 南陵县| 翼城县| 婺源县| 庆安县| 郴州市| 辽源市|