maven項目打jar包并包含所有依賴詳細教程
背景:
基于最近項目部署,需要打jar包,然后涉及接口調(diào)用,反復(fù)測試,出現(xiàn)了各種問題,最后找到合理方案,特做以下總結(jié):
一、延伸知識:Springboot打jar包命令
1.把之前打過的包通通干掉
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>
起初項目框架用的SpringBoot,大家都知道,它里面是有自帶打包依賴,那么問題就是,用Springboot自帶的依賴打成jar包,是可以放在java環(huán)境下直接運行的,但是如果用于接口調(diào)用就行不通了。SpringBoot會自帶打包插件打的包不能用。將SpringBoot會自帶打包插件打的包解壓后會看到它的目錄結(jié)構(gòu),它把包都打到BOOT-INF這個目錄下了,引用的時候我們引用不到,會報“Cannot resolve symbol”的錯。
注:
JAR包中的/META-INF/MANIFEST.MF元數(shù)據(jù)文件必須包含Main-Class(主類)信息。
項目所有的依賴都必須在Classpath中,其可以通過 MANIFEST.MF 指定或者隱式設(shè)置
二、想要將打的jar包用于接口調(diào)用并且還包含項目所有依賴
不會給調(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> <!--添加項目中主類--> <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>
注:
①.添加完插件后,就可以開始打包了,可以直接操作maven
②.可以用命令執(zhí)行:
通過mvn clean compaile package 將生成兩個jar 一個是沒有dependence結(jié)尾的jar,這個不包含其他依賴jar的jar包,只包含主類的依賴。
另一個是以dependence結(jié)尾jar,此jar是包含了項目中所有依賴的jar包
總結(jié)
到此這篇關(guān)于maven項目打jar包并包含所有依賴的文章就介紹到這了,更多相關(guān)maven項目打jar包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java定時任務(wù):利用java Timer類實現(xiàn)定時執(zhí)行任務(wù)的功能
本篇文章主要介紹了利用java Timer類實現(xiàn)定時執(zhí)行任務(wù)的功能,具有一定的參考價值,有需要的可以了解一下。2016-11-11Spring?Boot使用HMAC-SHA256對訪問密鑰加解密
本文主要介紹了使用HMAC-SHA256算法進行客戶端和服務(wù)端之間的簽名驗簽,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12詳解Java8?CompletableFuture的并行處理用法
Java8中有一個工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下2022-04-04