maven私服的setting文件設置

<!--
xuze added by:添加了一些註釋,利於新人理解
Date:2011年7月18日
-->
<settings>
  <!-- 配置鏡像 -->
  <mirrors>      
    <mirror>
      <!-- 此鏡像通常用來做爲公司內部開發的版本快照,做爲public-snapshots倉庫的鏡像地址 -->
      <!-- 鏡像的id,id用來區分不一樣的mirror元素。 --> 
      <id>nexus-public-snapshots</id>
      <!-- 被鏡像的服務器的id。例如,若是咱們要設置了一個Maven中央倉庫(http://repo1.maven.org/maven2)的鏡像,
          就須要將該元素設置成central。這必須和中央倉庫的id 「central」徹底一致。 -->
      <mirrorOf>public-snapshots</mirrorOf>
      <!-- 該鏡像的URL。 --> 
      <url>http://repos.d.xxx.com/nexus/content/groups/public-snapshots</url>
    </mirror>
    
    <mirror>
      <!-- 此鏡像通常用來做爲公司第三方引用基礎類庫鏡像,是全部倉庫的鏡像地址 -->
      <id>nexus</id>
      <!-- 爲*表示爲全部的倉庫作鏡像,有了這個配置,全部的構建都會包含public組,若是你想包含public-snapshots組,
          你必須添加public-snapshots這個Profile,經過在命令行使用以下的 -P 標誌:$ mvn -P public-snapshots clean install -->
      <mirrorOf>*</mirrorOf>
      <url>http://repos.d.xxx.com/nexus/content/groups/public</url>
    </mirror>    
  </mirrors>
  
  <!-- settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。它包含了activation, repositories, pluginRepositories 和 properties元素。
      這裏的profile元素只包含這四個子元素是由於這裏只關心構建系統這個總體(這正是settings.xml文件的角色定位),而非單獨的項目對象模型設置。  
    若是一個settings中的profile被激活,它的值會覆蓋任何其它定義在POM中或者profile.xml中的帶有相同id的profile。 --> 
  <profiles>
    <profile>
      <id>development</id>
      <!-- 倉庫。倉庫是Maven用來填充構建系統本地倉庫所使用的一組遠程項目。而Maven是從本地倉庫中使用其插件和依賴。
          不一樣的遠程倉庫可能含有不一樣的項目,而在某個激活的profile下,可能定義了一些倉庫來搜索須要的發佈版或快照版構件。有了Nexus,這些應該交由Nexus完成 -->
      <repositories>
        <repository>
          <id>central</id>
          <!-- 虛擬的URL形式,指向鏡像的URL,由於全部的鏡像都是用的是nexus,這裏的central實際上指向的是http://repos.d.xxx.com/nexus/content/groups/public -->
          <url>http://central</url>
          <!-- 表示能夠從這個倉庫下載releases版本的構件-->
          <releases><enabled>true</enabled></releases>
          <!-- 表示能夠從這個倉庫下載snapshot版本的構件 -->
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     
     <!-- 插件倉庫。倉庫是兩種主要構件的家。第一種構件被用做其它構件的依賴。這是中央倉庫中存儲大部分構件類型。
         另一種構件類型是插件。Maven插件是一種特殊類型的構件。因爲這個緣由,插件倉庫獨立於其它倉庫。
        pluginRepositories元素的結構和repositories元素的結構相似。每一個pluginRepository元素指定一個Maven能夠用來尋找新插件的遠程地址。 -->  
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    
    <profile>
      <!--this profile will allow snapshots to be searched when activated-->
      <id>public-snapshots</id>
      <repositories>
        <repository>
          <id>public-snapshots</id>
          <!-- 虛擬的URL形式,指向鏡像的URL,這裏指向的是http://repos.d.xxx.com/nexus/content/groups/public-snapshots -->
          <url>http://public-snapshots</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>public-snapshots</id>
          <url>http://public-snapshots</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  
  <!-- 激活的Profile。activation元素並非激活profile的惟一方式。settings.xml文件中的activeProfile元素能夠包含profile的id,
      任何在activeProfile中定義的profile id,不論環境設置如何,其對應的profile都會被激活。若是沒有匹配的profile,則什麼都不會發生。
    profile也能夠經過在命令行,使用-P標記和逗號分隔的列表來顯式的激活(如,-P test)。
    要了解在某個特定的構建中哪些profile會激活,可使用maven-help-plugin(mvn help:active-profiles)。 -->  
  <activeProfiles>
      <!-- 沒有顯示激活public-snapshots -->
    <activeProfile>development</activeProfile>
  </activeProfiles>

<!-- 自定義本地倉庫地址,其默認值爲~/.m2/repository -->
<localRepository>/data/maven-repository</localRepository>

  <!-- 發佈的服務器和密碼,暫時未限制權限 -->
   <servers>
    <server>
      <!-- 發佈的位置在POM中配置,以ID爲關聯,有不少公用的信息須要配置在POM文件裏,最佳實踐是定義一個公司級別的root pom -->
      <id>archiva.internal</id>
      <username>maven</username>
      <password>1q2w3e4r</password>
    </server>
    <server>
      <id>archiva.snapshots</id>
      <username>maven</username>
      <password>1q2w3e4r</password>
    </server>
  </servers>
</settings>




分發構件至遠程倉庫java

mvn install 會將項目生成的構件安裝到本地Maven倉庫,mvn deploy 用來將項目生成的構件分發到遠程Maven倉庫。本地Maven倉庫的構件只能供當前用戶使用,在分發到遠程Maven倉庫以後,全部能訪問該倉庫的用戶都能使用你的構件。服務器

咱們須要配置POM的distributionManagement來指定Maven分發構件的位置,以下:maven

<project>    
  ...    
  <distributionManagement>    
    <repository>    
      <id>nexus-releases</id>    
      <name>Nexus Release Repository</name>    
      <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>    
    </repository>    
    <snapshotRepository>    
      <id>nexus-snapshots</id>    
      <name>Nexus Snapshot Repository</name>    
      <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>    
    </snapshotRepository>    
  </distributionManagement>    
  ...    
</project>

Maven區別對待release版本的構件和snapshot版本的構件,snapshot爲開發過程當中的版本,實時,但不穩定,release版本則比較穩定。Maven會根據你項目的版原本判斷將構件分發到哪一個倉庫。this

通常來講,分發構件到遠程倉庫須要認證,若是你沒有配置任何認證信息,你每每會獲得401錯誤。這個時候,以下在settings.xml中配置認證信息:url

Xml代碼
插件

<settings>    
  ...    
  <servers>    
    <server>    
      <id>nexus-releases</id>    
      <username>admin</username>    
      <password>admin123</password>    
    </server>    
    <server>    
      <id>nexus-snapshots</id>    
      <username>admin</username>    
      <password>admin123</password>    
    </server>      
  </servers>    
  ...    
</settings>

需 要注意的是,settings.xml中server元素下id的值必須與POM中repository或snapshotRepository下id的 值徹底一致。將認證信息放到settings下而非POM中,是由於POM每每是它人可見的,而settings.xml是本地的。命令行

相關文章
相關標籤/搜索