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

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

就可以檢索出它的相關信息,包括怎么配置依賴信息。我們要想使用這個私服倉庫,先在項目pom中配置相關私服信息
指定倉庫
- <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項目構建的時候會從私服下載相關依賴。當然這個配置僅僅是在此項目中生效,對于其他項目還是不起作用。如果相對Maven的其他項目也生效的話。需要修改全局的settings.xml文件。
修改settings.xml為

追加激活profile
- <activeProfiles>
- <activeProfile>central</activeProfile>
-
- </activeProfiles>
之后所有本機的Maven項目就在私服下載組件。(這樣比較好)
項目的發布
- <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>
注意配置了還是發布項目到私服失敗,原因為沒有權限
配置權限在settings.xml
然后運行發布
clean deploy
在控制臺發布成功
然后進入到私服上的倉庫中,看一下確實存在剛剛發布的項目
宿主庫——3rd party
假如我們下載了Oracle的驅動程序jar包想給其他項目組使用,就需要上傳該jar包。選中宿主庫——3rd party,之后選擇Artifact Upload上傳至宿主空間。
最后點擊上傳