我們知道,Maven 中央倉庫為用戶提供了多達(dá)數(shù)十萬構(gòu)件,而 Nexus 可以代理所有的遠(yuǎn)程倉庫(包括 Maven 中央倉庫),可見 Nexus 倉庫中構(gòu)件的數(shù)量相當(dāng)龐大。用戶想要在這么多構(gòu)件中,快速的查找自己所需的構(gòu)件,一個最直接有效的方式就是:搜索。
Nexus 作為一款成熟的倉庫管理工具,它通過維護(hù)倉庫的索引提供了構(gòu)件搜索功能,以便幫助用戶方便快速地找到所需構(gòu)件。
本節(jié)我們將詳細(xì)為您介紹 Nexus 索引以及構(gòu)件搜索功能。
Nexus 能夠遍歷倉庫的所有內(nèi)容,搜集它們的坐標(biāo),校驗和以及所包含的 Java 類等信息,然后以索引( nexus-indexer) 的形式保存起來。Nexus 索引保存在 Nexus 安裝目錄下 \sonatype-work\nexus\indexer 目錄中,該目錄下每個子目錄都代表 Nexus 中的一個倉庫,用來存放各個倉庫的索引 ,如下圖所示。
大多數(shù)的遠(yuǎn)程公共倉庫(例如,中央倉庫)都維護(hù)了一個這樣的索引,因此本地的 Nexus 在下載到這個索引后,就能在此基礎(chǔ)上為用戶提供構(gòu)件搜索和瀏覽等服務(wù)。需要注意的是,并不是所有的公共倉庫都提供了索引 ,對于那些沒有提供索引的倉庫來說,我們是無法對其進(jìn)行搜索的。
Nexus 索引下載功能默認(rèn)是關(guān)閉的,如果想在 Nexus 中搜索遠(yuǎn)程倉庫中的構(gòu)件,就需要先開啟索引下載功能。
以 bianchengbang_central_proxy 代理倉庫(代理 Maven 中央倉庫)為例,在圖 2 所示的位置就可以控制它的索引下載功能,true 表示開啟索引下載,false 表示關(guān)閉索引下載。
開啟索引下載功能后,點擊導(dǎo)航欄中 Scheduled Tasks 鏈接,查看調(diào)度任務(wù)列表。若 Nexus 正在下載索引,我們就能看到如圖 3 所示的任務(wù),其任務(wù)狀態(tài)為 Running。在索引下載完畢后,該任務(wù)就會消失。
由于 Maven 中央倉庫的內(nèi)容較多,其索引文件比較大,因此 Nexus 下載該文件所需的時間較長,需要我們耐心等待。
索引下載完成后,點擊倉庫列表中的 bianchengbang_central_proxy 代理倉庫,然后在列表下方選擇 Browse Index 選項卡,我們可以看到該倉庫內(nèi)容的樹形結(jié)構(gòu),如圖 4 所示。
Nexus 通過維護(hù)索引,為用戶提供了關(guān)鍵字搜索、類名搜索、坐標(biāo)搜索等多種搜索功能,通過這些功能,頁面中能夠清晰地展示出結(jié)果構(gòu)件的坐標(biāo)以及所屬倉庫。用戶可以直接下載相應(yīng)的構(gòu)件,也可以直接復(fù)制構(gòu)件的 XML 依賴聲明,到項目中使用。
在 Nexus 界面左邊導(dǎo)航欄中有一個搜索框,在搜索框內(nèi)輸入所需構(gòu)件的關(guān)鍵字,單擊搜索按鈕就能快速得到搜索結(jié)果,如圖 5 所示。
搜索結(jié)果頁中的每一行代表一類構(gòu)件,其中包含了 Group、Artifact、版本、流行版本、以及下載鏈接等信息。點擊其中某一行,下方就會出現(xiàn)該構(gòu)件的詳細(xì)信息,其中不但包含構(gòu)件的坐標(biāo)等基本信息,還包含一段 XML 依賴聲明,我們可以將這段 XML 依賴聲明直接復(fù)制到項目的 POM 中使用,如圖 6 所示。
點擊右側(cè)的 Artifact 選項卡,還能看到構(gòu)件的大小、上傳時間、最后修改時間、倉庫中的相對位置、校驗和等信息,如圖 7 所示。
除了關(guān)鍵字搜索外,Nexus 還提供了一些高級搜索功能,例如類名搜索、GAV 搜索以及“校驗和”搜索。我們可以通過點擊搜索頁左上角的下拉菜單,選擇高級搜索功能。
Nexus 還具有以下高級搜索功能:
類名搜索(Keyword Search):搜索包含某個 Java 類的構(gòu)件。
GAV 搜索(GAV Search):通過設(shè)置 Group、Artifact、版本等信息進(jìn)行搜索。
校驗和搜索(Checksum Search):通過使用“校驗和”搜索構(gòu)件。
這些搜索功能的使用都十分的簡單,我們可以根據(jù)自己的需求選擇合適的搜索功能。