maven項目打jar包并包含所有依賴詳細教程
背景:
基于最近項目部署,需要打jar包,然后涉及接口調(diào)用,反復測試,出現(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 指定或者隱式設置
二、想要將打的jar包用于接口調(diào)用并且還包含項目所有依賴
不會給調(dià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é)
到此這篇關于maven項目打jar包并包含所有依賴的文章就介紹到這了,更多相關maven項目打jar包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java定時任務:利用java Timer類實現(xiàn)定時執(zhí)行任務的功能
本篇文章主要介紹了利用java Timer類實現(xiàn)定時執(zhí)行任務的功能,具有一定的參考價值,有需要的可以了解一下。2016-11-11
Spring?Boot使用HMAC-SHA256對訪問密鑰加解密
本文主要介紹了使用HMAC-SHA256算法進行客戶端和服務端之間的簽名驗簽,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12
詳解Java8?CompletableFuture的并行處理用法
Java8中有一個工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下2022-04-04

