Maven Settings.xml檔案及常見問題總結

xiayiguo發表於2018-02-14

Settings.xml 檔案

  • <localRepository>
    配置本地倉庫地址,如:
<localRepository>D:\.m2\repository</localRepository>
  • <servers>
    配置私服地址。如果為公共伺服器,不需要賬號,密碼,則可不配置。只要配置<mirror>標籤即可(<mirror>見1.3小節)如:
<server>
      <id>nexus</id>
      <username>yanfa</username>
      <password>yanfa</password>
</server>
  • <mirror>
    mirror則相當於一個代理,它會攔截去指定的遠端repository下載構件的請求,然後從自己這裡找出構件回送給客戶端。配置mirror的目的一般是出於網速考慮。
    如果配置為*,如下面配置檔案所示,則如果這個mirror掛掉,maven將無法訪問任何遠端倉庫,因而將無法下載構件。
    配置遠端倉庫地址:
    <mirror>
      <id>nexus</id>
      <name>Nexus</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  • <repository>
    internal repository是指在區域網內部搭建的repository,它跟central repository, jboss repository等的區別僅僅在於其URL是一個內部網址。
    配置遠端倉庫資訊:
        <repository>
          <id>nexus</id>
          <name>Nexus Repository</name>
          <url>http://localhost:8081/nexus/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
       </repository>
  • <pluginRepository>
    配置外掛資訊,如tomcat等外掛:
        <pluginRepository>
          <id>nexus</id>
          <name>Nexus Repository</name>
          <url>http://localhost:8081/nexus/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>

常見問題

  • Q: Maven 本地倉庫明明有jar包,pom檔案還是報錯解決?
    A: 解決方法:找到出錯的jar包檔案在本地倉庫的位置,刪掉_maven.repositories檔案。
    原因:更換settings.xml 配置檔案後,如果配置的respositoryId中不包含這個私服的repositoryId,maven本不會讓這個本地的jar包,maven就會自動到配置的庫中找到,找不到就會報錯。
  • Q: 明明已經設定本地倉庫,但maven每次更新時,還是要到網上下載?
    A: 本地沒有下載到真正的 jar 包(而是帶有last-updated字尾的檔案),只能再到網上下載。
  • Q: Maven 應用jar 版本不對,如何解決?
    A: 1. 首先檢視本地倉庫中的目標jar包版本是否存在。2. 如果存在,檢視.pom 檔案,知道其座標, 然後在需要引用的工程的pom.xml檔案中新增dependency 引用。 3. 如果不存在, 看私服中是否有改目標版本的檔案,有,就下載即可。

    優勢

    未使用maven管理,每一個專案都要帶一些jar包,增大了專案的體積,需要更多的時間部署;同時每個專案之間肯定有一些公用的jar包,如果能夠集中式管理jar,這樣會節省很多的空間。

相關文章