最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven項(xiàng)目中將本地依賴庫(kù)打包到最終的JAR中的實(shí)現(xiàn)

 更新時(shí)間:2025年05月14日 09:22:03   作者:墨鴉_Cormorant  
本文主要介紹了Maven項(xiàng)目中將本地依賴庫(kù)打包到最終的JAR中的實(shí)現(xiàn),將本地依賴安裝到Maven本地倉(cāng)庫(kù),可以避免使用system作用域帶來(lái)的不可移植性和打包問(wèn)題,感興趣的可以了解一下

前言

在現(xiàn)代后端開(kāi)發(fā)中,構(gòu)建高效且可擴(kuò)展的 Web 應(yīng)用程序通常依賴于多種第三方庫(kù)和內(nèi)部依賴。這些依賴可以來(lái)自公共倉(cāng)庫(kù),也可能是公司內(nèi)部自研的庫(kù)或尚未發(fā)布到公共倉(cāng)庫(kù)的 JAR 包。本文將詳細(xì)介紹如何在 Maven 項(xiàng)目中處理本地依賴庫(kù),并確保這些依賴能夠正確地打包到最終的可執(zhí)行 JAR 文件中。本文不僅以 Doris 連接器(flink-doris-connector)作為示例,還涵蓋了處理其他本地依賴庫(kù)的通用方法。

為什么需要打包本地依賴庫(kù)?

通常,依賴庫(kù)可以通過(guò) Maven 中央倉(cāng)庫(kù)或其他公共倉(cāng)庫(kù)輕松獲取和管理。然而,有時(shí)我們需要使用一些未發(fā)布到公共倉(cāng)庫(kù)的本地 JAR 包,例如:

  • 公司內(nèi)部開(kāi)發(fā)的庫(kù)
  • 第三方提供但未上傳到 Maven 倉(cāng)庫(kù)的庫(kù)
  • 特殊版本或定制版的庫(kù)
  • 直接引用本地依賴庫(kù)可能會(huì)引發(fā)一些問(wèn)題,尤其是在構(gòu)建和部署過(guò)程中。為了確保項(xiàng)目的可移植性和一致性,必須將這些本地依賴正確地打包到最終的 JAR 文件中。

常見(jiàn)問(wèn)題:使用 system 作用域

  • 在 Maven 中,可以使用 system 作用域來(lái)引用本地 JAR 包。然而,這種方法有幾個(gè)顯著的缺點(diǎn):

    • 不可移植性:system 作用域依賴的路徑是硬編碼的,其他開(kāi)發(fā)人員在不同的環(huán)境中可能無(wú)法找到該路徑。
    • 打包問(wèn)題:使用 system 作用域的依賴默認(rèn)不會(huì)包含在最終打包的 JAR 文件中,導(dǎo)致運(yùn)行時(shí)缺少必要的依賴。
  • 依賴管理的最佳實(shí)踐

    為了避免上述問(wèn)題,推薦的做法是將本地依賴庫(kù)安裝到 Maven 本地倉(cāng)庫(kù)中,并使用常規(guī)的依賴管理機(jī)制進(jìn)行引用。這樣,可以確保依賴庫(kù)的一致性和可移植性,同時(shí)也方便后續(xù)的依賴管理和版本控制。

  • 解決方案:將本地依賴庫(kù)打包到最終 JAR

詳細(xì)步驟

以下是詳細(xì)的步驟,展示如何在 Maven 項(xiàng)目中包含本地依賴庫(kù)并將其打包到最終的 JAR 文件中。

步驟 1:將本地 JAR 安裝到 Maven 本地倉(cāng)庫(kù)

首先,需要將本地的 JAR 包安裝到 Maven 的本地倉(cāng)庫(kù)中。假設(shè)有一個(gè)本地的 flink-doris-connector JAR 文件位于項(xiàng)目的 libs 目錄下。

打開(kāi)終端,執(zhí)行以下命令:

mvn install:install-file \
-DgroupId=org.apache.doris \
-DartifactId=flink-connector-doris_2.12 \
-Dversion=1.14_2.12-1.1.1 \
-Dpackaging=jar \
-Dfile=libs/flink-doris-connector-1.14_2.12-1.1.1.jar

參數(shù)說(shuō)明:

通過(guò)上述命令,將本地的 JAR 包安裝到 Maven 本地倉(cāng)庫(kù)中,使其能夠像其他依賴一樣被 Maven 管理。

  • -DgroupId:依賴的組織 ID,通常與包名相對(duì)應(yīng)。
  • -DartifactId:依賴的模塊名。
  • -Dversion:依賴的版本號(hào)。
  • -Dpackaging:依賴的打包類型,通常為 jar。
  • -Dfile:本地 JAR 文件的路徑。

步驟 2:修改 pom.xml 文件中的依賴配置

安裝完成后,需要在項(xiàng)目的 pom.xml 文件中引用該依賴。移除之前使用 system 作用域的配置,并改為默認(rèn)的 compile 作用域。

原始依賴配置(使用 system 作用域)

<dependency>
    <groupId>org.apache.doris</groupId>
    <artifactId>flink-connector-doris_${scala.binary.version}</artifactId>
    <version>1.14_2.12-1.1.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/flink-doris-connector-1.14_2.12-1.1.1.jar</systemPath>
</dependency>

修改后的依賴配置

注意:省略了 和 元素,默認(rèn)作用域?yàn)?compile,這樣 Maven 會(huì)自動(dòng)處理該依賴。

<dependency>
    <groupId>org.apache.doris</groupId>
    <artifactId>flink-connector-doris_${scala.binary.version}</artifactId>
    <version>1.14_2.12-1.1.1</version>
</dependency>

步驟 3:重新構(gòu)建項(xiàng)目

mvn clean package

此命令將:

清理之前的構(gòu)建產(chǎn)物。

編譯項(xiàng)目源代碼。

使用 Maven Shade 插件將所有依賴(包括本地依賴)打包到最終的 JAR 文件中。

到此這篇關(guān)于Maven項(xiàng)目中將本地依賴庫(kù)打包到最終的JAR中的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Maven 本地依賴庫(kù)打包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng)

    了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng)

    這篇文章主要介紹了了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng),微服務(wù)化產(chǎn)品線,每一個(gè)服務(wù)專心于自己的業(yè)務(wù)邏輯,并對(duì)外提供相應(yīng)的接口,看上去似乎很明了,其實(shí)還有很多的東西需要考慮,,需要的朋友可以參考下
    2019-06-06
  • 如何解決Maven無(wú)法拉取SNAPSHOT依賴問(wèn)題

    如何解決Maven無(wú)法拉取SNAPSHOT依賴問(wèn)題

    在使用Maven管理項(xiàng)目時(shí),可能會(huì)遇到無(wú)法拉取SNAPSHOT版本依賴的問(wèn)題,這通常是因?yàn)镸aven默認(rèn)不支持直接拉取SNAPSHOT版本,遇到這樣的問(wèn)題,可以通過(guò)在項(xiàng)目的pom.xml文件中添加<repositories>標(biāo)簽,并配置啟用SNAPSHOT的倉(cāng)庫(kù)地址來(lái)解決
    2024-10-10
  • SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法

    SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法

    這篇文章主要介紹了SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 秒懂Kotlin之Java工程師快速掌握Kotlin的技巧

    秒懂Kotlin之Java工程師快速掌握Kotlin的技巧

    Kotlin 是一種在 Java 虛擬機(jī)上運(yùn)行的靜態(tài)類型編程語(yǔ)言,被稱之為 Android 世界的Swift,由 JetBrains 設(shè)計(jì)開(kāi)發(fā)并開(kāi)源。這篇文章主要介紹了秒懂Kotlin之Java工程師快速掌握Kotlin的技巧,需要的朋友可以參考下
    2021-09-09
  • spring-AOP 及 AOP獲取request各項(xiàng)參數(shù)操作

    spring-AOP 及 AOP獲取request各項(xiàng)參數(shù)操作

    這篇文章主要介紹了spring-AOP 及 AOP獲取request各項(xiàng)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java中判斷String類型為空和null的幾種方法

    java中判斷String類型為空和null的幾種方法

    判斷一個(gè)字符串是否為空或者為null是一個(gè)常見(jiàn)的操作,本文主要介紹了java中判斷String類型為空和null的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Java對(duì)象創(chuàng)建的幾種方式總結(jié)

    Java對(duì)象創(chuàng)建的幾種方式總結(jié)

    本文詳細(xì)介紹了Java中創(chuàng)建對(duì)象的五種方法,包括使用new關(guān)鍵字、Class的newInstance()方法、Constructor的newInstance()方法、克隆以及反序列化,同時(shí)討論了這些方式是否調(diào)用了構(gòu)造器以及創(chuàng)建對(duì)象的條件,文章還提供了示例代碼進(jìn)行演示,需要的朋友可以參考下
    2025-02-02
  • java 同步器SynchronousQueue詳解及實(shí)例

    java 同步器SynchronousQueue詳解及實(shí)例

    這篇文章主要介紹了java 同步器SynchronousQueue詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn)

    Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn)

    這篇文章主要介紹了Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot實(shí)現(xiàn)第一次啟動(dòng)時(shí)自動(dòng)初始化數(shù)據(jù)庫(kù)的方法

    SpringBoot實(shí)現(xiàn)第一次啟動(dòng)時(shí)自動(dòng)初始化數(shù)據(jù)庫(kù)的方法

    本文主要介紹了SpringBoot實(shí)現(xiàn)第一次啟動(dòng)時(shí)自動(dòng)初始化數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

正宁县| 山阳县| 凌海市| 济南市| 南投市| 佳木斯市| 集安市| 澄迈县| 阳西县| 莆田市| 平安县| 郑州市| 五家渠市| 浦城县| 当雄县| 夏津县| 武邑县| 永清县| 临汾市| 神池县| 高平市| 浮山县| 德格县| 卓尼县| 绥宁县| 中卫市| 和平县| 霍林郭勒市| 赤峰市| 广州市| 蒙城县| 三原县| 独山县| 徐州市| 德昌县| 文安县| 胶南市| 潞西市| 新野县| 芒康县| 扎囊县|