日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

瀏覽:21日期:2023-04-13 14:52:12

Spring Boot 項目打包成的 jar ,被其他項目依賴之后,總是報找不到類的錯誤?

大伙有這樣的疑問,就是因為還沒搞清楚可執行 jar 和普通 jar 到底有什么區別?

一、Springboot 項目的默認插件配置

Spring Boot 中默認打包成的 jar 叫做 可執行 jar,這種 jar 不同于普通的 jar,普通的 jar 不可以通過 java -jar xxx.jar 命令執行,

普通的 jar 主要是被其他應用依賴,Spring Boot 打成的 jar 可以執行,但是不可以被其他的應用所依賴,即使強制依賴,也無法獲取里邊的類。但是可執行 jar 并不是 Spring Boot 獨有的,Java 工程本身就可以打包成可執行 jar 。

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

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

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

五個功能分別是:

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

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

二、打包

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

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

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

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

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

三、兩種 jar 包的比較

1. admin-0.0.1-SNAPSHOT.jar 可執行的 jar 結構

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

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

Manifest-Version: 1.0Created-By: Maven Jar Plugin 3.2.0Build-Jdk-Spec: 14Implementation-Title: adminImplementation-Version: 0.0.1-SNAPSHOTMain-Class: org.springframework.boot.loader.JarLauncherStart-Class: org.yolo.admin.AdminApplicationSpring-Boot-Version: 2.3.4.RELEASESpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx

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

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

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

2. admin-0.0.1-SNAPSHOT.jar.original 不可執行的 jar 結構

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

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

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

Manifest-Version: 1.0Created-By: Maven Jar Plugin 3.2.0Build-Jdk-Spec: 14Implementation-Title: adminImplementation-Version: 0.0.1-SNAPSHOT

注意

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

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

四、一次性打包兩個 jar

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

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

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration><classifier>exec</classifier> </configuration> </plugin> </plugins></build>

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

關于SpringBoot 打包成的可執行jar不能被其他項目依賴的問題

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

到此這篇關于關于SpringBoot 打包成的可執行 jar不能被其他項目依賴的問題的文章就介紹到這了,更多相關SpringBoot 打包成的可執行 jar內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久电影tv| 精品欧美一区二区三区在线观看| 国产精品亚洲一区二区三区在线观看| 国产黄色精品| 麻豆精品在线| 久久精品一区二区国产| 久久久91麻豆精品国产一区| 久热精品在线| 亚州精品视频| 国产一区二区三区四区五区传媒| 成人精品国产亚洲| 99久久婷婷这里只有精品| 欧美日韩少妇| 日韩国产欧美在线播放| 精品国产亚洲一区二区三区大结局| 国产在线一区不卡| 成人在线超碰| 自拍日韩欧美| 国产日韩亚洲欧美精品| 另类专区亚洲| 日本欧美在线看| 日韩1区2区日韩1区2区| 国产极品久久久久久久久波多结野| 老司机精品视频网| 亚洲二区精品| 国产精品一区高清| 91精品高清| 国产亚洲精品美女久久 | 免费看av不卡| 欧美精品一区二区久久| 日韩国产欧美视频| 日韩免费av| 中文字幕av一区二区三区四区| 日韩av首页| www在线观看黄色| 日韩中文欧美在线| 国产精品magnet| 免费久久99精品国产自在现线| 日韩亚洲精品在线观看| 日韩在线短视频| 国产日本亚洲| 免费精品视频最新在线| 国产白浆在线免费观看| 日本aⅴ免费视频一区二区三区| 亚洲三级欧美| 国产精品99久久免费| 丝袜国产日韩另类美女| 乱一区二区av| 日韩精选在线| 丝袜亚洲另类欧美| 黄色不卡一区| 99久久夜色精品国产亚洲1000部| 麻豆国产精品| 精品久久亚洲| 精品中文字幕一区二区三区 | 午夜精品婷婷| 日本在线精品| 综合日韩av| 国产精品久久777777毛茸茸| 美日韩精品视频| 欧美网站在线| 午夜电影亚洲| 天堂av在线一区| 国产一区91| 免费在线观看视频一区| 欧美资源在线| 日本一区二区三区视频在线看| 亚洲精品九九| 91精品在线免费视频| 91成人在线网站| 麻豆视频久久| 日本精品影院| 亚洲欧美日韩国产一区| 女人天堂亚洲aⅴ在线观看| 欧美亚洲国产一区| 免费不卡中文字幕在线| 午夜日韩福利| 亚洲欧美日本国产| 国产午夜久久av| 岛国av在线播放| 激情婷婷欧美| 日本三级亚洲精品| 成人在线视频区| 欧美日韩国产高清电影| 一区二区三区四区精品视频| 国产亚洲精品精品国产亚洲综合| 精品免费av| 黄色亚洲在线| 综合在线一区| 欧美1区二区| 久久久久一区| 亚洲精品婷婷| 成人在线视频区| 丝袜诱惑制服诱惑色一区在线观看| 91精品国产一区二区在线观看| 国内在线观看一区二区三区| 香蕉久久99| 国产欧美日韩亚洲一区二区三区| 桃色av一区二区| 欧美日本不卡| 亚洲专区一区| 国产精品久久观看| 亚洲精品系列| 免费观看久久av| 欧美欧美黄在线二区| 女主播福利一区| 在线看片福利| 久久爱www.| 日韩精品国产欧美| 久久高清国产| 欧美不卡高清| 国产精品不卡| 国产情侣一区在线| 综合激情婷婷| 亚洲欧美高清| 午夜视频精品| 伊人久久大香线蕉av不卡| 精品日韩一区| 麻豆91精品91久久久的内涵| 亚洲精品电影| 久久国产日韩| 日本不卡免费高清视频在线| 美女国产精品久久久| 日本精品另类| 欧美精品国产一区| 日韩在线网址| 亚洲香蕉久久| 涩涩涩久久久成人精品| 亚洲精品伊人| 日韩国产在线一| 欧美一区影院| 久久av免费| 日韩国产欧美一区二区| 亚洲精品福利电影| 国产成人精品一区二区免费看京| 精品美女久久| 日韩久久一区二区三区| 五月激情久久| 自由日本语亚洲人高潮| 亚洲一区二区三区高清| 在线观看亚洲精品福利片| 日本不卡不码高清免费观看| 国产日韩中文在线中文字幕 | 久久av超碰| av日韩中文| 婷婷激情综合| 免费精品视频在线| 亚洲一二av| 另类综合日韩欧美亚洲| 日韩一区二区三区免费播放| 亚洲男女av一区二区| 日韩区一区二| 国产69精品久久| 午夜国产精品视频免费体验区| 亚洲图片久久| 精品日韩一区| 欧美日韩精品免费观看视频完整| 69堂免费精品视频在线播放| 亚洲最新无码中文字幕久久| 国产农村妇女精品一二区| 久久不见久久见免费视频7| 蜜臀av免费一区二区三区| 亚洲黄色影院| 国产精品va视频| 日韩一级网站| 水蜜桃久久夜色精品一区| 蜜臀久久久99精品久久久久久| 国产精品主播在线观看| 欧美日韩精品一区二区视频| 亚洲精品极品| 免费精品国产| 国产精品成人自拍| 亚洲午夜久久| 好吊一区二区三区| 日韩欧美在线中字| 国产精品videosex极品| 丝袜美腿一区二区三区| 久久精品国产精品亚洲毛片| 亚洲一区久久| 欧美69视频| 日韩国产欧美| 免费在线亚洲欧美| 亚洲影视一区| 玖玖玖国产精品| 在线国产一区二区| 久久高清精品| 麻豆成全视频免费观看在线看| 国产精品探花在线观看| 欧美亚洲色图校园春色| 三级在线观看一区二区| 婷婷精品视频| 激情综合激情| 伊人久久视频| 欧美黄色网页| se01亚洲视频| 免费观看久久av| 久久婷婷激情| 五月天久久网站| 日韩视频一区| 亚洲精品美女|