精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring Boot打包成的可執行jar ,為什么不能被其他項目依賴?

開發 后端
大伙有這樣的疑問,就是因為還沒搞清楚可執行 jar 和普通 jar 到底有什么區別?今天松哥就和大家來聊一聊這個問題。

 前兩天被人問到這樣一個問題:

“松哥,為什么我的 Spring Boot 項目打包成的 jar ,被其他項目依賴之后,總是報找不到類的錯誤?”

大伙有這樣的疑問,就是因為還沒搞清楚可執行 jar 和普通 jar 到底有什么區別?今天松哥就和大家來聊一聊這個問題。

多了一個插件

Spring Boot 中默認打包成的 jar 叫做 可執行 jar,這種 jar 不同于普通的 jar,普通的 jar 不可以通過 java-jar xxx.jar 命令執行,普通的 jar 主要是被其他應用依賴, SpringBoot 打成的 jar 可以執行,但是不可以被其他的應用所依賴,即使強制依賴,也無法獲取里邊的類。但是可執行 jar 并不是 Spring Boot 獨有的,Java 工程本身就可以打包成可執行 jar 。

有的小伙伴可能就有疑問了,既然同樣是執行 mvnpackage 命令進行項目打包,為什么 Spring Boot 項目就打成了可執行 jar ,而普通項目則打包成了不可執行 jar 呢?

這我們就不得不提 Spring Boot 項目中一個默認的插件配置 spring-boot-maven-plugin ,這個打包插件存在 5 個方面的功能,從插件命令就可以看出:

五個功能分別是:

  •  build-info:生成項目的構建信息文件 build-info.properties
  •  repackage:這個是默認 goal,在 mvnpackage 執行之后,這個命令再次打包生成可執行的 jar,同時將 mvnpackage 生成的 jar 重命名為 *.origin
  •  run:這個可以用來運行 Spring Boot 應用
  •  start:這個在 mvn integration-test 階段,進行 SpringBoot 應用生命周期的管理
  •  stop:這個在 mvn integration-test 階段,進行 SpringBoot 應用生命周期的管理

這里功能,默認情況下使用就是 repackage 功能,其他功能要使用,則需要開發者顯式配置。

打包

repackage 功能的 作用,就是在打包的時候,多做一點額外的事情:

  1.  首先 mvnpackage 命令 對項目進行打包,打成一個 jar,這個 jar 就是一個普通的 jar,可以被其他項目依賴,但是不可以被執行
  2.  repackage 命令,對第一步 打包成的 jar 進行再次打包,將之打成一個 可執行 jar ,通過將第一步打成的 jar重命名為 *.original 文件

舉個例子:

對任意一個 Spring Boot 項目進行打包,可以執行 mvnpackage 命令,也可以直接在 IDEA 中點擊 package,如下 :

打包成功之后, target 中的文件如下:

這里有兩個文件,第一個 restful-0.0.1-SNAPSHOT.jar 表示打包成的可執行 jar ,第二個 restful-0.0.1-SNAPSHOT.jar.original 則是在打包過程中 ,被重命名的 jar,這是一個不可執行 jar,但是可以被其他項目依賴的 jar。通過對這兩個文件的解壓,我們可以看出這兩者之間的差異。

兩種 jar 的比較

可執行 jar 解壓之后,目錄如下:

可以看到,可執行 jar 中,我們自己的代碼是存在 于 BOOT-INF/classes/ 目錄下,另外,還有一個 META-INF 的目錄,該目錄下有一個 MANIFEST.MF 文件,打開該文件,內容如下:   

  1. Manifest-Version: 1.0  
  2.    Implementation-Title: restful  
  3.    Implementation-Version: 0.0.1-SNAPSHOT  
  4.    Start-Class: org.javaboy.restful.RestfulApplication  
  5.    Spring-Boot-Classes: BOOT-INF/classes/  
  6.    Spring-Boot-Lib: BOOT-INF/lib/  
  7.    Build-Jdk-Spec: 1.8  
  8.    Spring-Boot-Version: 2.1.6.RELEASE  
  9.    Created-By: Maven Archiver 3.4.0  
  10.    Main-Class: org.springframework.boot.loader.JarLauncher 

可以看到,這里定義了一個 Start-Class,這就是可執行 jar 的入口類, Spring-Boot-Classes 表示我們自己代碼編譯后的位置, Spring-Boot-Lib 則表示項目依賴的 jar 的位置。

換句話說,如果自己要打一個可執行 jar 包的話,除了添加相關依賴之外,還需要配置 META-INF/MANIFEST.MF 文件。

這是可執行 jar 的結構,那么不可執行 jar 的結構呢?

我們首先將默認的后綴 .original 除去,然后給文件重命名,重命名完成,進行解壓:

解壓后可以看到,不可執行 jar 根目錄就相當于我們的 classpath,解壓之后,直接就能看到我們的代碼,它也有 META-INF/MANIFEST.MF 文件,但是文件中沒有定義啟動類等。   

  1. Manifest-Version: 1.0  
  2.    Implementation-Title: restful  
  3.    Implementation-Version: 0.0.1-SNAPSHOT  
  4.    Build-Jdk-Spec: 1.8  
  5.    Created-By: Maven Archiver 3.4.0 

注意

這個不可以執行 jar 也沒有將項目的依賴打包進來。

從這里我們就可以看出,兩個 jar ,雖然都是 jar 包,但是內部結構是完全不同的,因此一個可以直接執行,另一個則可以被其他項目依賴。

一次打包兩個 jar

一般來說,Spring Boot 直接打包成可執行 jar 就可以了,不建議將 Spring Boot 作為普通的 jar 被其他的項目所依賴。如果有這種需求,建議將被依賴的部分,單獨抽出來做一個普通的 Maven 項目,然后在 Spring Boot 中引用這個 Maven 項目。

如果非要將 Spring Boot 打包成一個普通 jar 被其他項目依賴,技術上來說,也是可以的,給 spring-boot-maven-plugin 插件添加如下配置:   

  1. <build>  
  2.         <plugins>  
  3.             <plugin>  
  4.                 <groupId>org.springframework.boot</groupId>  
  5.                 <artifactId>spring-boot-maven-plugin</artifactId>  
  6.                 <configuration>  
  7.                     <classifier>exec</classifier>  
  8.                 </configuration>  
  9.             </plugin>  
  10.         </plugins>  
  11.     </build> 

配置的 classifier 表示可執行 jar 的名字,配置了這個之后,在插件執行 repackage 命令時,就不會給 mvnpackage 所打成的 jar 重命名了,所以,打包后的 jar 如下:

第一個 jar 表示可以被其他項目依賴的 jar ,第二個 jar 則表示一個可執行 jar。

好了,關于 Spring Boot 中 jar 的問題,我們就說這么多。 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2025-09-01 08:24:57

.NET性能靜態鏈接

2012-12-18 11:55:38

2021-01-14 22:17:09

PythonLinux工具

2009-07-08 15:18:00

JAR文件包jar命令

2022-04-24 11:06:54

SpringBootjar代碼

2017-02-07 20:49:15

2011-11-10 10:39:21

蘋果Siri

2023-03-08 09:48:08

SpringWAR文件JAR文件

2025-05-14 06:24:11

2023-05-29 08:43:46

SpringJava

2020-05-07 16:30:32

Spring BootJava

2022-01-11 09:59:23

Python關機程序文件

2022-05-20 08:55:02

py文件exepython

2011-09-13 17:30:41

Eclipse And

2024-02-20 08:51:56

PythonFlask工具

2023-12-18 09:21:22

開發靜態編譯Linux

2020-08-14 10:40:35

RestTemplatRetrofitJava

2009-06-10 20:44:18

netbeans 打包JAR文件

2021-05-07 07:03:33

Spring打包工具

2018-01-10 13:58:20

點贊
收藏

51CTO技術棧公眾號

а天堂中文在线官网| 国产午夜性春猛交ⅹxxx| 精品入口麻豆88视频| 亚洲高清视频在线| 欧美高清性xxxxhd| 97人妻精品一区二区三区视频| 亚洲欧美亚洲| 亚洲女人被黑人巨大进入al| 黄色片子免费看| 成人免费看黄| 一区二区日韩电影| 日韩国产精品一区二区| www.黄色国产| 男男视频亚洲欧美| 97在线看福利| 久久久久久久久毛片| 国产精品一国产精品| 日韩欧美国产综合在线一区二区三区 | 一卡二卡三卡在线| 亚洲女优在线| 欧美国产高跟鞋裸体秀xxxhd| 中文字幕第20页| 国产精品极品在线观看| 在线不卡欧美精品一区二区三区| 国产男女无遮挡| 天堂av中文在线| 国产精品久久久爽爽爽麻豆色哟哟| 国产一区二区三区高清视频| 国内精品久久久久久久久久久| 日韩不卡免费视频| 88xx成人精品| 久久精品无码人妻| 亚洲欧美伊人| 久久国产精品影视| 大地资源高清在线视频观看| 成人综合久久| 亚洲最新在线视频| 丰满少妇高潮一区二区| 美女av一区| 精品国产免费久久| 中文字幕视频观看| 66精品视频在线观看| 777亚洲妇女| 九色porny自拍| 国产亚洲精彩久久| 欧美日韩综合不卡| 爱情岛论坛亚洲首页入口章节| 中日韩脚交footjobhd| 欧美日韩在线第一页| 精品无码一区二区三区在线| 丁香花在线影院| 亚洲午夜久久久久| 成人黄色av片| 在线天堂新版最新版在线8| 欧美午夜激情小视频| 精品人妻一区二区三区四区在线 | 国产成人在线一区| 亚洲欧美一区二区三区在线观看| 久久精品麻豆| 国产精品香蕉国产| 国产露脸91国语对白| 国产精品一区二区免费不卡 | 亚洲靠逼com| 精品免费久久久久久久| 黄色羞羞视频在线观看| 亚洲国产成人av好男人在线观看| 国产日韩欧美精品在线观看| 青青青免费在线视频| 日本乱人伦aⅴ精品| 少妇黄色一级片| 国产成人免费av一区二区午夜| 日韩欧美美女一区二区三区| 国产成人av无码精品| 米奇777超碰欧美日韩亚洲| 国产亚洲人成网站在线观看| 九九热久久免费视频| 欧美激情视频一区二区三区在线播放 | 亚洲第一视频网| 人妻大战黑人白浆狂泄| 久久人人99| 欧美日本中文字幕| 国产一级18片视频| 久久国产精品72免费观看| 91久久国产综合久久蜜月精品| 蜜桃av中文字幕| 久久九九国产精品| 亚洲欧美日韩不卡| a国产在线视频| 欧美亚洲国产bt| 潘金莲一级淫片aaaaaaa| 亚洲欧美日本伦理| 精品国产一区二区三区四区在线观看| 久视频在线观看| 可以免费看不卡的av网站| 成人福利视频在线观看| 天天干天天色天天| 国产精品视频免费看| 97视频在线免费| 国产成人精品一区二区三区视频| 日韩亚洲欧美在线| 女人黄色一级片| 欧美日韩国产亚洲一区| 国产精品7m视频| 高清国产mv在线观看| 国产无遮挡一区二区三区毛片日本| 中国黄色录像片| 欧美国产大片| 精品国产99国产精品| 俄罗斯毛片基地| 日韩午夜精品| 亚洲在线免费观看| 黄色av免费在线看| 亚洲v中文字幕| 激情久久综合网| 经典一区二区| 91av视频在线播放| 国产成人麻豆精品午夜在线| 国产精品少妇自拍| www.欧美日本| 白白在线精品| 欧美激情精品久久久久| 97在线播放免费观看| 国产午夜精品久久久久久免费视| 日韩精品视频在线观看视频| 精品国产一区二| 日韩性xxxx爱| 中文字幕精品在线观看| 久久久久国产精品麻豆| 亚洲熟妇无码另类久久久| 久久综合给合| 久热精品视频在线观看| 这里只有精品9| 欧美激情一区二区三区| 99re在线视频免费观看| 亚洲老女人视频免费| 97在线看福利| 少妇激情av一区二区| 午夜精品福利在线| 国产精品一区二区无码对白| 欧美激情麻豆| 国产传媒欧美日韩| 韩国成人免费视频| 亚洲国产成人91精品| 日本中文字幕免费| 95精品视频在线| 美女日批免费视频| 久久国产精品色av免费看| 久久久久久久久久久久av| 性少妇videosexfreexxx片| 亚洲欧洲综合另类| 人妻少妇偷人精品久久久任期| 亚洲欧美综合久久久| 99精品国产一区二区| 中文在线免费| 欧美精品一区二区三区视频| 一级aaa毛片| 91一区在线观看| 欧美黄网站在线观看| 精品国产精品久久一区免费式 | 免费看毛片的网址| 美女视频亚洲色图| 日韩av男人的天堂| 淫片在线观看| 欧美一级黄色大片| 日韩成人在线免费视频| 久久综合给合久久狠狠狠97色69| 精品久久久久久久免费人妻| 波多野结衣一区| 亚洲精品免费在线视频| 超级碰碰不卡在线视频| 亚洲男人天堂久| 亚洲一级av毛片| 亚洲自拍偷拍av| 一出一进一爽一粗一大视频| 日韩福利视频网| 午夜久久久久久久久久久| 国产精品jk白丝蜜臀av小说| 日产精品久久久一区二区福利 | 7m第一福利500精品视频| 国产三级视频在线看| 69av一区二区三区| 日韩精品成人在线| 中文字幕不卡在线播放| 午夜视频在线免费看| 美女日韩在线中文字幕| 中文字幕一区二区三区最新| www.爱久久| 国产精品美女久久久久av超清| 欧美aaaaaaa| 中文字幕日韩高清| 污视频网站在线播放| 欧美视频精品在线观看| 日韩精品视频播放| 国产精品女同一区二区三区| 亚洲香蕉中文网| 老色鬼精品视频在线观看播放| 老子影院午夜伦不卡大全| 国产一区三区在线播放| 成人欧美一区二区三区视频xxx| 电影亚洲精品噜噜在线观看| 欧美激情视频一区二区三区不卡| 川上优的av在线一区二区| 精品国产自在久精品国产| 国产美女www| 亚洲va欧美va人人爽| 亚洲二区在线播放| 欧美激情一区在线| 国产精品一级黄片| 国产精品99精品久久免费| 凹凸日日摸日日碰夜夜爽1| 很黄很黄激情成人| 一本—道久久a久久精品蜜桃| 伊人春色之综合网| 国产亚洲精品自在久久| 国产一区二区三区免费在线| 国产精品久久久一区| 亚洲午夜天堂| 91精品国产网站| 久久不射影院| 欧美大尺度激情区在线播放| 幼a在线观看| 伊人久久久久久久久久久久久| 桃花色综合影院| 亚洲高清av在线| 国 产 黄 色 大 片| 日韩一区二区三区观看| 一级片视频免费| 欧美亚洲丝袜传媒另类| 91午夜精品亚洲一区二区三区| 高跟丝袜欧美一区| 依依成人综合网| 疯狂做受xxxx高潮欧美日本| 日韩视频免费观看高清| 亚洲午夜成aⅴ人片| 加勒比av在线播放| 亚洲免费观看高清完整| 午夜三级在线观看| 椎名由奈av一区二区三区| 国产又色又爽又高潮免费| 中文字幕第一区二区| 黄色av片三级三级三级免费看| 久久精品人人做人人爽人人| 日韩丰满少妇无码内射| 久久久久久一二三区| 99精品欧美一区二区| 国产农村妇女毛片精品久久麻豆| 国产精品成人在线视频| 国产精品久久免费看| 小泽玛利亚一区二区免费| 伊人色综合久久天天| 久久久久亚洲av无码专区体验| 玉足女爽爽91| 亚洲国产精一区二区三区性色| 五月婷婷色综合| 五月婷婷中文字幕| 91福利精品视频| 一级黄色片免费看| 欧美一区二区三区四区在线观看| www.蜜臀av| 日韩成人免费视频| 丁香在线视频| 免费不卡在线观看av| 电影k8一区二区三区久久 | 一级免费在线观看| 一本大道久久精品懂色aⅴ | 极品销魂美女一区二区三区| 日本女人性视频| 99麻豆久久久国产精品免费优播| 黄色aaa视频| 亚洲欧美一区二区不卡| 久久精品欧美一区二区| 日本久久一区二区三区| 国产伦理一区二区| 亚洲国产中文字幕久久网| 国产三级视频在线播放线观看| 久久伊人精品一区二区三区| av男人的天堂在线观看| 国产精品激情自拍| 日韩视频一二区| 欧美性bbwbbwbbwhd| 天天久久综合| 97国产精东麻豆人妻电影| 蜜桃av噜噜一区二区三区小说| 91视频免费入口| 91美女在线视频| 久久久久久久久久久久久女过产乱| 五月天国产精品| 91精品在线视频观看| 亚洲成人中文字幕| 日韩毛片久久久| 午夜精品一区二区三区在线视| 黄色成人在线观看网站| 国产精品久久亚洲7777| 日韩电影在线视频| www黄色日本| 国产精品一区二区在线观看不卡| 久久久久亚洲av成人无码电影| 一区二区视频免费在线观看| 欧美性猛交xxxx乱大交hd| 精品国产污污免费网站入口| 日本在线观看| 浅井舞香一区二区| 8x国产一区二区三区精品推荐| 亚洲精品日韩在线观看| 国产一区二区精品| 欧美日韩一区二区区| 国产精品福利电影一区二区三区四区| 日韩av在线电影| 日韩欧美一卡二卡| 日韩三级影院| 国产精品视频99| 综合亚洲色图| 国产免费一区二区视频| 狠狠色丁香久久婷婷综| 精品一区二区三区蜜桃在线| 午夜视频一区二区三区| 午夜精品一二三区| 欧美久久精品午夜青青大伊人 | 好吊色欧美一区二区三区四区| 国产精品99视频| 黄色av免费在线播放| 97se亚洲国产综合自在线不卡 | 欧美色电影在线| 国产中文在线观看| 欧美在线视频网| 日韩最新在线| 水蜜桃色314在线观看| 成人做爰69片免费看网站| 校园春色 亚洲| 日韩欧美精品在线视频| 99在线播放| 91探花福利精品国产自产在线| 久久人人99| 爱豆国产剧免费观看大全剧苏畅| 国产精品久线观看视频| av首页在线观看| 最新69国产成人精品视频免费| 91成人抖音| 亚洲国产一区二区精品视频| 免费成人av资源网| 美国精品一区二区| 6080亚洲精品一区二区| 尤物在线网址| 国产一级二级三级精品| 一区二区国产在线观看| 黄色a一级视频| 欧美性69xxxx肥| 激情视频在线观看免费| 国产精品美女久久久免费| 91青青国产在线观看精品| 中文字幕视频三区| 亚洲欧美另类久久久精品2019| 国产极品999| 91精品国产自产91精品| 国产精品亚洲片在线播放| 一级片视频免费观看| 亚洲色图制服诱惑| 亚洲精品喷潮一区二区三区| 97久久伊人激情网| 欧美人与拘性视交免费看| 亚洲欧美自拍另类日韩| 亚洲日本丝袜连裤袜办公室| 精品国自产在线观看| 国内偷自视频区视频综合 | 小泽玛利亚av在线| 福利一区福利二区| 影音先锋在线国产| 日韩中文字幕网站| 澳门成人av| 亚洲色图38p| 亚洲另类在线制服丝袜| 婷婷久久久久久| 国产精品福利在线| 欧美搞黄网站| 久久精品无码一区| 91精品国产一区二区| 美女扒开腿让男人桶爽久久软| 婷婷五月色综合| 高潮精品一区videoshd| 天天综合久久综合| 欧美激情在线观看视频| 欧美美女在线| 韩国黄色一级片| 欧美亚州韩日在线看免费版国语版| 中文av资源在线| 视频一区不卡| 丁香网亚洲国际| 最新国产中文字幕| 国产最新精品视频| 日本女优一区| 800av在线播放| 欧美乱妇15p| 深夜av在线| 色哺乳xxxxhd奶水米仓惠香| 久久人人爽人人爽| www.久久色| 成人乱人伦精品视频在线观看| 亚洲一区区二区| 免费在线视频观看| 精品国模在线视频|