maven 倉庫配置


倉庫的分類:本地倉庫和遠程倉庫;倉庫中保存的內容有:maven自身所需要的插件、第三方(第一方:jdk;第二方:開發者;第三方:其他人)框架或工具的jar包,我們自己開發的maven工程;

本地倉庫

默認是在~/.m2/repository/,~代表的是用戶目錄;

配置比較簡單,只要在xml中配置如下:

 <!-- 本地倉庫的位置 -->
    <localRepository>E:/Data/Maven/repository</localRepository>

遠程倉庫

分為中央倉庫、中央倉庫鏡像和私服。默認是maven的中央倉庫:https://mvnrepository.com/

遠程倉庫配置:

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

 id:該遠程倉庫的唯一標識;

name:遠程倉庫的名稱;

使該倉庫生效:

<activeProfile>central</activeProfile>   

 

配置鏡像:

把對遠程倉庫的請求轉換到對應的鏡像地址的請求。每個遠程倉庫都會有一個id,這樣我們就可以創建自己的mirror來關聯到該倉庫,那么以后需要從遠程倉庫下載工件的時候Maven就可以從我們定義好的mirror站點來下載,這可以很好的緩解我們遠程倉庫的壓力。在我們定義的mirror中每個遠程倉庫都只能有一個mirror與它關聯,也就是說你不能同時配置多個mirror的mirrorOf指向同一個repositoryId;

1 <mirrors>
2     <mirror>
3       <id>internal-repository</id>
4       <name>Maven Repository Manager running on repo.mycompany.com</name>
5       <url>http://repo.mycompany.com/proxy</url>
6       <mirrorOf>*</mirrorOf>
7     </mirror>
8   </mirrors>

id: 鏡像的唯一標識

mirrorOf: 指定鏡像規則,什么情況下從鏡像倉庫拉取,官方文檔

  • *: 匹配所有,所有內容都從鏡像拉取
  • external:*: 除了本地緩存的所有從鏡像倉庫拉取
  • repo,repo1: repo 或者 repo1 ,這里的 repo 指的倉庫 ID
  • *,!repo1: 除了 repo1 的所有倉庫

name: 名稱描述

url: 地址

阿里雲鏡像配置:

1 <mirror>
2       <id>alimaven</id>
3       <name>aliyun maven</name>
4       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
5       <mirrorOf>central</mirrorOf>       
6     </mirror>

其他標簽說明:

server

如果倉庫地址是個私服;需要配置 server

配置分發構建到私服的驗證,在setting.xml文件的<servers></servers>標簽內插入如下代碼段

<server>
            <id>server001</id>
            <!--鑒權用戶名。鑒權用戶名和鑒權密碼表示服務器認證所需要的登錄名和密碼。-->
            <username>my_login</username>
            <!--鑒權密碼。鑒權用戶名和鑒權密碼表示服務器認證所需要的登錄名和密碼。密碼加密功能已被添加到2.1.0+。詳情請訪問密碼加密頁面-->
            <password>my_password</password>
        </server>

pluginGroups:

  • 元素里包含了一個pluginGroup列表。默認maven中有org.apache.maven.pluginsorg.codehaus.mojo兩個pluginGroup。表示當通過plugin的前綴來解析plugin的時候到哪里尋找。pluginGroup元素指定的是plugin的groupId
  • 如果pom,xml中的plugin沒有設置指定groupId,熟悉maven的都知道我們引入以來至少需要groupId和artifactId的。但是下面的插件中沒有。這個時候maven就會獲取pluginGroupspluginGroup列表和配置中artifactId進行一一匹配。匹配到下載。
  • jetty 插件的配置 :為了更明確的指向這個groupId是我們需要的插件,唯一的辦法就是在settings.xml也做如下設置:
<pluginGroups>                                 
    <pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>

 完整的setting配置:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
<localRepository>E:/Data/Maven/repository</localRepository>
<pluginGroups>                                 
    <pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>

 <mirrors>
    <mirror>
      <id>nexus</id>  
      <mirrorOf>*</mirrorOf>  
      <url>http://nexus.d.xxx.net/nexus/content/groups/public</url> <!--鏡像地址-->
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>development</id>
      <repositories> <!-- 構件的倉庫-->
        <repository>
          <id>central</id>
          <url>http://nexus</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories> <!--插件的倉庫-->
        <pluginRepository>
          <id>central</id>
          <url>http://nexus</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>development</activeProfile> <!-- 對於所有的pom,上邊定義的id=development的profile都是活躍狀態的-->
  </activeProfiles>
 
  <servers>
    <server>
      <id>archiva.internal</id>  <!--release版本的用戶名和密碼-->
      <username>yangwenqiang</username>
      <password>pwdpwd</password>
    </server>
    <server>
      <id>archiva.snapshots</id> <!-- snapshot版本的用戶名和密碼-->
      <username>yangwenqiang</username>
      <password>pwdpwd</password>
    </server>
  </servers>

</settings>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM