簡體   English   中英

Maven:存儲庫

[英]Maven: repositories

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

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

因此,問題:

1)我可以配置Maven使用本地依賴項(例如在VCS中共享的jar)嗎? 我沒有幾個項目共享的幾個依賴項,我的依賴項很少會更新,所以使用Maven存儲庫對我來說不值得。

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

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

在此先感謝您的幫助。

回答1:

是的,你可以google系統范圍依賴,但是:這樣做不是一個好主意,因為你將刪除其中一個關鍵功能。

<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:

是的你可以。 對於這種情況,您可以使用--- offline標志更好的方法:釋放所有依賴項。

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

如果你擔心,你的庫中的變化可能會破壞你的代碼,只是不要使用SNAPSHOT。 嘗試一種版本方案。 我們用

XYZ

  • 如果z在版本中發生變化,那么jar應該是兼容的。
  • 如果y改變,你將不得不改變你的代碼
  • 如果x改變了......那么需要更新。

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

從中央存儲庫下載依賴項后,它將保存到硬盤驅動器上的緩存中(位於“〜/ .m2 / repository”)。 從那時起,使用緩存中的副本,並且不再需要Internet連接來編譯應用程序。

當你在Maven中編譯你的第一個項目時,它將不得不下載一堆垃圾。 但在那之后,所有后續編輯將會更快,他們不需要下載任何東西。

此外,Maven的版本控制方案使得所有“發布”版本的依賴項在部署到中央存儲庫后無法更改 例如,如果我使用“commons-io”的版本“2.2”,我知道該版本的庫將始終保持不變。 如果不發布新版本,則無法進行更改。

但是,“快照”版本可能會發生變化。 如果庫的版本是快照,那么它將以“-SNAPSHOT”結尾(例如,“1.2-SNAPSHOT”表示庫最終將被釋放為“1.2”)。 我不認為中央存儲庫允許快照構建。 不管怎樣,你不應該在生產代碼中使用它們。

我認為只有在第一次編譯時才需要Internet連接,但每當我更改代碼時,我都會收到幾個下載消息。 像這樣的消息:

下載: 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?

暫無
暫無

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

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