1:Nexus(maven私服)作用
是種特殊的Maven倉庫一般用於公司,比如三十個員工開發一個項目,需要每個人都聯網去下載jar,每個人都很痛苦。此時公司可以搭建一個私服,讓其中一人去私服下載jar,這樣私服中就緩存了那些jar包,其他人在下載的時候就無需重新從遠程倉庫下載了,直接從私服緩存的地方拿下來即可。還有一種情況,當某個開發人員封裝好某個工具jar以後,可以直接上傳到私服,其餘的開發人員可以直接緩存下來用。
2:安裝
1:這是nexus的官網地址,https://www.sonatype.com/download-nexus-repo-oss?submissionGuid=e225567e-4323-4049-870c-478afc2a7bfe 。測試過了,表示根本無法下載,不知道是我網速原因還是因爲外網的關係,我也是在網上找別的兄弟上傳的資源:https://pan.baidu.com/s/1U-ehXu0YHGvsF3gbKBOrUg 提取碼:x2N9 。
2:下載到本地後,解壓後如圖:
根據自己的系統選擇相應的版本運行,運行install-nexus.bat 在系統中註冊服務,註冊後可以通過start-nexus.bat/stop-nexus.bat 開啓服務和關閉服務。也可以在系統服務中開啓關閉服務
啓動成功後打開瀏覽器輸入:http://localhost:8081/nexus 默認賬號和密碼:用戶名:admin 密碼:admin123
3:使用教程
1:如果是內網開發,那麼需要給nexus設置代理,在Administration-->Server中進行配置 :
:
2:如果可以訪問外網,跳過上面一步。下一步:配置repository
3:nexus裏可以配置3種類型的倉庫,分別是proxy、hosted、group
proxy是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫下載,然後返回給用戶,相當於起到一箇中轉的作用 。
hosted是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted裏。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted裏。
group是倉庫組,在maven裏沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要在pom中配置多個地址,只要統一配置group的地址就可以了 。
4:配置Central Repository的proxy
最關鍵的一個配置,可能就是Central Repository的proxy配置,因爲大部分的構件,都是要通過這個proxy得到的
在安裝完nexus之後,這個proxy是預置的,需要做的就是把Download Remote Indexes改爲true,這樣nexus纔會從central repository下載索引,才能在nexus中使用artifact search的功能 。
網絡上有一些其他公開的maven倉庫,可以用同樣的辦法,在nexus中設置proxy,但是並不是所有maven倉庫,都提供了nexus index,這種情況下,就無法建立索引了 。
5:配置hosted repository
一般會配置3個hosted repository,分別是3rd party、Snapshots、Releases,分別用來保存第三方jar(典型的比如ojdbc6.jar),項目組內部的快照、項目組內部的發佈版
這裏並沒有什麼特別的配置,只是Deployment Policy這個選項,一般Snapshots會配置成允許,而Releases和3rd party會設置爲禁止 。
6:配置group repository
前面說過,group其實是一個虛擬的倉庫,通過對實體倉庫(proxy、hosted)進行聚合,對外暴露一個統一的地址
這裏要注意的是,放到左邊的倉庫,纔是會被聚合的倉庫。我昨天一直搞錯了,把倉庫都放到右邊,結果group什麼都沒有聚合到,是一個空的倉庫。。。
7:配置用戶密碼
在Security-->Users中配置,在deployment用戶上點擊右鍵,選擇Set Password,然後設置一個密碼,做這個操作是爲了後面提交做準備
8:在用戶機器上配置settings.xml
經過前面的7個步驟,nexus就配置好了,接下來需要在每個開發人員的開發機器上進行配置了 。去你的maven倉庫中conf文件夾下的setting文件增加server、mirror兩塊代碼即可
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deployment</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>