簡體   English   中英

安裝具有第三方非mvn jar依賴項的第三方非mvn jar

[英]Install a 3rd-party non-mvn jar that has 3rd-party non-mvn jar dependencies

我有一個maven repo中不存在的第三方jar,我們稱之為“a.jar”,這也取決於至少20多個第三方罐子,其中大部分都不在maven中,讓我們稱他們為“b.jar,c.jar,d.jar,......”。 如何正確地將它安裝到具有所有依賴關系的mvn repo中?

我認為標准的“ mvn install:install-file ”在這種情況下不會起作用,因為我會將“a.jar”安裝到repo中,但它的依賴關系都沒有,對吧? 另外,當它在其他項目中使用時,mvn甚至會知道“a.jar”具有依賴性。

我見過另一個與我正在嘗試的類似的stackoverflow問題,

maven使用簡單的命令行安裝和部署第三方依賴項

但我是一個mvn noob並且它沒有足夠的解釋所以我大部分都失去了他正在做的事情和原因:(。我的意思是我不明白為什么我需要包含pom.xml父文件和子文件將這些依賴項安裝到mvn repo中...我現在擁有的是一個包含大量jar的lib文件夾!

盡管Maven讓我們的生活變得更輕松,但您已經設法找到一個實際上讓我們的生活變得更加困難的領域,至少在最初階段。 在可以使用它們的存儲庫中丟失庫是一種正確的痛苦,特別是對於新手。 一旦圖書館在回購中,Maven的依賴機制就很棒,生活也值得生存。 從長遠來看,它可以為您節省大量時間和頭痛。 但首先你必須受苦......

要做的是將你的庫放在一個倉庫中,以便maven可以使用它。 首先,我會非常努力地看看中央回購,並確保你所追求的圖書館已經存在。 您可以在中央倉庫中搜索您的庫。

如果必須將其部署到倉庫,首先應該知道的是大多數人在公司或專用網絡中托管自己的存儲庫。 ArtifactoryNexus都是maven存儲庫管理器,你應該考慮運行其中一個,這樣你就可以從maven構建和第三方庫中部署工件了。 我使用Artifactory非常喜歡它,但我聽說Nexus非常好,並且是由Sonatype人寫的。 這些repo充當中央倉庫的代理,您可以將maven構建專門指向它們,並從中央倉庫解析並下載工件並緩存它們。 中央回購公司喜歡這個,因為它們被網絡流量淹沒了。

由於缺少網絡上的存儲庫,您始終可以將工件部署/安裝到您的盒子上的本地存儲庫(位於userhome.m2 \\ repository中)。 當您在本地盒子上運行maven構建並告訴maven“安裝”時,這就是放置構建工件的地方。 此外,在構建期間從中央存儲庫下載的任何依賴項maven下載並在以后的構建期間重用,以減少網絡流量。 缺點是,如果你與其他開發人員合作,他們不能只檢查並構建你的代碼......他們必須經歷令人沮喪且容易出錯的步驟,將工件部署到他們的本地倉庫。 因此,推薦的方法是為所有開發人員都可以使用的所有工件創建一個公司maven repo。

除此之外,您可以遵循兩個一般策略來解決您的問題。 您可以使用默認poms部署第三方庫及其所有依賴項,然后在項目pom文件中將它們全部聲明為依賴項。 或者,您可以依賴maven的傳遞依賴機制。 您將首先使用pom文件部署第三方庫,該文件聲明其所有依賴項...然后將所有依賴項部署為使用默認poms。 最后,在你的項目pom中你可以聲明對第三方庫的依賴,並通過maven的傳遞依賴機制maven將獲取所有其他庫。

我建議您花一些時間閱讀在線Sontatype書籍,包括“Maven:完整參考”“使用Nexus進行存儲庫管理”

當您執行mvn install:install-file時,您可以為要安裝的內容指定一個pom文件。 把你的依賴放在那個pom中。

編輯:哦,然后為依賴項做這件事。 首先可能更容易為依賴項執行此操作。

暫無
暫無

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

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