2012-01-11 123 views
2

我是一名Maven新手,花了數小時學習基礎知識,但是我仍然沒有找到任何好的文檔,說明如何在本地安裝具有所有(傳遞)依賴項的第三方JAR。使用傳遞性依賴/依賴樹安裝第三方庫?

我知道mvn install:install-file確實安裝了一個JAR。但如何在repsoitory這樣的本地安裝:

+ Parent.jar 
    + ChildA.jar (Requuired by Parent) 
    + ChildB.jar (Required by Child A) 

爲了使它更complcated與現實生活:Parent.jar和ChildA.jar是在公共Maven倉庫,但兒童不能使用傳統/商用罐B是在公共存儲庫中找到的jar(例如像日誌記錄罐)。我不僅希望在本地安裝它們(具有系統依賴性),而且還要「正確」地將它們與maven集成,以便我可以將此依賴關係樹重新分發給其他開發人員或公衆(我認爲這是對於maven來說很重要),以便maven知道並理解依賴樹(以避免版本衝突,不必要的下載等等)。

任何鏈接或信息如何描述這種可能性會很好。

非常感謝! 標記

回答

1

如果它是一個商業jar,如果您將它部署到中央存儲庫,則可能違反許可證,唯一的辦法是部署到公司的repo(如果您有一個設置)。

爲了做到這一點,您需要爲childA定義一個pom,將childB指定爲依賴項,然後運行install:install-file目標。然後對父進行相同操作,並使用childA作爲依賴關係。

一旦你這樣做,你就可以把這些項目,通過它的GUI很容易地上傳到公司的中央倉庫(Nexus和Artifactory都通過GUI支持)。

+0

謝謝,那真的是我正在尋找的東西:我意識到我必須自己編寫所有「非Maven提供的」庫並將它們與這些POM一起安裝。 – Markus 2012-01-15 19:27:49

0

我想,你可能會尋找this

Maven會將所有需要的依賴加載到本地回購本身中,如果它們在線回購中是可用的。如果你想安裝你自己的項目,用配置文件設置反應堆以獲得所有需要的模塊,並在其上運行mvn install -P yourprofile。更多關於配置文件可以發現here。 Afaik沒有辦法,可以將包括它們的依賴項目在內的項目安裝到當地的倉庫中。

+0

那有什麼用處?帶有系統依賴的 – AHungerArtist 2012-01-11 13:07:04

+0

你可以使用不在回購站的罐子,而不僅僅是jdk的東西。 – Corubba 2012-01-11 13:08:48

-1

,如果你需要將它安裝到本地的倉庫,只需要使用

mvn dependency:go-offline 
+0

這不會在任何存儲庫中安裝依賴項,它會解析依賴項,以便脫機工作。 – 2012-01-11 14:49:53

+0

是的,你可以離線工作,因爲依賴項被下載並放到本地存儲庫中。也許你對我的使用安裝感到困惑?這並不意味着maven的安裝階段。我希望你知道本地和遠程存儲庫的區別:http://maven.apache.org/guides/introduction/introduction-to-repositories.html – 2012-01-11 16:04:35

+0

我恭敬地提出混淆是你的最終目的。問題是如何在本地回購和中央回購中安裝*目前*任何*回購的工件。依賴插件對用戶不做任何事情,因爲工件在首先下載的任何存儲庫中都不可用。 – 2012-01-11 16:09:39

1

既然你真的想真正發佈,讓其他人在公衆可以與定義的依賴使用它,你很可能把第三方罐子變成公開的回購。

Here are instructions關於如何做到這一點。

請注意,雖然代碼許可可能不允許您將其發佈到中央回購站。在部署之前檢查它。

+0

您需要確保您可以將許可證中提供的jar上傳到中央庫。否則,您只能部署到貴公司的中央倉庫。 – 2012-01-11 14:55:54

+0

這是正確的,Sonatype會在發佈之前驗證是否存在此類限制。這是記錄在我發佈的鏈接中,但我將編輯並將該註釋添加到我的答案中。 – Robin 2012-01-11 15:16:14