簡體   English   中英

如何在Maven中添加jar依賴項?

[英]how to add jar dependency in maven?

當我跑步

mvn compile

我得到的package com.ibm.icu.util does not exist 因此,我下載了ICU4J jar,並將其安裝到本地存儲庫中。 我確認它在.m2/repository/com/ibm/icu/icu4j/3.4.4/icu4j-3.4.4.jar 該jar文件中缺少類文件com/ibm/icu/util/Calendar.class 然后,將以下內容添加到pom.xml的依賴項部分:

<dependency>
   <groupId>com.ibm.icu</groupId>
   <artifactId>icu4j</artifactId>
   <version>3.4.4</version>
</dependency>

但是當我再次運行mvn compile時,我得到了同樣的錯誤。 我究竟做錯了什么?

您應該避免手動添加依賴項。

如果您不知道所需依賴項的groupId和artifactId,請在http://mvnrepository.com/上進行搜索。 通常,groupId與jar文件中的軟件包名稱匹配。

對於您的情況,依賴項已經存在: http : //mvnrepository.com/search?q=com.ibm.icu因此,請轉到http://mvnrepository.com/artifact/com.ibm.icu/icu4j並獲取您需要的依賴項版本,例如55.1: http : //mvnrepository.com/artifact/com.ibm.icu/icu4j/55.1抓住maven依賴項xml並將其放入您的pom.xml文件:

<dependency>
    <groupId>com.ibm.icu</groupId>
    <artifactId>icu4j</artifactId>
    <version>55.1</version>
</dependency>

如果找不到您的依賴項,請嘗試在Google中找到它。 有時,在某些公司公共存儲庫中(而不是在central存儲庫中)可以找到這種依賴關系。 在這種情況下,您需要將第三方存儲庫添加到pom.xml的“ 存儲庫”部分


如果無法在公共存儲庫中找到依賴項,則可以使用以下三種選擇:

A.將jar安裝到內部存儲庫服務器(例如nexus)

B.將JAR文件放入您的項目源中並聲明項目maven存儲庫

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://${basedir}/my-repo</url>
    </repository>
</repositories>

重要說明:您應該將Maven存儲庫布局保留在本地存儲庫中。

C. [錯誤做法]使用maven install插件將自定義jar安裝到計算機上的本地存儲庫。 但這很不好,不推薦。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=path-to-your-artifact-jar -DpomFile=path-to-pom

D. [錯誤的做法]使用系統依賴項和JAR文件的絕對路徑,盡管這是一個不好的做法,應避免使用。

<dependency>
  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>X.Y.Z</version>
  <scope>system</scope>
  <systemPath>${user.home}/jars/my.jar</systemPath>
</dependency>

您不應該手動將內容安裝到Maven存儲庫目錄中。 該目錄由maven自己維護。

依賴項的工作方式是,當您運行mvn compile或其他目標時,它將連接到maven中央存儲庫並下載所需的依賴項及其依賴項。

如果您手動安裝jar文件,則它可能沒有依賴關系。 該ICU工件可能還取決於其他因素。 Maven將自動解決這些依賴關系。

我建議使用mvn clean install這將清理目標目錄並重建所有內容。

如果下載失敗,則可能需要更改Maven配置。 例如,如果您位於代理服務器后面,則需要使用代理憑據配置Maven。

另外,如果您手動將任何內容復制到.m2 / repository /目錄,則應將其刪除,然后讓maven正確地將其放置在該目錄中。

Maven的優點在於您無需擔心下載jars之類的事情。 它只是為您處理。 讓它完成工作。

如果您有內部偽像,例如JFrog,則應檢查該罐子是否在其中。 不要手動下載到.m2,因為它至少很奇怪。 您最多可以手動將罐子上傳到該工件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM