maven項目打jar包并包含所有依賴詳細教程
背景:
基于最近項目部署,需要打jar包,然后涉及接口調用,反復測試,出現了各種問題,最后找到合理方案,特做以下總結:
一、延伸知識: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)境下直接運行的,但是如果用于接口調用就行不通了。SpringBoot會自帶打包插件打的包不能用。將SpringBoot會自帶打包插件打的包解壓后會看到它的目錄結構,它把包都打到BOOT-INF這個目錄下了,引用的時候我們引用不到,會報“Cannot resolve symbol”的錯。
注:
JAR包中的/META-INF/MANIFEST.MF元數據文件必須包含Main-Class(主類)信息。
項目所有的依賴都必須在Classpath中,其可以通過 MANIFEST.MF 指定或者隱式設置
二、想要將打的jar包用于接口調用并且還包含項目所有依賴
不會給調用方造成引入依賴或者導入外部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結尾的jar,這個不包含其他依賴jar的jar包,只包含主類的依賴。
另一個是以dependence結尾jar,此jar是包含了項目中所有依賴的jar包

總結
到此這篇關于maven項目打jar包并包含所有依賴的文章就介紹到這了,更多相關maven項目打jar包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Maven打包編譯出現Fileencodinghasnotbeenset問題的解決方案
在使用Maven進行項目構建時,有時會遇到??File encoding has not been set??的錯誤提示,這個問題通常出現在Maven嘗試編譯Java源文件時,本文將詳細介紹該問題的原因、解決方法以及如何避免類似問題再次發(fā)生,需要的朋友可以參考下2025-11-11
揭秘Spring核心注解@Configuration與@Component的本質區(qū)別
在Spring框架中,@Configuration和@Component都是常用的注解,但它們有著本質的區(qū)別,本文將深入剖析這兩者的核心區(qū)別,并通過代碼示例展示它們的實際行為差異2025-07-07

