簡體   English   中英

遷移maven工件庫 - pom <url> 價值指向舊回購

[英]Migrating maven artifact repositories - pom <url> value points to old repo

題:

在導入maven工件存儲庫時(例如,從Artifactory或nexus的其他實例),許多工件(和大多數父)poms包含引用舊存儲庫的url標記。 這些url標記位於distributionManagementrepositories標記內。

我們是否需要經歷一個耗時的過程,為每個工件(以及父pom,如果適用)更新這些URL?

更多信息:

我們正在將一些工件存儲庫遷移到一個全新的環境。 我們有一個舊的Artifactory實例和一個來自單獨項目的Nexus實例,我們需要將它遷移到新環境中的單個Artifactory實例中。 我們目前無權訪問Nexus repo中的maven構建版本 - 我們只能訪問其文件系統來提取文件。

新Artifactory版本比舊版本更新,因此我們使用以下過程:

1. system export excluding binaries
2. copy filestore directory across to new Artifactory server
3. imported the system export

對於Nexus,我們將每個存儲庫的文件系統發送到新的Artifactory服務器,並使用“從路徑導入存儲庫”功能。

這些導入都已成功完成,我們可以在新的Artifactory實例中看到所有必需的工件。

我們已經成功執行了一個maven構建,該構建下拉了從舊Artifactory實例導入的依賴項,同樣的構建也成功地將它的工件發布回新的Artifactory實例。

鑒於我們迄今為止的成功測試,我們不確定是否真的需要更新它們,或者它們是否會因某些原因(例如當我們停用舊的Artifactory實例時)而成為問題

你很幸運在新環境中使用Artifactory :)

Artifactory將自動從您的pom文件中刪除任何<repositories>引用 ,將解析規則留給您的settings.xml 您需要做的就是從新Artifactory生成一個新的settings.xml文件 ,所有解決方案都將從中生成。

為了使其工作,請將舊Artifactory和Nexus聲明為新Artifactory實例的遠程存儲庫(不要使用導出/導入)。 一旦新Artifactory從舊Artifactory或Nexus獲取工件,它將刪除存儲庫聲明並將新的,干凈的pom存儲在緩存中。 一段時間后,當您確定所有內容都已緩存時,您可以停用舊服務器並將這些存儲庫聲明為脫機(可選擇將工件移動到本地存儲庫)。

存儲庫和distribitionManagement都不會影響您對組件的使用,因此無需在導入時執行任何操作。

發布組件的distributionManagement詳細信息。 由於組件已經發布,因此在您的repo服務器中,內容無關緊要。

將存儲庫作為pom文件中的元素是一種非常糟糕的做法,應該避免使用。 但是,如果您使用repo管理器並使用settings.xml中的mirrorOf設置進行相應設置,則不會考慮任何存儲庫,而是會按照settings.xml中的定義聯系您的repo管理器。

正如您所看到的,您可以只遷移組件並將它們留空。 修改已發布組件的poms可能是一種不好的做法,因為這意味着某些客戶端將擁有一個pom,而其他客戶端將擁有另一個用於SAME工件的pom。 這違反了不變的發布工件的想法,並可能導致問題。

在遷移方面,您可以輕松地遷移Nexus中的存儲庫並關閉舊服務器(至少可以遷移到Nexus)。 這樣您就不必並行運行多個並且可以快速停用,同時確保在新的repo管理器中擁有所有組件。

暫無
暫無

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

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