maven項目中setting.xml文件的格式內容

問題現象:

在寫對外接口的時候,出現一個異常現象。bean加載拋出空指針。開始的時候,
不知道異常從哪裏拋出。現有的代碼是沒有的。後來發現出現在第三方類中,決定使用debug調試。發現把依賴包的源碼下載下來以後,可以很方便的進入到依賴的jar包中進行debug,發現對源碼的debug是一個閱讀源碼很方便的方式。

【回答】是有關係的,如果setting.xml中不做任何的配置,默認會去指定的maven中央倉庫獲取jar包和源代碼。但是如果在setting.xml中配置了私服地址,會根據地址登錄私服獲取,由於公司的私服是內網,切換到外圍鏈接不上,肯定是下載不了源碼的。

這裏寫圖片描述

setting.xml 文件中內容:


  <localRepository>/path/to/local/repo</localRepository>
  <interactiveMode>true</interactiveMode>
  <pluginGroups>
  </pluginGroups>



  <proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>

  <servers>
    <server>
        <id>nexus-releases</id>
        <username>paic_deploy</username>
        <password>paic_deploy_123</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>paic_deploy</username>
        <password>paic_deploy_123</password>
    </server>
  </servers>


  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <name>Pingan Nexus Repository</name>
      <url>http://maven.paic.com.cn/repository/maven-public</url>
    </mirror>
  </mirrors>

  <profiles>
  </profiles>

<servers></servers>


servers 指登錄遠程服務器的基本信息,配置了 username 和 password。注意: nexus-releases 是發佈版本,nexus-snapshots是快照版本。(鏡像倉庫中怎麼出現了發佈版本和快照版本,區別在哪裏? 使用場景是什麼?)

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <name>Pingan Nexus Repository</name>
      <url>http://maven.paic.com.cn/repository/maven-public</url>
    </mirror>
  </mirrors>

鏡像倉庫用於定義一系列的遠程倉庫的鏡像。我們可以在pom中定義一個下載工件的時候所使用的遠程倉庫。但是有時候這個遠程倉庫會比較忙,所以這個時候人們就想着給它創建鏡像以緩解遠程倉庫的壓力,也就是說會把對遠程倉庫的請求轉換到對其鏡像地址的請求。每個遠程倉庫都會有一個id,這樣我們就可以創建自己的mirror來關聯到該倉庫,那麼以後需要從遠程倉庫下載工件的時候Maven就可以從我們定義好的mirror站點來下載,這可以很好的緩解我們遠程倉庫的壓力。在我們定義的mirror中每個遠程倉庫都只能有一個mirror與它關聯,也就是說你不能同時配置多個mirror的mirrorOf指向同一個repositoryId。

maven 的 基本知識

本地倉庫 :

在每個開發者本地的一個倉庫,在setting.xml文件中配置的路徑。第一次運行maven的時候,會在本地創建一個倉庫,並且直接把遠程的jar包下載到本地。下次配置的時候,如果本地存在jar包,就直接從本地獲取。

遠程倉庫 :

maven工程中,只有本地倉庫和遠程倉庫之說。一個普通只能有一個本地倉庫,但是可以配置多個遠程倉庫。

中央倉庫 :

中央倉庫屬於遠程倉庫中的一種,是maven核心自帶的遠程倉庫。它包含了大部分的開源構件,在默認配置下,當本地倉庫沒有maven需要的構建時候,它就會嘗試從遠程的中央倉庫下載。

私服 :

私服是特殊的一種遠程倉庫,爲了節省時間和帶寬。在局域網內假設的一個私有的倉庫服務器,用來代理所有外部的遠程倉庫。內部的項目或者jar包,還能部署到私服上供其他的項目下載。 也可以降低中央倉庫的負荷。

其它公共庫

除了中央庫和私服,還有很多其他的遠程倉庫,常見的有java.net.maven 庫 和 JBoss Maven 庫等。

這裏寫圖片描述

maven中插件功能的實現

Maven引入本地包,這個包不存在遠程倉庫中

<dependency>
        <groupId>com.pingan.UnionSM2</groupId>
        <artifactId>UnionSM2</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.baseddir}/lib/UnionSM2.jar</systemPath>                                            
</dependency>

其中 scope 是用來限制依賴的作用範圍,如果配置scope爲system表示以外部jar包的形式來引入這個jar,maven不會到內部倉庫中去查找它的存在。
systemPath 這個標籤表示外部jar包的路徑。${project.baseddir}表示所在工程的根目錄。一般在工程下創建一個lib包,然後把依賴jar放入在lib包中。
這樣就可以maven引入本地包了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章