設定預設先從nexus查詢jar包
Nexus裡面的工廠有4種類別:
(1)group型別:把多個工廠類別加到一個工廠類別中
(2)hosted型別:hoseted型別工廠是服務於區域網的。當我們對專案執行mvn:deploy命令時,會把專案進行打包上傳到hosted型別工廠(倉庫)中。
這裡稍微說明一下mvn:install和mvn:deploy命令的區別:mvn:install是把專案打包上傳到本地倉庫中,而mvn:deploy命令則是把專案打包上傳到nexus的hosted對應的工廠(倉庫)中。hoseted包含三個工廠:Snapshots、Releases、3rd party。
Snapshots:比如有個A專案,版本是0.0.1-SNAPSHOTS:
- <groupId>com.carlo</groupId>
- <artifactId>xxx_service</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
Releases:比如有個B專案,版本是0.0.1-RELEASES:
-
<groupId>
- <artifactId>xxx_core</artifactId>
- <version>0.0.1-RELEASES</version>
- <packaging>jar</packaging>
3rd party:一般情況下,我們都是去maven的中央倉庫下載依賴包,但是maven中央倉庫中可能不存在某些jar包。這個時候我們就要去這些jar包的官方網站進行下載。對於這些jar包,怎麼給maven進行管理呢?hosted型別裡提供了3rd party這個工廠(倉庫)。當我們把這些jar包都上傳到3rd party這個工廠後,在專案的pom.xml聲明瞭jar包資訊,就會自動的到這裡來下載對應的依賴包啦。
同時,在nexus管理介面裡,我們發現,只有3rd party才有Artifact Upload(上傳jar包)的選項。我們來操作一下:
點選“Upload Artifact(s) ”,上傳jar包到3rd party工廠(倉庫)中。接著我們點選“Browse Storage”進行檢視上傳的jar包:
(3)proxy型別:當我們在專案的pom.xml聲明瞭某個jar包的時候,會從本地倉庫查詢,如果沒有,就會去區域網共享倉庫(nexus)中找,再找不到的話,區域網共享倉庫(nexus)就會和maven中央倉庫打交道,從maven中央倉庫中下載對應的jar包,會存放到proxy型別的Central工廠(倉庫)裡,然後再提交到使用者本地倉庫中。
proxy型別的工廠還包括:Apache Snapshots 和 Codehaus Snapshots,其中Apache Snapshots工廠專門來存放從apache下載下來的Snapshots版本的開發包;相同的, Codehaus Snapshots工廠專門來存放從Codehaus 下載下來的Snapshots版本的開發包。
(4)virtual型別:這種是maven1的,以後基本不會用到或者很少會用到,所以不用過多理會。
接下來我們來配置一下,怎麼配置從nexus裡下載依賴包。
通常情況下,我們會在專案的pom.xml裡使用<repositories>標籤來配置:
如上,每一個倉庫都要配置一次,太麻煩了。在前面的內容中,我們有提到group型別的工廠,該型別的工廠包含了3rd party、Central、Relases、Snapshots這幾個工廠,所以這裡我們的配置可以簡化為:
配置好了,我們來測試一下。看看是否是從nexus下載依賴到本次倉庫(流程是:先從本地倉庫找,本地倉庫找不到,則去nexus的group型別工廠【即3rd party、Central、Relases、Snapshots這幾個工廠】裡查詢,找不到的話,會去maven的中央倉庫中下載到nexus中,然後把依賴提交到本地倉庫)。
新增struts2-core依賴包到pom.xml中:
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>2.3.24.1</version>
- </dependency>
通過上圖的比較,說明配置沒問題,jar包都是先從maven中央倉庫下載到nexus倉庫中,然後再提交到本地倉庫。
以上就是nexus的一些工廠型別介紹以及簡單配置;接下來的文章裡,會再進一步詳細講解nexus的配置問題。