1. 程式人生 > >Maven distributionManagement 分發構件至遠端倉庫

Maven distributionManagement 分發構件至遠端倉庫

mvn install 會將專案生成的構件安裝到本地Maven倉庫,mvn deploy 用來將專案生成的構件分發到遠端Maven倉庫。本地Maven倉庫的構件只能供當前使用者使用,在分發到遠端Maven倉庫之後,所有能訪問該倉庫的使用者都能使用你的構件。

我們需要配置POM的distributionManagement來指定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會根據你專案的版本來判斷將構件分發到哪個倉庫。

一般來說,分發構件到遠端倉庫需要認證,如果你沒有配置任何認證資訊,你往往會得到401錯誤。這個時候,如下在settings.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是本地的。