Maven打包jar(lib目錄分離和不分離)的兩種方式
前言
Jar文件(Java歸檔,英語(yǔ):Java Archive)是一種軟件包文件格式,以流行的 ZIP 文件格式為基礎(chǔ)。不僅用于壓縮和發(fā)布,還用于部署和封裝庫(kù)、組件和插件程序以便開(kāi)發(fā)Java平臺(tái)應(yīng)用軟件或庫(kù)。
背景需求
打包jar的方式有很多種:比如通過(guò)jar命令去打包,包括現(xiàn)在市面上常用的java開(kāi)發(fā)工具idea、eclipse等,都集成了打包方法,只需配置一下即可(有需要自行上網(wǎng)了解),后來(lái)學(xué)習(xí)web開(kāi)發(fā)接觸maven,又開(kāi)始用maven進(jìn)行打包,只需install一下很方便,下面將網(wǎng)上五花八門(mén)(看的頭暈)的maven配置結(jié)合我實(shí)際開(kāi)發(fā)需求介紹兩種打包方式
Maven打包jar與lib依賴包不分離
打包插件用的是spring-boot-maven-plugin,這個(gè)插件會(huì)把項(xiàng)目中的代碼和相關(guān)依賴一起打包成一個(gè)jar包,我們只需哪到這個(gè)jar包發(fā)布到服務(wù)器上即可,很方便。但是jar包里面包含特別多的其他依賴,所以每次更新服務(wù)器jar包,特別費(fèi)時(shí)間。
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--指定jar程序入口--> <mainClass>com.baidu.test.App</mainClass> </configuration> </plugin> </plugins> </build>
配置好后,可以通過(guò)mvn install命令或者找到開(kāi)發(fā)軟件上的maven工作欄找到你要編譯的項(xiàng)目點(diǎn)擊install即可,然后找到你項(xiàng)目目錄找到target文件夾打開(kāi),里面就有你剛剛打包好的jar包,50多M,很大。
我們可以通過(guò)壓縮工具查看jar包的文件目錄,找到BOOT-INF下lib目錄,可以看到里面有很多依賴包,然后其他的文件就是一些class文件和配置文件
Maven打包jar與lib依賴包分離
為了解決jar包太打不方便發(fā)布的問(wèn)題,就把jar包中的依賴和jar包分離開(kāi),在發(fā)布時(shí)如果依賴包沒(méi)啥變動(dòng),就只需要發(fā)布jar包即可,這樣發(fā)布速度便能優(yōu)化不少
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <!-- 是否要把第三方j(luò)ar加入到類構(gòu)建路徑 --> <addClasspath>true</addClasspath> <!-- 外部依賴jar包的最終位置 --> <classpathPrefix>lib/</classpathPrefix> <!--指定jar程序入口--> <mainClass>com.baidu.test.App</mainClass> </manifest> </archive> </configuration> </plugin> <!--拷貝依賴到j(luò)ar外面的lib目錄--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <!-- 拷貝項(xiàng)目依賴包到lib/目錄下 --> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> </plugins> </build>
配置好后,可以通過(guò)mvn install命令或者找到開(kāi)發(fā)軟件上的maven工作欄找到你要編譯的項(xiàng)目點(diǎn)擊install即可,然后找到你項(xiàng)目目錄找到target文件夾打開(kāi),里面就有你剛剛打包好的jar包和lib文件,此時(shí)jar包只有10幾kb,特別小,上傳速度更快了
我們?cè)偻ㄟ^(guò)壓縮工具查看jar包的文件目錄,BOOT-INF目錄已經(jīng)沒(méi)有了,就是一些class文件和配置文件
到此這篇關(guān)于Maven打包jar(lib目錄分離和不分離)的文章就介紹到這了,更多相關(guān)Maven打包jar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis?TypeHandler接口及繼承關(guān)系示例解析
這篇文章主要為大家介紹了Mybatis?TypeHandler接口及繼承關(guān)系示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Springboot Thymeleaf字符串對(duì)象實(shí)例解析
這篇文章主要介紹了Springboot Thymeleaf字符串對(duì)象實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2007-09-09SpringCache緩存自定義配置的實(shí)現(xiàn)
本文主要介紹了SpringCache緩存自定義配置的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01SpringBoot整合PageHelper實(shí)現(xiàn)分頁(yè)查詢功能詳解
PageHelper是mybatis框架的一個(gè)插件,用于支持在mybatis執(zhí)行分頁(yè)操作。本文將通過(guò)SpringBoot整合PageHelper實(shí)現(xiàn)分頁(yè)查詢功能,需要的可以參考一下2022-03-035分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項(xiàng)目的實(shí)現(xiàn)示例
本文主要介紹了使用IntelliJ?IDEA創(chuàng)建Spring?Boot工程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01MVC AOP面向切面編程簡(jiǎn)單介紹及實(shí)例
這篇文章主要介紹了MVC AOP面向切面編程簡(jiǎn)單介紹及實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-12-12springboot3.X 無(wú)法解析parameter參數(shù)問(wèn)題分析
本文介紹了Spring Boot 3.2.1版本中調(diào)用接口時(shí)出現(xiàn)的參數(shù)解析問(wèn)題,該錯(cuò)誤是由Spring新版本加強(qiáng)的錯(cuò)誤校驗(yàn)和報(bào)錯(cuò)提示導(dǎo)致的,在Spring 6.1之后,官方要求URL中的傳參必須使用`@PathVariable`聲明用于接收的變量,而不能省略`@RequestParam`注解,感興趣的朋友一起看看吧2025-03-03Java利用Jsoup解析和操作HTML的技術(shù)指南
在現(xiàn)代 Java 開(kāi)發(fā)中,處理 HTML 數(shù)據(jù)是一項(xiàng)常見(jiàn)需求,無(wú)論是抓取網(wǎng)頁(yè)數(shù)據(jù)、解析 HTML 文檔,還是操作 DOM 樹(shù),Jsoup 都是一個(gè)強(qiáng)大的工具,本文將介紹 Jsoup 的基本功能,并通過(guò)多個(gè)詳細(xì)的代碼示例展示如何使用它解析和操作 HTML,需要的朋友可以參考下2025-03-03