一. 私服搭建及配置html
1 . 私服簡介java
私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服以後,當 Maven 須要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;不然,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。mysql
咱們可使用專門的 Maven 倉庫管理軟件來搭建私服,好比:Apache Archiva,Artifactory,Sonatype Nexus。這裏咱們使用 Sonatype Nexus。sql
2 . 安裝Nexusapache
2 . 1 . 下載Nexus瀏覽器
Nexus 專業版是須要付費的,這裏咱們下載開源版 Nexus OSS。下載地址:http://www.sonatype.org/nexus/go,最新的爲OSS3.X,我這裏選擇穩定版本2.x,點擊後自動下載安全
2 . 2 . 使用bundle安裝包安裝Nexus服務器
解壓安裝包nexus-2.14.5-02.zip,打開命令提示符,進入nexus-2.14.5-02/bin目錄 (爲方便啓動和退出Nexus,可將bin目錄添加到環境變量),maven
1.執行nexus命令佈局
2.執行 nexus install 將Nexus安裝爲Windows服務
3.打開瀏覽器,訪問:http://localhost:8081/nexus/:
點擊右上角 Log In,使用用戶名:admin ,密碼:admin123 登陸,可以使用更多功能:
4.1 類型介紹
登錄Nexus,在左邊菜單欄裏選擇Repositories,而後會出現右邊的畫面,右邊上半部分是列出來的repository,黑體字是類型爲group的repository。
這裏簡單介紹下幾種repository的類型:
Ø hosted,本地倉庫,一般咱們會部署本身的構件到這一類型的倉庫。好比公司的第二方庫。
Ø proxy,代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
Ø group,倉庫組,用來合併多個hosted/proxy倉庫,當你的項目但願在多個repository使用資源時就不須要屢次引用了,只須要引用一個group便可。
4.2 管理本地倉庫
咱們前面講到類型爲hosted的爲本地倉庫,Nexus預置了3個本地倉庫,分別是Releases, Snapshots, 3rd Party. 分別講一下這三個預置的倉庫都是作什麼用的:
Releases:
這裏存放咱們本身項目中發佈的構建, 一般是Release版本的, 好比咱們本身作了一個FTP Server的項目, 生成的構件爲ftpserver.war, 咱們就能夠把這個構建發佈到Nexus的Releases本地倉庫. 關於符合發佈後面會有介紹.
Snapshots:
這個倉庫很是的有用, 它的目的是讓咱們能夠發佈那些非release版本, 非穩定版本, 好比咱們在trunk下開發一個項目,在正式release以前你可能須要臨時發佈一個版本給你的同伴使用, 由於你的同伴正在依賴你的模塊開發, 那麼這個時候咱們就能夠發佈Snapshot版本到這個倉庫, 你的同伴就能夠經過簡單的命令來獲取和使用這個臨時版本.
3rd Party:
顧名思義, 第三方庫, 你可能會問不是有中央倉庫來管理第三方庫嘛,沒錯, 這裏的是指可讓你添加本身的第三方庫, 好比有些構件在中央倉庫是不存在的. 好比你在中央倉庫找不到Oracle 的JDBC驅動, 這個時候咱們就須要本身添加到3rdparty倉庫。
1. 建庫,Add-- >HostedRepository
按照下圖填寫信息,注意圈的地方,填寫完成後save
2. 而後選擇PublicRepositories,打開configuration選項卡
3. 將本身建立的倉庫添加到group,如圖從右側移到左側,點擊save,保存。至此,已經成功搭建好咱們自定義的倉庫了。
注:若是須要你還能夠建立一個倉庫組,在Repositories菜單處選add-->Repository Group便可
最後點擊保存。固然本身也能夠建立角色,分配權限等,這裏直接用已有的角色,省略了一些步驟。
二. 利用搭建的私服,進行上傳和下載jar包
1. 遠程倉庫的認證
大部分公共的遠程倉庫無須認證就能夠直接訪問,但咱們在平時的開發中每每會架設本身的Maven遠程倉庫,出於安全方面的考慮,咱們須要提供認證信息才能訪問這樣的遠程倉庫。配置認證信息和配置遠程倉庫不一樣,遠程倉庫能夠配置在settings.xml文件中,也可直接在pom.xml中配置,後面會分別舉例說明,可是認證信息必須配置在settings.xml文件中。在settings.xml中配置認證信息更爲安全。以下:在settings.xml中配置<servers>節點,用的帳號爲上面咱們建立的帳戶。
1 <settings> 2 2 ... 3 3 <!--配置遠程倉庫認證信息--> 4 4 <servers> 5 5 <server> 6 6 <id>bbsnexus</id> 7 7 <username>licui</username> 8 8 <password>a111111</password> 9 9 </server> 10 10 </servers> 11 11 ... 12 12 </settings>
上面代碼咱們配置了一個id爲bbsnexus的遠程倉庫認證信息。Maven使用settings.xml文件中的servers元素及其子元素server配置倉庫認證信息。認證用戶名爲licui,認證密碼爲a111111。這裏的關鍵是id元素,id沒有要求,隨便定義,可是後面配置遠程倉庫的id必須和這裏的id保持一致。正是這個id將認證信息與倉庫配置聯繫在了一塊兒。
2. 配置遠程倉庫
若是隻有一個項目,能夠配置在項目的pom文件中:
若是有多個項目時,能夠將如上配置放到Maven的Settings文件中:
repository:在repositories元素下,可使用repository子元素聲明一個或者多個遠程倉庫。
id:倉庫聲明的惟一id,尤爲須要注意的是,Maven自帶的中央倉庫使用的id爲central,若是其餘倉庫聲明也使用該id,就會覆蓋中央倉庫的配置。
name:倉庫的名稱,讓咱們直觀方便的知道倉庫是哪一個,暫時沒發現其餘太大的含義。
url:指向了倉庫的地址,通常來講,該地址都基於http協議,Maven用戶均可以在瀏覽器中打開倉庫地址瀏覽構件。
releases和snapshots:用來控制Maven對於發佈版構件和快照版構件的下載權限。須要注意的是enabled子元素,該例中releases的enabled值爲true,表示開啓JBoss倉庫的發佈版本下載支持,而snapshots的enabled值爲false,表示關閉JBoss倉庫的快照版本的下載支持。根據該配置,Maven只會從JBoss倉庫下載發佈版的構件,而不會下載快照版的構件。
layout:元素值default表示倉庫的佈局是Maven2及Maven3的默認佈局,而不是Maven1的佈局。基本不會用到Maven1的佈局。
其餘:對於releases和snapshots來講,除了enabled,它們還包含另外兩個子元素updatePolicy和checksumPolicy。
元素updatePolicy用來配置Maven從遠處倉庫檢查更新的頻率,默認值是daily,表示Maven天天檢查一次。其餘可用的值包括:never-從不檢查更新;always-每次構建都檢查更新;interval:X-每隔X分鐘檢查一次更新(X爲任意整數)。
元素checksumPolicy用來配置Maven檢查校驗和文件的策略。當構建被部署到Maven倉庫中時,會同時部署對應的檢驗和文件。在下載構件的時候,Maven會驗證校驗和文件,若是校驗和驗證失敗,當checksumPolicy的值爲默認的warn時,Maven會在執行構建時輸出警告信息,其餘可用的值包括:fail-Maven遇到校驗和錯誤就讓構建失敗;ignore-使Maven徹底忽略校驗和錯誤。
默認的,若是本地倉庫找不到依賴的構件,這時須要東西時先到Nexus上找,若是發現Nexus服務關閉後,會自動到中央倉庫找。
若是咱們想覆蓋中央倉庫的默認地址,強制依賴的東西都到Nexus中去找,即便Nexus關閉也不會到中央工廠去下載:
修改Maven的Settings文件:
至此,咱們已經能夠從本身搭建的私服下載jar了。
4.上傳jar包到遠程倉庫
1)將已有的項目打成jar包上傳到私服服務器
首先須要在pom.xml中配置上傳倉庫的地址,配置distributionManagement元素,倉庫地址指向前面自定義的倉庫bbsid
1 <distributionManagement> 2 <repository> 3 <id>bbsnexus</id> 4 <name>bbsidrepository</name> 5 <url>http://127.0.0.1:8081/nexus/content/repositories/bbsid</url> 6 </repository> 7 </distributionManagement>
distributionManagement包含repository和snapshotRepository子元素,前者表示發佈版本(穩定版本)jar包的倉庫,後者表示快照版本(開發測試版本)的倉庫。
這兩個元素都須要配置id、name和url,id爲遠程倉庫的惟一標識,很重要,name只是爲了方便人閱讀,關鍵的url表示該倉庫的地址。
往遠程倉庫部署jar包的時候,須要認證,配置認證的方式爲id,必定要與前面settings中server的id保持一致。
若是項目當前的版本是快照版本,則部署到快照版本的倉庫地址,不然就部署到發佈版本的倉庫地址,由於這裏只是測試演示,前面只建立了Release版本的倉庫bbsid,因此省略了snapshotRepository。
配置正確後,定位到要上傳的項目目錄,運行命令mvn clean deploy,Maven就會直接將項目打包生成的jar包部署到配置對應的遠程倉庫中。
2)上傳第三方jar包到遠程倉庫
方式一 (假設發佈倉庫爲bbsid,發佈Jar包爲zbb-sms-0.0.1.jar):
A. settings.xml中配置認證信息。
B. 定位到要上傳的jar包的目錄,執行「 mvn deploy:deploy-file -DgroupId=com.zxp.test -DartifactId=sms -Dversion=1.0 -Dpackaging=jar -Dfile=zbb-sms-0.0.1.jar -Durl=http://127.0.0.1:8081/nexus/content/repositories/bbsid -DrepositoryId=bbsnexus」命令。
說明:deploy:deploy-file表示發佈獨立的文件。
groupId、artifactId和version可根據須要設定。(咱們要傳的包爲zbb-sms-0.0.1.jar,可是命令裏指定-Dversion=1.0,-DartifactId=sms,因此最終上傳到倉庫後的名稱爲sms-1.0.jar)
url爲Nexus服務器中須要上傳的倉庫路徑。
repositoryId與server的id必須一致。
上傳到倉庫中的結果以下圖示:
方式二 Nexus控制檯直接上傳jar包 (假設發佈倉庫爲bbsid,發佈Jar包爲mysql-connector-java-5.1.43.jar):
在Repositories列表中選擇Releases,點Artifact Upload,指定GAV Definition爲「GAV Parameters」,而後輸入相應的groupId、artifactId和version、Packaging,再點擊「Select Artifact(s) to Upload...」選擇指定的Jar文件,點擊「Add ActifactId」添加到Actifacts框,最後點「Upload Artifact(s)」便可。
上傳到倉庫中的jar以下圖示:
參考文章:http://www.cnblogs.com/luotaoyeah/p/3791966.html
http://www.cnblogs.com/AlanLee/p/6198413.html
http://blog.csdn.net/wang379275614/article/details/43940259