1. 程式人生 > >配置maven映象

配置maven映象

Using Mirrors for Repositories

Repositories是你指定的用於下載某些artifacts的位置,如dependencies和maven-plugins,Repositories可以在專案中宣告,這意味著如果你有自己的訂製Repositories,那麼將能夠很容易的共享你的專案,然而,你也可能想要不修改專案檔案的情況下使用一個特殊倉庫的映象。

使用映象的理由:

  • 網際網路上存在同步的映象,並且更近,更快。
  • 你想要用你更能控制的你自己的內部repository替換一個特別的repository
  • 你想要執行一個倉庫管理器來提供一個映象的本地快取,並且需要使用它的URL替代。

要配置一個給定repository的映象,你需要在你的settings配置檔案(settings.xml)中配置它自己的id和url,並且指定mirrorOf為所要配置Repository的ID,例如主要的美國中心Repository包含的ID預設為central,所以如果要使用歐州中心Repository,你需要配置如下:

<settings>
    ...
    <mirrrors>
        <mirror>
            <id>UK</id>
            <name>UK central</name>
            <url>http://uk.maven.org/maven2</url>
            <mirrorOf>cenral</mirrorOf>
        </mirror>
    </mirrors>
    ...
</settings>

一個給定的Repository只能擁有一個映象,換句話說,你不對映一個Repository到一組使用相同值的映象。雖然maven不限制,但是隻會選擇第一個匹配到的映象。

使用單一Repository

你可以強制Maven使用單一的Repository,並通過它來反射所有的倉庫請求。這要的Repository必須包含所有的需要的artifacts或者能夠代理對其他Repository的請求。此種配置在使用一個公司內部的使用Maven倉庫管理工具代理其他請求的倉庫時是非常有用的。

要實現這樣的配置,需要將mirrorOf值設定為*。如下:

<settings>
    ...
    <mirrors>
        <mirror>
            <id>internal-repository</id>
            <name>Maven Repository Manager running on repo.mycompany.com</name>
            <url>http://repo.mycompany.com/proxy<url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>
    ...
</settings>

Advanced Mirror Specification

一個映象(mirror)可以操作多個Repository,語法如下:

  • *表示匹配所有倉庫ID
  • external:*表示匹配除了本地和基於檔案的Repository
  • 指定多個RepositoryID時可以用逗號分隔,如repo,repo1。
  • *,!repo1表示匹配除了repo1外的所有倉庫ID。

如:

<settings>
    ...
    <mirrors>
        <mirror>
          <id>internal-repository</id>
          <name>Maven Repository Manager running on repo.mycompany.com</name>
          <url>http://repo.mycompany.com/proxy</url>
          <mirrorOf>external:*,!foo</mirrorOf>
        </mirror>
        <mirror>
          <id>foo-repository</id>
          <name>Foo</name>
          <url>http://repo.mycompany.com/foo</url>
          <mirrorOf>foo</mirrorOf>
        </mirror>
      </mirrors>
      ...
    </settings>