maven私服注意問題-nexus搭建maven私服及私服jar包上傳和下載

http://blog.csdn.net/zwc0910/article/details/17349111html

 

1、nexus搭建maven私服及相關介紹

一、下載nexus-2.12.0-01-bundle.zip(版本隨意)

二、以管理員身份運行cmd,cd進入解壓文件的bin目錄,執行nexus.bat installapache



若未以管理員身份運行則安裝不了,由於權限不夠


三、開啓nexus服務,訪問nexus服務器地址:http://localhost:8081/nexus/,默認登陸帳戶爲admin,默認密碼爲admin123,登陸成功後點擊Repositories可看到私服有如下類型倉庫:



1)hosted,宿主倉庫,部署本身的jar到這個類型的倉庫,包括releases和snapshot兩部分,Releases公司內部發布版本倉庫、 Snapshots 公司內部測試版本倉庫
2)proxy,代理倉庫,用於代理遠程的公共倉庫,如maven中央倉庫,用戶鏈接私服,私服自動去中央倉庫下載jar包或者插件。 
3)group,倉庫組,用來合併多個hosted/proxy倉庫,一般咱們配置本身的maven鏈接倉庫組。
4)virtual(虛擬):兼容Maven1 版本的jar或者插件 

四、nexus倉庫默認在解壓文件的sonatype-work\nexus\storage目錄中:服務器

apache-snapshots:代理倉庫,存儲snapshots構件,代理地址https://repository.apache.org/snapshots/app

central-m1:virtual類型倉庫,兼容Maven1 版本的jar或者插件eclipse

releases:本地倉庫,存儲releases構件。maven

snapshots:本地倉庫,存儲snapshots構件。測試

thirdparty:第三方倉庫url

public:倉庫組spa

 

2、向maven私服上傳寫好的jar
 .net

一、需求:將項目子模塊ssm_dao這個工程打包成jar並上傳到私服

二、第一步:須要在客戶端即部署dao工程的電腦上配置 maven環境,並修改 settings.xml 文件,配置鏈接私服的用戶

和密碼。此用戶名和密碼用於私服校驗,由於私服須要知道上傳都 的帳號和密碼 是否和私服中的帳號和密碼 一致。

在maven文件夾下apache-maven-3.5.0\conf\settings.xml文件添加一下代碼:(<servers>節點內)

 

[html] view plain copy

  1. <server>  
  2.      <!--releases 鏈接發佈版本項目倉庫-->  
  3.       <id>releases</id>  
  4.       <!--訪問releases這個私服上的倉庫所用的帳戶和密碼-->  
  5.       <username>admin</username>  
  6.       <password>admin123</password>  
  7.     </server>  
  8.     <server>  
  9.     <!--snapshots 鏈接測試版本項目倉庫-->  
  10.       <id>snapshots</id>  
  11.       <!--訪問releases這個私服上的倉庫所用的帳戶和密碼-->  
  12.       <username>admin</username>  
  13.       <password>admin123</password>  
  14.     </server>  

 

三、在ssm_dao的pom.xml文件中添加一下代碼:

[html] view plain copy

  1. <!--將ssm_dao上傳私服  -->  
  2.  <distributionManagement>   
  3.  <!--pom.xml這裏<id> 和 settings.xml 配置 <id> 對應  -->  
  4.     <repository>  
  5.         <id>releases</id>  
  6. <url>http://localhost:8081/nexus/content/repositories/releases/</url>  
  7.     </repository>   
  8.     <snapshotRepository>  
  9.         <id>snapshots</id>  
  10. <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>  
  11.     </snapshotRepository>   
  12.  </distributionManagement>  

根據工程的版本號決定上傳到哪一個宿主倉庫,若是版本爲release則上傳到私服的release倉庫,若是版本爲snapshot則上傳到私服的snapshot倉庫。

如:ssm_dao的工程的版本號爲0.0.1-SNAPSHOT,則ssm_dao打包好的jar在本地倉庫snapshots可見

[html] view plain copy

  1. <modelVersion>4.0.0</modelVersion>  
  2.  <parent>  
  3.    <groupId>com.nocol</groupId>  
  4.    <artifactId>ssm_parent</artifactId>  
  5.    <version><span style="color:#FF0000;">0.0.1-SNAPSHOT</span></version>  
  6.  </parent>  
  7.  <artifactId>ssm_dao</artifactId>  

四、正式上傳:首先啓動nexus服務,對ssm_dao工程執行deploy命令,看到BUILD SUCCESS則表示上傳成功了


此時在\nexus-2.12.0-01-bundle\sonatype-work\nexus\storage\snapshots下能找到,可是在本地倉庫並無,由於jar包上傳在maven私服,接下來介紹如何能讓本身上傳的jar出如今本地倉庫

如圖:(本地snapshots)

如圖:(私服)

五、此時將ssm_dao工程關閉,能夠看到依賴ssm_dao的ssm_service工程出現感嘆號(缺乏了ssm_dao.jar)

3、maven私服自動下載jar包
一、在沒有配置nexus以前,若是本地倉庫沒有,去中央倉庫下載。有了私服以後,本地項目首先去本地倉庫找jar,若是沒有找到則鏈接私服從私服下載jar包,若是私服沒有jar包私服同時做爲代理服務器從中央倉庫下載jar包,這樣提升了下載速度,項目鏈接私服下載jar包的速度要比項目鏈接中央倉庫的速度快的多。

二、nexus中包括不少倉庫,如上面介紹的hosted中存放的是本身發佈的jar包及第三方公司的jar包,proxy中存放的是中央倉庫的jar,爲了方便從私服下載jar包能夠將多個倉庫組成一個倉庫組,每一個工程須要鏈接私服的倉庫組下載jar包,這樣在項目中配置下載路徑只須要給倉庫組路徑便可,即:

http://localhost:8081/nexus/content/groups/public/

三、第一步:在客戶端的setting.xml中配置私服的倉庫,因爲setting.xml中沒有repositories的配置標籤須要使用profile定義倉庫(profile節點內)

[html] view plain copy

  1. <profile>     
  2.     <!--profile的id-->  
  3.    <id>dev</id>     
  4.     <repositories>     
  5.       <repository>    
  6.         <!--倉庫id,repositories能夠配置多個倉庫,保證id不重複-->  
  7.         <id>nexus</id>     
  8.         <!--倉庫地址,即nexus倉庫組的地址-->  
  9.         <url>http://localhost:8081/nexus/content/groups/public/</url>     
  10.         <!--是否下載releases構件-->  
  11.         <releases>     
  12.           <enabled>true</enabled>     
  13.         </releases>     
  14.         <!--是否下載snapshots構件-->  
  15.         <snapshots>     
  16.           <enabled>true</enabled>     
  17.         </snapshots>     
  18.       </repository>     
  19.     </repositories>    
  20.      <pluginRepositories>    
  21.         <!-- 插件倉庫,maven的運行依賴插件,也須要從私服下載插件 -->  
  22.         <pluginRepository>    
  23.             <!-- 插件倉庫的id不容許重複,若是重複後邊配置會覆蓋前邊 -->  
  24.             <id>public</id>    
  25.             <name>Public Repositories</name>    
  26.             <url>http://localhost:8081/nexus/content/groups/public/</url>    
  27.         </pluginRepository>    
  28.     </pluginRepositories>    
  29.   </profile>    

使用profile定義倉庫須要激活纔可生效,再在profile結束標籤後添加一下代碼:

[html] view plain copy

  1. <!--使用profile定義倉庫須要激活纔可生效-->  
  2.   <activeProfiles>  
  3.    <activeProfile>dev</activeProfile>  
  4.  </activeProfiles>  

四、配置成功後經過eclipse查看ssm_service工程下pom.xml的Effective POM選項,可看到以下代碼:

[html] view plain copy

  1. <repositories>  
  2.     <repository>  
  3.       <releases>  
  4.         <enabled>true</enabled>  
  5.       </releases>  
  6.       <snapshots>  
  7.         <enabled>true</enabled>  
  8.       </snapshots>  
  9.       <id>nexus</id>  
  10.       <url>http://localhost:8081/nexus/content/groups/public/</url>  
  11.     </repository>  
  12.     <repository>  
  13.       <snapshots>  
  14.         <enabled>false</enabled>  
  15.       </snapshots>  
  16.       <id>central</id>  
  17.       <name>Central Repository</name>  
  18.       <url>https://repo.maven.apache.org/maven2</url>  
  19.     </repository>  
  20.   </repositories>  
  21.   <pluginRepositories>  
  22.     <pluginRepository>  
  23.       <id>public</id>  
  24.       <name>Public Repositories</name>  
  25.       <url>http://localhost:8081/nexus/content/groups/public/</url>  
  26.     </pluginRepository>  
  27.     <pluginRepository>  
  28.       <releases>  
  29.         <updatePolicy>never</updatePolicy>  
  30.       </releases>  
  31.       <snapshots>  
  32.         <enabled>false</enabled>  
  33.       </snapshots>  
  34.       <id>central</id>  
  35.       <name>Central Repository</name>  
  36.       <url>https://repo.maven.apache.org/maven2</url>  
  37.     </pluginRepository>  
  38.   </pluginRepositories>  

表示當該工程須要的jar在本地倉庫沒有時,根據這裏配置的訪問路徑自動去maven私服下載。此時再update一下父工程,發現ssm_service的感嘆號消失(此時ssm_dao仍是close狀態),說明ssm_service工程已經在maven私服內下載了ssm_dao.jar,同時在本地倉庫也存在了該jar。

相關文章
相關標籤/搜索