簡體   English   中英

在Maven 2中,是否可以為所有內容指定鏡像,但允許故障轉移到直接存儲庫?

[英]In Maven 2, is it possible to specify a mirror for everything, but allow for failover to direct repositories?

我理解設置Maven鏡像的部分吸引力,如下所示:

<mirror>
  <id>nexus</id>
  <name>Maven Repository</name>
  <mirrorOf>*</mirrorOf>
  <url>http://server:8081/nexus/content/groups/public</url>
</mirror>

......是文件說明:

您可以通過使Maven鏡像所有存儲庫請求來強制Maven使用單個存儲庫。

但是,這是否也表明通過設置*鏡像必須強制每個工作站通過鏡像?

我問,因為我希望每個工作站都能進行故障轉移,並在Nexus無法解析依賴關系或插件的情況下直接連接到它知道的任何公共存儲庫。 (在一個完美的世界中,每個開發人員都有必要的訪問權限,可以根據需要添加其他代理存儲庫。但是,有時訪問不可用;有時Nexus服務器會關閉;有時它會遇到Java堆錯誤。)

這是“鏡像,但可以直接連接到公共存儲庫”,可以在Maven 2中進行故障轉移配置嗎? 它會在Maven 3中嗎?

不,沒有故障轉移模式。 您可以使用<mirrorOf>*,!repository</mirrorOf>將一些存儲庫排除在鏡像<mirrorOf>*,!repository</mirrorOf> ,或者您可以使用兩個不同行為的settings.xml文件,並根據需要切換使用--settings

這在Maven 2中是不可能的。未來Maven 3中可能是可能的。我們還考慮在Nexus中添加這種可能性以動態代理工件。 最重要的是,大多數組織都希望控制開發人員使用的代理存儲庫,因此這個功能在repo管理器中非常流行。

出於同樣的原因,不希望讓開發者機器直接回到直接訪問回購管理器到回購。 然后,您最終會失去所獲得的代理緩存,共享,過濾等所有好處。

一個答案(在我的問題中暗示)是設計不可能的。 Jason Van Zyl在這張票的末尾發表的評論表明了這一點

沒有故意檢查真實鏡像。 如果我們開始這樣做,最近存儲庫管理器工作的方式會嚴重破壞。

這種配置也是可能的。 它的效果很好,但是有一個艱難的情況,如果項目的層次結構很大並且並非所有的孩子都擁有相同的父母,那么你必須將這一部分復制到他們的poms。 這意味着除了在項目中宣布這個虛假的中心,這是默認的回購,你的請求將轉到正確的maven中心或項目的pom中的其他聲明的存儲庫。 捕獲:您使用插件X - 並且可能實際上並未意識到它 - 並且插件X依賴於工件Y,在它自己的pom中已經聲明了repo .... >>>無法控制代理所有依賴關系的請求關系

另一種方法是為項目提供額外的settings.xml,並“提供”$ mvn -s settings.xml

第三種方法是使用全局settings.xml,如下所示,並且僅在需要時激活-P nexus,因為沒有虛假的中央存儲庫,它令人驚訝地工作。

<settings>
    <mirrors>
        <mirror>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://localhost:8082/nexus-webapp-1.6.0/content/groups/public</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>nexus</id>

                <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>  
        </profile>
    </profiles>
    <activeProfiles>

    </activeProfiles>
</settings>

在另一個選項卡/窗口中打開圖像。 在此輸入圖像描述

暫無
暫無

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

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