2012-08-07 73 views
1

我有一個版本控制系統(git)中的小型Java項目,由4位開發人員共享。我正在考慮在這個項目中使用Maven作爲構建工具。Maven:知識庫

依賴管理是一個想要的功能,但我不想: - 依賴的自動更新(因爲這可能會破壞我的軟件)。 - 依賴Internet連接從遠程存儲庫下載依賴關係,並能夠編譯我的代碼。

因此,問題:

1)我可以配置Maven使用在VCS共享本地依賴性(如罐)?我沒有幾個項目之間共享的依賴項,我的依賴項很少會更新,所以使用Maven倉庫對我來說是不值得的。

2)如果我選擇使用Maven倉庫,我可以在我的本地網絡中配置一個倉庫嗎?我不想要遠程存儲庫鏡像或遠程存儲庫的入口。我想要一個獨立的存儲庫與我的依賴關係,位於本地網絡中的服務器上。

3)如果我在遠程存儲庫中使用默認的Maven方法,可以在第一次下載所有依賴關係後關閉依賴關係更新嗎?

在此先感謝您的幫助。

+0

依賴關係將不會自動更新,它們將保持與'pom.xml'文件中指定的''相同。例外是_-SNAPSHOT_版本,不應在生產中使用。 – matsev 2012-08-07 18:10:43

回答

3

答1:

是的,你可以,谷歌的系統範圍的依賴性,但:這不是一個好主意,這樣做,因爲您將刪除的關鍵特徵之一。

<dependency> 
    <groupId>com.mycompany</groupId> 
    <artifactId>app-lib</artifactId> 
    <version>3.1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/libs/app-lib-3.1.0.jar</systemPath> 
</dependency> 

答2:

是,您可以: - Artifactory - Nexus

答3:

當然可以。對於這種情況,您可以使用---離線標誌更好的方法:釋放所有依賴項。

一些想法: 你想使用依賴管理系統,而不使用依賴管理,聽起來很奇怪。

如果您擔心,您的庫中的更改可能會破壞您的代碼,請不要使用SNAPSHOT。 嘗試一種版本方案。我們使用

X.Y.Z

  • 如果在放開Z的變化,罐子應該是兼容的。
  • 如果y發生變化,您將不得不更改youz代碼
  • 如果x更改...以及更換需要更新。
1

您對依賴互聯網連接的擔憂是有道理的,但我認爲這並不像您想象的那麼糟糕。

從Central Repository下載依賴項後,它將被保存到硬盤驅動器(位於「〜/ .m2/repository」)的緩存中。從此,使用緩存中的副本,並且不再需要Internet連接來編譯應用程序。

當你在Maven中編譯你的第一個項目時,它將不得不下載一個垃圾負載的東西。但在此之後,所有後續的編譯將更快,他們不需要下載任何內容。

此外,Maven的版本控制方案使得一旦將它們部署到中央存儲庫後,所有「發佈」版本的依賴項都不能更改。例如,如果我使用「commons-io」的版本「2.2」,我知道該版本的庫將始終保持不變。如果不發佈新版本,則無法進行更改。

「快照」版本,但是,可以更改。如果庫的版本是快照,則它將以「-SNAPSHOT」結尾(例如,「1.2-SNAPSHOT」表示庫最終將以「1.2」形式發佈)。我不認爲中央存儲庫允許創建快照。無論如何,你不應該在生產代碼中使用它們。

+0

您的本地回購可以位於您硬盤上的任何位置。這是在你的maven配置文件中設置的。另外+1提及快照。 – 2012-08-07 18:11:29

0

我認爲互聯網連接僅在第一次編譯時需要,但是每當我更改代碼時我都會收到幾個下載消息。消息數這樣的:

下載:http://repo.maven.apache.org/maven2/org/eclipse/core/resources/maven-metadata.xml

下載:http://repository.springsource.com/maven/bundles/external/org/eclipse/core/resources/maven-metadata.xml

下載:http://repository.springsource.com/maven/bundles/release/org/eclipse/core/resources/maven-metadata.xml

下載:https://oss.sonatype.org/content/repositories/snapshots/org/eclipse/core/resources/maven-metadata.xml

這是爲什麼? Maven是否在這些版本庫中尋找更新,或者是否有其他原因需要經常下載這些元數據xmls?