【Maven實戰】之依賴,倉庫,鏡像

前言

  • 本文僅僅是爲了記錄學習【maven實戰】知識點以及相關拓展,因此有些知識點也僅僅是一筆帶過,因此須要瞭解的朋友能夠去閱讀【maven實戰】這本書。

依賴

依賴配置

  • groupId,artifactId,version:依賴的基本座標
  • type:依賴類型,默認值Jar
  • optional;標記依賴是否可選
  • exclusions:用來排除傳遞性依賴
  • scope:依賴範圍
  • 代碼以下:
<project>
    ...
    <dependencies>
        <dependcy>
            <groupId>...</groupId>
            <artifactId>...</artifactId>
            <version>...</version>
            <type>...</type>
            <scope>...</scope>
            <optional>...</optional>
            <exclusions>
                <exclusion>...</exclusion>
                ...
            </exclusions>
        </dependcy>
    </dependencies>
    ...
</project>

依賴範圍【scope】

三種classpathspring

  • 編譯classpath
  • 測試classpath
  • 運行classpath

五種依賴範圍api

  • compile:編譯依賴範圍。默認依賴範圍。在三種classpath有效例如:【spring-core】
  • test:測試依賴範圍。只在test-classpath有效。例如【Junit】
  • provided:已提供有效範圍。在編譯,測試classpath有效。例如:【servlet-api】-運行時,容器已經提供。
  • runtime:運行時依賴範圍。測試,運行classpath有效。例如【JDBC驅動實現】
  • system:系統依賴範圍。在編譯,測試classpath有效。使用時,需經過systemPath元素顯試地指定依賴文件路徑,因爲不是maven倉庫解析,與本機綁定,可能形成構建的不可移植。
  • import:導入依賴範圍。不會對三種classpath產生實際的影響。

  • 查看已解析依賴
mvn dependency:list
  • 查看依賴樹
mvn dependency:tree
  • 解析依賴
mvn dependency:analyze

倉庫

  • 私倉網絡

  • 節省本身的外網帶寬運維

  • 加速maven構建maven

  • 部署第三方構建ide

  • 提升穩定性,加強控制學習

  • 下降中央倉庫的負荷測試

  • 發佈版本ui

  • 用來保存穩定的發行版本阿里雲

  • 快照版本

  • 快照倉庫用於保存開發過程當中的不穩定版本

鏡像

  • 若是倉庫X能夠提供倉庫Y的存儲的全部內容,那麼能夠認爲X是Y的一個鏡像。
<settings>
    ...
    <mirrors>
        <mirror>
            <id>internal-repository</id>
            <name>Internal Respository Manager</name>
            <url>http://192.168.1.1/maven2</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>
    ...
</settings>
該配置表示是全部的Maven倉庫的鏡像,任何對遠程倉庫的請求都會被轉發【http://192.168.1.1/maven2】。若是該鏡像倉庫須要認證,則配置一個id爲【internal-repository】的server便可,以下:
 <server>
      <id>deploymentRepo_releases</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
  • 1.<mirrorOf>*</mirrorOf> 匹配全部遠程倉庫。
  • 2.<mirrorOf>external:*</mirrorOf> 匹配全部遠程倉庫,使用localhost的除外,使用file://協議的除外。也就是說,匹配全部不在本機上的遠程倉庫。
  • 3.<mirrorOf>repo1,repo2</mirrorOf> 匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。
  • 4.<mirrorOf>*,!repo1</miiroOf> 匹配全部遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除

倉庫和鏡像的概念

  • repository是統一存放全部maven項目共享的構件的位置。
  • mirror則至關於一個代理,它會攔截去指定的遠程repository下載構件的請求,而後從本身這裏找出構件回送給客戶端。配置mirror的目的通常是出於網速考慮。mirror自己並非repository,它只是起到遠程repository的網絡加速器的做用

maven倉庫鏡像站

1.阿里雲的鏡像站
<mirror>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
2.maven官方運維的2號倉庫
<mirror>
    <id>repo2</id>
    <name>Mirror from Maven Repo2</name>
    <url>http://repo2.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
3-maven在UK架設的倉庫(有時候速度會比官方2號倉庫快)
<mirror>
    <id>ui</id>
    <name>Mirror from UK</name>
    <url>http://uk.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
4.JBoss的倉庫
<mirror>
    <id>jboss-public-repository-group</id>
    <mirrorOf>central</mirrorOf>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>

倉庫搜索服務

相關文章
相關標籤/搜索