日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java打包时打入本地依赖包

發布時間:2024/8/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java打包时打入本地依赖包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java打包時打入本地依賴包

      • 方案1:將所有依賴寫入jar包
      • 方案2:打包時在MANIFEST.MF文件中寫入jar包依賴

在某些情況下,需要進行本地依賴包引入.但如果配置不當很容易出現NoClassDefFoundError的報錯.
目前正好進行sdk開發,因此整理打包時加入本地依賴包的方案與過程.

方案1:將所有依賴寫入jar包

在某些情況下(如內網環境),第三方依賴包并不一定能夠使用maven進行下載(如果沒有Nexus服務器),且需要生成一個可單獨使用的jar包(如sdk開發)
因此可以將所有的依賴都寫入jar包中

下邊是步驟:

(1)pom文件中導入本地包

<dependency><!-- groupId artifactId version內容隨意寫 -->><groupId>livillya.von.einzbern</groupId><artifactId>livillya.von.einzbern</artifactId><version>1.0.0</version><scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/你的jar包名.jar</systemPath></dependency>

此時,如果是單純跑項目,已經是可以使用
(2)編寫pom.xml的build參數

<build><plugins><!-- 用于管理版本,某些項目是沒有parent引用的--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- 使用maven-assembly-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.1.1</version><configuration><descriptors><!--assembly配置文件路徑,注意需要在項目中新建文件assembly/package.xml--><!-- ><descriptor>${basedir}/assembly/package.xml</descriptor> --><descriptor>src/main/resource/package.xml</descriptor></descriptors></configuration><!-- executions配置 --><executions><execution><id>make-assembly</id><!-- 綁定到package生命周期 --><phase>package</phase><goals><!-- 只運行一次 --><goal>single</goal></goals></execution></executions></plugin></plugins></build>

如果不進行 executions配置,則需要自己執行 mvn package assembly:single

以下為package.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"><id>package</id><formats><format>jar</format><!-- 如果寫多個format,可打出多種包<format>zip</format> <format>tar.bz2</format>--></formats><includeBaseDirectory>false</includeBaseDirectory><dependencySets><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>runtime</scope></dependencySet><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>system</scope></dependencySet></dependencySets> </assembly>

此時,進行打包操作后,可多得到一個 你的項目打包名-package.jar 的jar包,該包包含所有依賴文件

方案2:打包時在MANIFEST.MF文件中寫入jar包依賴

大部分項目并不需要把jar文件單獨使用,可以打成一個jar和lib分開的包
在MANIFEST.MF的Class-Path中加入jar包的路徑即可
以下為我常用的build配置

<build><finalName>你的項目名</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><type>jar</type><includeTypes>jar</includeTypes><outputDirectory>${project.basedir}/src/main/resources/lib/</outputDirectory><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin><!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><classesDirectory>target/classes/</classesDirectory><archive><manifest><mainClass>com.main.你的程序入口</mainClass><!-- 打包時 MANIFEST.MF文件不記錄時間戳版本 --><useUniqueVersions>false</useUniqueVersions><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><!-- 假設你的jar包放在resources/lib中 --><Class-Path>../config/ ./config/ . lib/你的jar包名.jar</Class-Path></manifestEntries></archive><excludes><!--編譯結果目錄開始算目錄結構 --><exclude>lib/*</exclude><exclude>config/**</exclude><exclude>bin/**</exclude><exclude>*</exclude></excludes></configuration></plugin></plugins></build>

總結

以上是生活随笔為你收集整理的java打包时打入本地依赖包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。