1. 前言
其實介紹Maven私服的資料已經很多瞭,《Maven權威指南》、許曉斌老師的Blog都詳細介紹瞭常用私服——Nexus的功能,在此為何筆者還要寫一下呢,一個是筆者寫的是常用的功能,本身Maven這東西就是使用層次,若不是研究Maven內核、擴展Maven,大可不必細究源代碼,有那時間,還不如看看Mina的源代碼。這裡隻是說說筆者常用到的私服搭建、使用。二就是總結出來也好給健忘的自己留個備份。三就是確實私服是公司內部Maven項目經常需要的東東,不總結一下,不足以體現出重視。Nexus是常用的私用Maven服務器,一般是公司內部使用。下載地址是http://nexus.sonatype.org/downloads/。筆者用的是nexus-oss-webapp-1.9.1.1-bundle版本,內部嵌入瞭Jetty。先安裝、再啟動。啟動腳本在{nexus_HOME}injswwindows-x86-32下面。Installnexus.bat是安裝、Startnexus.bat是隨機啟動。默認是占用瞭您機器的8081端口。啟動前請務必保證該端口未被占用。
2. 常用功能簡介
Nexus常用功能就是:指定私服的中央地址、將自己的Maven項目指定到私服地址、從私服下載中央庫的項目索引、從私服倉庫下載依賴組件、將第三方項目jar上傳到私服供其他項目組使用。
開啟Nexus服務後訪問url地址http://127.0.0.1:8081/nexus,之後登錄系統,用戶名密碼分別是:admin/admin123.
最頻繁的就是點擊左側菜單欄的Repositories按鈕
列出來的都是倉庫,一般用到的倉庫種類是hosted、proxy。Hosted代表宿主倉庫,用來發佈一些第三方不允許的組件,比如oracle驅動、比如商業軟件jar包。Proxy代表代理遠程的倉庫,最典型的就是Maven官方中央倉庫、JBoss倉庫等等。如果構建的Maven項目本地倉庫沒有依賴包,那麼就會去這個代理站點去下載,那麼如果代理站點也沒有此依賴包,就回去遠程中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功後再下載至本機。筆者認為,其實Maven這個自帶的默認倉庫一般情況下已經夠大多數項目使用瞭。特殊情況時在配置新的倉庫,指定url即可,一般熟悉ExtJS的人操作這個Nexus都沒什麼問題,單詞不是很難,不明白的查查單詞基本差不多。就是如果Sonatype公司對其做瞭國際化的處理就更好瞭。
下載Maven項目索引,項目索引是為瞭使用者能夠在私服站點查找依賴使用的功能,我們先選擇一個proxy類型的代理倉庫——Apache Snapshots之後將它的下載索引項設為true,確認保存即可
Download storage location設為true,保存後後臺會運行一個任務,點擊菜單欄的Scheduled Tasks選項即可看到有個任務在RUNNING。 下載完成後,Maven索引就可以使用瞭,在搜索欄輸入要搜索的項,就可以查到相關的信息。比如搜索關鍵字Struts。
就可以檢索出它的相關信息,包括怎麼配置依賴信息。我們要想使用這個私服倉庫,先在項目pom中配置相關私服信息
Java代碼
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>nexus</name>
<url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
這樣這個Maven項目構建的時候會從私服下載相關依賴。當然這個配置僅僅是在此項目中生效,對於其他項目還是不起作用。如果相對Maven的其他項目也生效的話。需要修改全局的settings.xml文件。
Java代碼
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
</repository>
</repositories>
</profile>
<profile>
<id>nexus-snapshots</id>
<repositories>
<repository>
<id>nexus-snapshots</id>
<name>local private nexus snapshots</name>
<url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
<activeProfile>nexus-snapshots</activeProfile>
</activeProfiles>
之後所有本機的Maven項目就在私服下載組件。
假如我們下載瞭Oracle的驅動程序jar包想給其他項目組使用,就需要上傳該jar包。選中宿主庫——3rd party,之後選擇Artifact Upload上傳至宿主空間。
上傳成功後,可以看到如下效果