maven 多倉庫和鏡像設置

爲何使用鏡像

當maven在本地找不到包的時候,就嘗試從中央倉庫(https://repo1.maven.org/maven2/)獲取,有的時候咱們訪問外網太慢了,咱們就從鏡像倉庫(別的倉庫或者本身的私有倉庫)獲取。html

設置鏡像

<mirror>
      <id>tz-mirror</id>
      <mirrorOf>external:*,!mmkj</mirrorOf>
      <name>tz test nexus repository</name>
      <url>http://xxxxx:30003/repository/maven-proxy</url>
</mirror>
  • id 惟一標識
  • mirrorOf 指定鏡像的規則。就是什麼狀況會從鏡像倉庫拉取,而不是從本來的倉庫拉取
    可選項參考連接:java

    1. * 匹配全部
    2. external:* 除了本地緩存以後的全部倉庫
    3. repo,repo1 repo 或者 repo1。 這裏repo指的是倉庫的id,下文會提到
    4. *,!repo1 除了repo1的全部倉庫
  • name 名稱描述
  • url 地址

上述的例子
除了mmkj倉庫以外,其餘的全從本身的私有倉庫獲取(倉庫我作了代理,會自動從中央倉庫https://repo1.maven.org/maven2/獲取).apache

多倉庫配置

參考連接
第三方包,本身公司的包等除了手動install:install-file導入以外,最好的辦法就是搭建本身公司的私有倉庫,這裏推薦使用nexus, 這樣除了中央倉庫以外就須要設置本身的倉庫了緩存

設置多倉庫有2個方法:maven

  • pom設置(java的pom文件)
<project>
...
  <repositories>
    <repository>
      <id>my-repo1</id>
      <name>your custom repo</name>
      <url>http://jarsm2.dyndns.dk</url>
    </repository>
    <repository>
      <id>my-repo2</id>
      <name>your custom repo</name>
      <url>http://jarsm2.dyndns.dk</url>
    </repository>
  </repositories>
...
</project>
這裏的id就是鏡像mirrorOf使用的
  • setting設置(${user.home}/.m2/settings.xml)
<settings>
 ...
 <profiles>
   ...
   <profile>
     <id>myprofile</id>
     <repositories>
       <repository>
         <id>my-repo2</id>
         <name>your custom repo</name>
         <url>http://jarsm2.dyndns.dk</url>
       </repository>
       ...
     </repositories>
   </profile>
   ...
 </profiles>
 
 <activeProfiles>
   <activeProfile>myprofile</activeProfile>
 </activeProfiles>
 ...
</settings>
激活配置文件除了放在 activeProfiles中以外,也能夠使用mvn的參數
mvn -Pmyprofile ...
相關文章
相關標籤/搜索