maven項(xiàng)目打jar包并包含所有依賴詳細(xì)教程
背景:
基于最近項(xiàng)目部署,需要打jar包,然后涉及接口調(diào)用,反復(fù)測(cè)試,出現(xiàn)了各種問(wèn)題,最后找到合理方案,特做以下總結(jié):
一、延伸知識(shí):Springboot打jar包命令
1.把之前打過(guò)的包通通干掉
mvn package clean -Dmaven.test.skip=true
2.重新打包
mvn package -Dmaven.test.skip=true
3. Springboot的打包插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
起初項(xiàng)目框架用的SpringBoot,大家都知道,它里面是有自帶打包依賴,那么問(wèn)題就是,用Springboot自帶的依賴打成jar包,是可以放在java環(huán)境下直接運(yùn)行的,但是如果用于接口調(diào)用就行不通了。SpringBoot會(huì)自帶打包插件打的包不能用。將SpringBoot會(huì)自帶打包插件打的包解壓后會(huì)看到它的目錄結(jié)構(gòu),它把包都打到BOOT-INF這個(gè)目錄下了,引用的時(shí)候我們引用不到,會(huì)報(bào)“Cannot resolve symbol”的錯(cuò)。
注:
JAR包中的/META-INF/MANIFEST.MF元數(shù)據(jù)文件必須包含Main-Class(主類(lèi))信息。
項(xiàng)目所有的依賴都必須在Classpath中,其可以通過(guò) MANIFEST.MF 指定或者隱式設(shè)置
二、想要將打的jar包用于接口調(diào)用并且還包含項(xiàng)目所有依賴
不會(huì)給調(diào)用方造成引入依賴或者導(dǎo)入外部jar包的困擾,特有以下方法:
1.在pom.xml中引入插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <!--給jar包起的別名--> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <!--添加項(xiàng)目中主類(lèi)--> <mainClass>com.sdt.intf.client.tools.DealConnectFile</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
注:
①.添加完插件后,就可以開(kāi)始打包了,可以直接操作maven
②.可以用命令執(zhí)行:
通過(guò)mvn clean compaile package 將生成兩個(gè)jar 一個(gè)是沒(méi)有dependence結(jié)尾的jar,這個(gè)不包含其他依賴jar的jar包,只包含主類(lèi)的依賴。
另一個(gè)是以dependence結(jié)尾jar,此jar是包含了項(xiàng)目中所有依賴的jar包
總結(jié)
到此這篇關(guān)于maven項(xiàng)目打jar包并包含所有依賴的文章就介紹到這了,更多相關(guān)maven項(xiàng)目打jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java+TestNG接口自動(dòng)化入門(mén)詳解
本文主要介紹了Java+TestNG接口自動(dòng)化入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Java定時(shí)任務(wù):利用java Timer類(lèi)實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的功能
本篇文章主要介紹了利用java Timer類(lèi)實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的功能,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11淺談Java中GuavaCache返回Null的注意事項(xiàng)
Guava在實(shí)際的Java后端項(xiàng)目中應(yīng)用的場(chǎng)景還是比較多的,比如限流,緩存,容器操作之類(lèi)的,本文主要介紹了GuavaCache返回Null的注意事項(xiàng),感興趣的可以了解一下2021-10-10Spring?Boot使用HMAC-SHA256對(duì)訪問(wèn)密鑰加解密
本文主要介紹了使用HMAC-SHA256算法進(jìn)行客戶端和服務(wù)端之間的簽名驗(yàn)簽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12詳解Java8?CompletableFuture的并行處理用法
Java8中有一個(gè)工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下2022-04-04關(guān)于SpringBoot的自動(dòng)裝配原理詳解
這篇文章主要介紹了關(guān)于SpringBoot的自動(dòng)裝配原理詳解,Spring?Boot自動(dòng)裝配原理是指Spring?Boot在啟動(dòng)時(shí)自動(dòng)掃描項(xiàng)目中的依賴關(guān)系,根據(jù)依賴關(guān)系自動(dòng)配置相應(yīng)的Bean,從而簡(jiǎn)化了Spring應(yīng)用的配置過(guò)程,需要的朋友可以參考下2023-07-07