1.搭建Maven私服背景
公司還是按捺不住,要搭建一個自己的Maven本地倉庫,可以讓開發人員down架包,從內網還是快很多。
這樣公司的maven本地倉庫就是 開發人員自己電腦上的maven倉庫 和 Maven遠程倉庫 之間的一個緩沖倉庫。
那要構建一個maven私服,需要用到Maven倉庫管理軟件,關於Apache Archiva,Artifactory,Sonatype Nexus的區別,有下面這些的參考對比:
http://blog.sina.com.cn/s/blog_72ef7bea0102vq0k.html
http://www.sonatype.org/nexus/2015/02/23/migrating-from-artifactory-archiva-or-a-raw-maven-repository-to-sonatype-nexus/
2.安裝Nexus,並初次啟動Nexus
這里我們下載開源版 Nexus OSS。Nexus 提供兩種安裝包,一種是包含 Jetty 容器的 bundle 包,另一種是不包含容器的 war 包。下載地址:http://www.sonatype.org/nexus/go。
這里先以windows上為例【Linux上之后再來一份】
在你點擊下載之后,會有Read THE BOOK 的入口和加入NENUX社區的入口。
這里直接給你ReadTheBook的地址:https://help.sonatype.com/display/NXRM3
這里你可以找到官方提供的完整安裝和使用教程。【因為這里使用的是Nexus3的版本,和參考文章中不大一致】
下載的壓縮包解壓下來
然后cmd,命令窗口進入nexus-3.5.2-01目錄下的bin目錄下,按照官方的啟動方式,需要在bin目錄下使用nexus /run命令啟動,如下圖
確認之后,下面會打印出來啟動的相關信息,接下來,耐心等待它啟動完成。
直到出現下面這個,才算啟動完成。
初次啟動之后,你可以在瀏覽器上訪問nexus這個maven管理器
地址:http://localhost:8081/
當然,你可以使用默認的用戶登錄。
用戶名:admin
密碼:admin123
此時,觀看命令窗口,會有記錄相關的操作記錄。
3.將nexus配置為系統服務
根據官方文檔說明,將nexus配置為系統服務是一個很好的選擇。因為
第一:上面的安裝和啟動過程並沒有默認的把nexus作為服務加入系統服務中;
第二:這樣下次服務器重啟,服務也會重啟。
但是這個有個前提,就是已經確保安裝了Java運行時環境。
接下來,我們重新打開一個窗口,去將nexus加入系統服務
最后的<optional-service-name>,咱們直接命名成nexus就好。【當然,最后這個不指定的話,默認就是創建成nexus服務名】
在windows7上安裝nexus為系統服務時,報錯:could not open SCManager
但是報錯如下:
解決方法:
然后再次運行
如果再解決不了,那就在
直接以管理員身份運行這個命令提示符,然后安裝服務。
顯示安裝成功之后,可以進入控制面板---》管理工具---》服務
查找名為nexus的服務
你可以選擇,點擊上面的啟動按鈕啟動服務,也可以用下面的命令啟動服務
【當然,可以在上面配置啟動參數,這個之后再去查看配置】
啟動完成之后,試着訪問一下http://localhost:8081/
因為上面服務是自動的。
重啟電腦之后,再次訪問,可以訪問到,完美。
4.配置nexus和熟悉它
第一步,跟隨着說明文檔,看看下載nexus下來之后,有兩個目錄
nexus-3.5.2-01 安裝目錄
bin 包含nexus的啟動腳本和相關配置
etc jetty、karaf等配置文件
jre jre環境
lib java架包庫
public 關於nexus應用在本地跑起來所需要的資源
system 應用所有的插件和組件
LICENSE.txt 和 NOTICE.txt 版權聲明和法律細則
sonatype-work\nexus3 數據文檔
blobs/ 創建blob的默認路徑,如果你指定了絕對路徑,那就不在這里了
cache/ 當前緩存的karaf包的信息
db/ OrientDB數據庫的數據,用於存儲nexus的元數據的數據庫
elasticsearch / 當前配置的Elasticsearch狀態
etc/ 大概是運行時配置狀態和關於資源庫的自定義的相關的東西
health-check/ 看目錄,健康檢查的相關報告的存儲目錄吧
keystores/ 自動生成的關於資源庫的ID主鍵
log/ 運行實例生成的日志文件,也有日志文件的壓縮包,貌似是每天都會生成日志文件,你可以定期刪除老的日志文件
tmp/ 用於存儲臨時文件的目錄
具體每個目錄下的各個配置文件的作用,請參考官方文檔說明:https://help.sonatype.com/display/NXRM3/Installation
如果你想配置nexus的應用在本地啟動的JVM參數,可以在nexus.vmoptions
如果你想改變nexus的端口號,可以在nexus-default.properties
5.搭建maven私服資源庫
由於現在使用的nexus3,所以在nexus應用上資源庫初始化目錄和nexus2有很大的不同,但是類型都是一樣的。
第一步:首先http://localhost:8081/
登錄上nexus,未登錄的狀態下是這樣的。
使用默認用戶名admin密碼admin123登錄后,如下
第二步:使用nexus3要搭建maven私服的核心功能
在nexus安裝並啟動之后,我大概的把整個nexus的官方說明文檔走了一遍,主要就是介紹了左側菜單中的各個功能模塊。https://help.sonatype.com/display/NXRM3/Configuration
有興趣去看看,還是很有幫助的。
====================================================================================================================
-------------------------------------------------------------------------------------普及-----------------------------------------------------------------------------------------------------------------
上面提到的一點,不管nexus版本是怎么樣的,至少,repository的類型是一樣的。
先看一下大概的目錄結構:
根據多方的文檔和別人的博客,再綜合官網的解釋,我就這樣理解得出:
資源庫也就是這么三種,如上圖中 【代理資源庫】【托管資源庫】【組資源庫】,其實名字就是我自己瞎起的。
具體解釋一下:
【代理資源庫】:就是配置了外網的maven遠程倉庫地址的資源庫,本地找不到,就會通過代理資源庫中的地址,找到遠程倉庫,從遠程倉庫中下載所需要的jar。
【托管資源庫】:就是放在本地的資源庫,零零散散的jar,從遠程倉庫中下不到,只能自己在網上找,找到jar下載下來,放在托管資源庫中,交給nexus統一管理。不然哪天想去用連接數據庫的jar包,還得自己翻磁盤,多麻煩。
【組資源庫】 :從上面①+②看出來,其實組資源庫中並沒有jar包,而是把代理資源庫和托管資源庫統一配置到組資源庫中,然后組資源庫作為一個唯一的public提供給所有人使用。就像工人1+工人2把自己的賬單統一給包工頭,讓包工頭去跟老板結賬是一個道理。
好,明確了這一點,開始往下看吧。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果你想直入主題,往下看。
①在創建 repository之前,還是需要先設定一個指定的文件存儲目錄,便於統一管理。
由下面新建的完成的,可以看出,
②第二步,創建Proxy Repository 代理資源庫
創建頁面出來之后,頁面上有三個input框是必填的:
遠程Maven地址:https://repo1.maven.org/maven2/
其他的不用更改了。保存就好了。
文章來源: 使用Nexus3搭建Maven私服+上傳第三方jar包到本地maven倉庫
1、在搭建過程中,要記得新建repository是要根據nexus規則分別新建proxy,hosted,group三個Browse,並將proxy和hosted加入到group
2、安裝完成后在有網的情況下測試是否安裝成功,將setting文件的下載地址改為私服地址后,可以看到我們新建的repository中沒有jar的,然后在刪除項目已經down好的jar,然后在執行mvn install,剛才刪除的jar又重新down回來后,在去看私服上新建的倉庫,會發現該庫中已經有了你項目中的所有jar包紀委安裝成功,可以移植到內網開發環境。至於內網中初始倉庫的jar包和后面項目所需的新jar包,我們還是采取了最原始的方法,拷到setting指向的本地倉庫(.m2),然后在項目中執行mvn install,即可上傳到私服。其他開發人員就可以直接引用了(此方法為個人愚見,歡迎有更優秀想法指導賜教)。