2009-06-14 108 views
10

我有幾個關於maven最佳實踐和管理資源庫的問題。Maven最佳實踐

在我的環境中,我不想出去到中央maven存儲庫,而是將所有內容存儲在內部存儲庫中。我是否應該要求每個用戶都將信息放在settings.xml文件中,該文件禁止使用來自Maven存儲庫的快照或發行版,或者應該將其放在POM文件中?

此外,我想讓用戶都去同一個公司資源庫。這個存儲庫信息應該放在pom還是放在settings.xml中?如果它在pom中,maven將如何知道該存儲庫,因爲它需要知道存儲庫在哪裏獲取pom?

回答

6

在一個大型項目中,最好有多個存儲庫。

  1. 公司代理/緩存將本地存儲donwloaded jars,以便公司不會依賴於外部網站的可用性。它像普通的存儲庫那樣被訪問,但是它是公共存儲庫的入口。

  2. 已發佈庫的公司存儲庫是受限制的,它包含內部庫。這些框架是從項目存儲庫「升級」到公司存儲庫的,因爲它們可以用於所有項目。

  3. 項目存儲庫包含項目使用的工件。它可以包含子項目工件等。項目中的每個開發人員都應該能夠在此處發佈一些內容。

你把設置放在哪裏就是一個口味問題。我把這些東西放在settings.xml中。因爲如果內部存儲庫的地址發生變化,您將不得不修改項目。

+0

這是正確的 - 我建議尋找到關係(http://nexus.sonatype.org/)一個很好的解決了所有以上。 – 2009-06-15 10:10:10

+0

謝謝。我一直在使用Apache的Archiva,但我也會研究Nexus。我們現在正在進行一個非常小的項目,只是試圖在早期實現這些目標。 – 2009-06-16 18:25:20

10

第一步:在局域網內的服務器上安裝nexus。它非常出色 - 易於安裝(實際上,只需幾分鐘!)和堅實。我們有大約50名工程師和許多CI服務器,整天都在喋喋不休,並且已經穩定了好幾個月。假設您將其安裝在您的DNS中名爲「nexus.local」的服務器上。

第二步:settings.xml中從http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html複製,必要時修復主機,它提交到源代碼系統,並告訴你所有的開發人員將其複製到自己的〜/ .m2目錄/ settings.xml中。

第三步:正確設置項目的pom.xml。你會想,它定義了「distributionManagement」部分,看起來像這樣的「父POM」:

<distributionManagement> 
    <snapshotRepository> 
     <id>nexusSS</id> 
     <name>Nexus Snapshot Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
    <repository> 
     <id>nexusRelease</id> 
     <name>Nexus Release Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/releases</url> 
    </repository> 
    </distributionManagement> 

第四步:啓用「MVN部署」 - 去你的Nexus UI(類似http://nexus.local:8081/nexus ),點擊用戶,點擊「部署」,並給它一個密碼。然後編輯〜/ .m2目錄/ settings.xml中並補充一點:

<settings> 
    ... 
    <servers> 
    <server> 
     <id>nexus</id> 
     <username>deployment</username> 
     <password>PASSWORD</password> 
    </server> 
    </servers> 
</settings> 

檢查它的工作方式運行「命令mvn部署」,你應該已經安裝了你的項目的構件爲紐帶。

第五步:閱讀行家這個優秀的文檔:http://www.sonatype.com/products/maven/documentation/book-defguide