[英]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.