[英]Maven install transitive dependencies
我有一個項目,我需要在Maven上安裝一個庫,以便我可以在所述項目上使用它。 我遇到的問題是所說的庫,比如說libA,它本身就有一個依賴,libB,它也是第三方的。
我已使用此代碼將兩者添加到本地存儲庫:
mvn install:install-file -Dfile=VerBDConverter.jar -DgroupId=verbdconverter
-DartifactId=verbdconverter -Dversion=1.00 -Dpackaging=jar -DgeneratePom=true
對於lib 2也是如此。問題是,當我轉到我的項目的pom並為libA添加<dependency>時,Maven沒有選擇libB。
問題 :畢竟Maven應該得到libA的依賴,但事實並非如此。
畢竟,應該是Maven應該獲得libA的依賴,但事實並非如此。
不,在你的情況下,Maven不會明白libA需要哪些傳遞依賴,因為libA是手動安裝的,並且在任何地方都沒有libB的痕跡。
通常,傳遞依賴項是.pom
文件的dependencies
部分中定義的dependencies
,可作為已部署應用程序的一部分使用。 .pom
文件本質上是原始pom.xml
文件的副本,重命名以反映庫名稱(即artifactId-version.jar
,然后是artifactId-version.pom
)。
在解析依賴關系時,maven還會檢查其.pom
文件,並因此獲取有關其依賴關系的信息(這將成為傳遞依賴關系)並為其構建(和獲取)所需的依賴關系圖(即,重新迭代相同的進程每一個聲明的依賴)。
通過從指定的遠程存儲庫讀取依賴項的項目文件 ,可以簡化此功能。 通常,這些項目的所有依賴項都在項目中使用,項目從其父項或其依賴項繼承的任何依賴項等都是如此。
注意:大膽是我的。 項目文件通常是pom.xml
文件,一旦相關工件上傳到Maven存儲庫(或安裝到本地Maven緩存中),就會重命名為*.pom
文件。
從你的問題,你用-DgeneratePom=true
,因此你沒有通過力霸” pom.xml
文件,但一個新的自動生成
如果沒有通過參數
pomFile
提供,pomFile
工件生成最小POM。 如果本地存儲庫中還沒有現有POM,則默認為true
。
自動生成的.pom
文件幾乎為空(Maven坐標(groupId,artifactId,版本)但其中沒有dependencies
部分),因此Maven會將libA視為沒有傳遞依賴的庫:它找不到任何內容,也無法猜測。
因此,您有四種解決方案(按推薦順序):
pomFile
選項重新安裝libA,或 dependencies
部分添加到生成的.pom
文件中,並將libB添加到其中,或者 pom.xml
文件中明確聲明libB 有關SO的進一步閱讀:
這可能對您有所幫助:
call mvn install:install-file -Dfile=sqljdbc.jar -DgroupId=com.microsoft.jdbc -DartifactId=sqljdbc1 -Dversion=1.0 -Dpackaging=jar
call mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.jdbc -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
call mvn install:install-file -Dfile=sqljdbc41.jar -DgroupId=com.microsoft.jdbc -DartifactId=sqljdbc41 -Dversion=4.1 -Dpackaging=jar
資料來源: https : //github.com/Programmercito/osbo-framework/blob/master/libs/instala.bat
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.