私服是什么
私服,私有服務(wù)器,是公司內(nèi)部Maven項目經(jīng)常需要的東東,不總結(jié)一下,不足以體現(xiàn)出重視。Nexus是常用的私用Maven服務(wù)器,一般是公司內(nèi)部使用。下載地址是http://www.sonatype.org/nexus/go。默認(rèn)端口8081,這里我選擇最新版nexus-2.5.0-04。
常用功能
Nexus常用功能就是:指定私服的中央地址、將自己的Maven項目指定到私服地址、從私服下載中央庫的項目索引、從私服倉庫下載依賴組件、將第三方項目jar上傳到私服供其他項目組使用。
開啟Nexus服務(wù)后訪問url地址http://localhost:8081/nexus/(推薦使用自己的ip地址),之后登錄系統(tǒng),用戶名密碼分別是:admin/admin123.
最頻繁的就是點擊左側(cè)菜單欄的Repositories按鈕

一般用到的倉庫種類是hosted、proxy。Hosted代表宿主倉庫,用來發(fā)布一些第三方不允許的組件,比如oracle驅(qū)動、比如商業(yè)軟件jar包。Proxy代表代理遠(yuǎn)程的倉庫,最典型的就是Maven官方中央倉庫、JBoss倉庫等等。如果構(gòu)建的Maven項目本地倉庫沒有依賴包,那么就會去這個代理站點去下載,那么如果代理站點也沒有此依賴包,就回去遠(yuǎn)程中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功后再下載至本機。筆者認(rèn)為,其實Maven這個自帶的默認(rèn)倉庫一般情況下已經(jīng)夠大多數(shù)項目使用了。特殊情況時在配置新的倉庫,指定url即可,一般熟悉ExtJS的人操作這個Nexus都沒什么問題,單詞不是很難,不明白的查查單詞基本差不多。就是如果Sonatype公司對其做了國際化一的處理就更好了。
hosted 類型的倉庫,內(nèi)部項目的發(fā)布倉庫
releases 內(nèi)部的模塊中release模塊的發(fā)布倉庫
snapshots 發(fā)布內(nèi)部的SNAPSHOT模塊的倉庫
3rd party 第三方依賴的倉庫,這個數(shù)據(jù)通常是由內(nèi)部人員自行下載之后發(fā)布上去
proxy 類型的倉庫,從遠(yuǎn)程中央倉庫中尋找數(shù)據(jù)的倉庫
group 類型的倉庫,組倉庫用來方便我們開發(fā)人員進(jìn)行設(shè)置的倉庫
maven項目索引
下載Maven項目索引,項目索引是為了使用者能夠在私服站點查找依賴使用的功能
保存后后臺會運行一個任務(wù),點擊菜單欄的Scheduled Tasks選項即可看到有個任務(wù)在RUNNING。 下載完成后,Maven索引就可以使用了,在搜索欄輸入要搜索的項,就可以查到相關(guān)的信息。例如spring-core

就可以檢索出它的相關(guān)信息,包括怎么配置依賴信息。我們要想使用這個私服倉庫,先在項目pom中配置相關(guān)私服信息
指定倉庫
- <repositories>
- <repository>
- <id>nexus</id>
- <name>nexus</name>
- <url>http://192.168.1.103: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://192.168.1.103:8081/nexus/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
這樣只有本項目才在私服下載組件
這樣這個Maven項目構(gòu)建的時候會從私服下載相關(guān)依賴。當(dāng)然這個配置僅僅是在此項目中生效,對于其他項目還是不起作用。如果相對Maven的其他項目也生效的話。需要修改全局的settings.xml文件。
修改settings.xml為

追加激活profile
- <activeProfiles>
- <activeProfile>central</activeProfile>
-
- </activeProfiles>
之后所有本機的Maven項目就在私服下載組件。(這樣比較好)
項目的發(fā)布
- <distributionManagement>
- <repository>
- <id>user-release</id>
- <name>User Project Release</name>
- <url>http://192.168.1.103:8081/nexus/content/repositories/releases/</url>
- </repository>
-
- <snapshotRepository>
- <id>user-snapshots</id>
- <name>User Project SNAPSHOTS</name>
- <url>http://192.168.1.103:8081/nexus/content/repositories/snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
注意配置了還是發(fā)布項目到私服失敗,原因為沒有權(quán)限
配置權(quán)限在settings.xml
然后運行發(fā)布
clean deploy
在控制臺發(fā)布成功
然后進(jìn)入到私服上的倉庫中,看一下確實存在剛剛發(fā)布的項目
宿主庫——3rd party
假如我們下載了Oracle的驅(qū)動程序jar包想給其他項目組使用,就需要上傳該jar包。選中宿主庫——3rd party,之后選擇Artifact Upload上傳至宿主空間。
最后點擊上傳