使用Nexus搭建Maven私服問題總結

#業務場景

最近項目要交付給客戶了,以前項目開發和測試一直都是使用公司內部的一套環境,項目交付後客戶購置了大量服務器,也要將整套測試環境遷移至客戶的服務器上,後續的需求變動以及新需求的開發都會在客戶服務器上進行開發和測試。當應用服務器環境、SVN等所有準備好以後,我發現項目引用了大量咱們公司封裝的jar包,而這些jar包仍是要從咱們公司的Maven私服倉庫下載,而客戶這邊則要求要在客戶服務器上從新搭建一個Maven的私服倉庫來管理jar包,不容許在使用咱們公司的maven私服,因此我就開始協助客戶使用Nexus這個倉庫管理器來搭建Maven私服。下面就簡單說一下在使用Nexus搭建Maven私服時碰到一些問題。html

#搭建步驟

很少說了,網上大把教程,各個選項各個參數都有較爲詳細的介紹,這裏推薦兩個:windows

#搭建中的一些小問題

Nexus 2.x版本和3.x版本差異很大,網上搜到的教程大多都是2.x版本的,3.x的較少,因爲以前沒有搭建倉庫的相關經驗,這3.x版本上折騰了一番硬是沒成功,根據工程學理論,因此咱們選擇了2.x版本在windows server上進行搭建。服務器

理解maven各個倉庫之間的關係

在項目中咱們真正會用到的有三個maven倉庫,本地倉庫、私服倉庫和中央倉庫。oracle

  • 本地倉庫:即本地的maven倉庫,也就是在安裝maven的時候指定的本地倉庫路徑,配置在maven的settings.xml當中
  • 私服倉庫:使用Nexus搭建好私服後配置的倉庫,首先須要在搭建Nexus時進行配置在服務上的倉庫地址,一般是在sonatype-work\nexus\storage下,也能夠自定義路徑覆蓋默認路徑。反映在本地的settings.xml當中則是配置的標籤內 和當中。
  • 中央倉庫,在項目中若是未使用Maven私服且都是用到的一些公用的jar包,那麼本地工程Maven的默認配置都是從中央倉庫進行下載。若是有用到私服,那麼請求就是先從私服下載,若是私服倉庫沒有則去中央倉庫進行檢索下載。

三者之間的關係是,當咱們在項目中依賴一個jar包時,Maven程序會先去本地倉庫中找,若是沒找到就回去私服找,若是仍是沒有,最後就回去中央倉庫找。以下圖:maven

 

第三方jar包批量上傳

這是碰到的一個頭疼的問題,由於當時項目依賴了大量的咱們公司本身封裝的jar包,這些jar包在中央倉庫裏確定是沒有的,須要上傳到maven私服當中。可是網上搜到的上傳方法大都是一個個的上傳到thirdparty這個倉庫當中,若是照這種方式來不知要上傳多久,我看更是有人祭出了本身寫的腳原本作批量的上傳,這就涉及到了Maven倉庫的遷移。後面在網上找到一種相對簡單的方法,即將原來用的依賴上傳到Nexus所在服務器,而後在新建倉庫時制定倉庫路徑來覆蓋默認路徑。具體操做以下:ide

  1. 新建host類型的倉庫
  2. 在 Override Local Storage Location選項上填入你上傳的maven倉庫的路徑並覆蓋默認路徑。

 

  1. 最好把 Deployment Policy 選項下勾選爲 Allow Redeploy 方便後面jar修改後打包到私服倉庫。測試

這樣下來就能夠了,我這邊順便把上傳的jar包夜丟到了thirdparty的默認倉庫下了。spa

本地maven倉庫配置好以後部分jar包沒法下載

配置完畢以後改了一下maven的settings.xml配置文件,在裏面新增了兩個profile,一個是私服地址,一個是中央倉庫地址。可是測試了幾回,老是有幾個包沒法下載,其中就包括oralce的ojdbc驅動。咱們都知道,oracle官方沒有把這個驅動jar包放到maven的中央倉庫,因此幾個用的比較普遍的中央倉庫都是找不到這個jar的,可是這個jar包明明在我私服倉庫裏面是有的,問題可能就是在下載jar包的過程當中請求中央倉庫下載這些jar包沒有成功。可是公司本身封裝的jar包也都下載成功了。萬分不解,後來中央倉庫的地址配置彷佛有問題,以前我是配置的默認的http://repo1.maven.org/maven2/ ,後面修改爲了Nexus一個默認的group類型的Public Repositories倉庫,即http://197.55.xx.xxx:8081/nexus/content/groups/public/jar, 包就能所有下載成功了,:’(.net

#總結

暫時到這裏,裏面還有一些我也沒搞明白的地方,有機會再補充吧server

相關文章
相關標籤/搜索