欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Maven使用Nexus創(chuàng)建私服的實現(xiàn)

 更新時間:2024年04月12日 09:53:09   作者:布道師小羊  
本文主要介紹了Maven使用Nexus創(chuàng)建私服的實現(xiàn),通過建立自己的私服,就可以降低中央倉庫負荷、節(jié)省外網(wǎng)帶寬、加速Maven構(gòu)建、自己部署構(gòu)件等,從而高效地使用Maven,感興趣的可以了解一下

私服不是Maven的核心概念,它僅僅是一種衍生出來的特殊的Maven倉庫。通過建立自己的私服,就可以降低中央倉庫負荷、節(jié)省外網(wǎng)帶寬、加速Maven構(gòu)建、自己部署構(gòu)件等,從而高效地使用Maven。

在這里插入圖片描述

有三種專門的Maven倉庫管理軟件可以用來幫助大家建立私服:Apache基金會的Archiva、JFrog的Artifactory和Sonatype的Nexus。其中,Archiva是開源的,而Artifactory和Nexus的核心也是開源的,因此我們可以自由選擇使用。事實上,Nexus也是當前最流行的Maven倉庫管理軟件。

紹Nexus的主要功能,并結(jié)合大量圖片幫助大家快速地建立起自己的Maven私服。

1、Nexus簡介

2005年12月,Tamas Cservenak由于受不了匈牙利電信ADSL的低速度,開始著手開發(fā)Proximity——一個很簡單的Web應(yīng)用。它可以代理并緩存Maven構(gòu)件,當Maven需要下載構(gòu)件的時候,就不需要反復依賴于ADSL。到2007年,Sonatype邀請Tamas參與創(chuàng)建一個更酷的Maven倉庫管理軟件,這就是后來的Nexus。

Nexus團隊的成員來自世界各地,它也從社區(qū)收到了大量反饋和幫助,在寫本書的時候,Nexus剛發(fā)布1.7.2版本,它也正健康快速地成長著。

Nexus分為開源版和專業(yè)版,其中開源版本基于GPLv3許可證,其特性足以滿足大部分Maven用戶的需要。以下是一些Nexus開源版本的特性:

  • 較小的內(nèi)存占用(最少僅為28MB)
  • 基于ExtJS的友好界面
  • 基于Restlet的完全REST API支持代理倉庫、宿主倉庫和倉庫組
  • 基于文件系統(tǒng),不需要數(shù)據(jù)庫
  • 支持倉庫索引和搜索
  • 支持從界面上傳Maven構(gòu)件
  • 細粒度的安全控制

Nexus專業(yè)版本是需要付費購買的,除了開源版本的所有特性之外,它主要包含一些企業(yè)安全控制、發(fā)布流程控制等需要的特性。感興趣的可以訪問該地址了解詳情:http://www.sonatype.com/products/nexus/community

2、安裝Nexus

Nexus是典型的Java Web應(yīng)用,它有兩種安裝包,一種是包含Jetty容器的Bundle包,另一種是不包含Web容器的war包。

2.1、下載Nexus

下載地址:https://download.sonatype.com/nexus

然后將下載的文件上傳到 Linux 系統(tǒng)(我用的系統(tǒng)版本是CentOS7),解壓后即可使用,不需要安裝(這里我放在/opt/nexus目錄下)。

在這里插入圖片描述

需要注意:Linux 必須提前安裝 JDK。

2.2、啟動Nexus

通過以下命令啟動:

# 啟動
/opt/nexus/nexus-3.61.0-02/bin/nexus start
# 查看狀態(tài)
/opt/nexus/nexus-3.61.0-02/bin/nexus status
#停止
/opt/nexus/nexus-3.61.0-02/bin/nexus stop

當看到nexus is running的時候說明項目已經(jīng)啟動了,默認端口號是8081。如果提示nexus is stopped則說明端口被占用了,我們可以更改nexus的默認端口號。其配置在 /opt/nexus/nexus-3.61.0-02/etc目錄下的nexus-default.properties 里面,這里我改成了8090。

在這里插入圖片描述

接下來就可以啟動訪問了:

http://[Linux 服務(wù)器地址]:8090/ 

ps:這里需要說明一下,如果Nexus顯示已經(jīng)啟動了,但是訪問不到,有可能是端口的對外防火墻沒有打開。

開啟防火墻的步驟為:

#首先,確保firewalld已經(jīng)啟動:
sudo systemctl start firewalld
#確保firewalld被設(shè)置為開機啟動:
sudo systemctl enable firewalld
#使用firewall-cmd打開一個端口。例如,要打開TCP的8090端口:
sudo firewall-cmd --zone=public --add-port=8090/tcp --permanent
#重新加載防火墻以使更改生效:
sudo firewall-cmd --reload
#如果需要,你也可以驗證端口是否已經(jīng)開放:
sudo firewall-cmd --zone=public --list-ports

Nexus首頁如下,第一次需要登錄,然后修改初始密碼。

用戶名:admin
初始密碼:在/opt/nexus/sonatype-work/nexus3/admin.password 文件里

在這里插入圖片描述

3、Nexus的倉庫與倉庫組

作為Maven倉庫服務(wù)軟件,倉庫自然是Nexus中最重要的概念。Nexus包含了各種類型的倉庫概念,包括代理倉庫、宿主倉庫和倉庫組等。每一種倉庫都提供了豐富實用的配置參數(shù),方便用戶根據(jù)需要進行定制。

3.1、Nexus內(nèi)置的倉庫

在具體介紹每一種類型的倉庫之前,先瀏覽一下Nexus內(nèi)置的一些倉庫。單擊Nexus界面左邊導航欄中的Repositories鏈接,就能在界面右邊看到如下圖所示的內(nèi)容:

在這里插入圖片描述

這個列表已經(jīng)包含了所有類型的Nexus倉庫。從中可以看到倉庫有四種類型:group(倉庫組)、hosted(宿主)、proxy(代理)和virtual(虛擬):

倉庫類型說明
proxy某個遠程倉庫的代理
group存放:通過 Nexus 獲取的第三方 jar 包
hosted存放:本團隊其他開發(fā)人員部署到 Nexus 的 jar 包

每個倉庫的格式為maven2或者maven1。此外,倉庫還有一個屬性為Policy(策略),表示該倉庫為發(fā)布(Release)版本倉庫還是快照(Snapshot)版本倉庫。最后兩列的值為倉庫的狀態(tài)和路徑。

下面解釋一下各個倉庫的用途:

倉庫名稱說明
maven-centralNexus 對 Maven 中央倉庫的代理,其策略為Release,因此只會下載和緩存中央倉庫中的發(fā)布版本構(gòu)件。
maven-publicNexus 默認創(chuàng)建,供開發(fā)人員下載使用的組倉庫
maven-releasseNexus 默認創(chuàng)建,供開發(fā)人員部署自己 jar 包的宿主倉庫,要求 releasse 版本
maven-snapshotsNexus 默認創(chuàng)建,供開發(fā)人員部署自己 jar 包的宿主倉庫,要求 snapshots 版本

其中 maven-public 相當于倉庫總和,默認把其他 3 個倉庫加進來一起對外提供服務(wù)了,另外,如果有自己建的倉庫,也要加進該倉庫才有用。

3.2、Nexus倉庫分類的概念

為了幫助大家理解宿主倉庫、代理倉庫和倉庫組的概念,下圖用更為直觀的方式展現(xiàn)了它們的用途和區(qū)別:

在這里插入圖片描述

從上圖中可以看到,Maven可以直接從宿主倉庫下載構(gòu)件;Maven也可以從代理倉庫下載構(gòu)件,而代理倉庫會間接地從遠程倉庫下載并緩存構(gòu)件;最后,為了方便,Maven可以從倉庫組下載構(gòu)件,而倉庫組沒有實際內(nèi)容(圖中用虛線表示),它會轉(zhuǎn)向其包含的宿主倉庫或者代理倉庫獲得實際構(gòu)件的內(nèi)容。

3.3、創(chuàng)建倉庫

初始狀態(tài)下,這幾個倉庫都沒有內(nèi)容:

在這里插入圖片描述

除了自帶的倉庫,有時候我們需要單獨創(chuàng)建自己的倉庫,按照默認創(chuàng)建的倉庫類型來創(chuàng)建我們自己的倉庫。

點擊Create Repository:

在這里插入圖片描述

選擇如下三種類型的倉庫:

在這里插入圖片描述

1、創(chuàng)建Nexus宿主倉庫

在這里插入圖片描述

2、創(chuàng)建Nexus代理倉庫

輸入倉庫名以及被代理倉庫的URL,這里我輸入阿里云的倉庫地址,默認為中央倉庫。

在這里插入圖片描述

3、創(chuàng)建Nexus倉庫組

配置中的ID、Name等信息這里不再贅述。需要注意的是,倉庫組沒有Release和Snapshot的區(qū)別,這不同于宿主倉庫和代理倉庫。在配置界面中,用戶可以非常直觀地選擇Nexus中的倉庫,將其聚合成一個虛擬的倉庫組。注意,倉庫組所包含的倉庫的順序決定了倉庫組遍歷其所含倉庫的次序,因此最好將常用的倉庫放在前面,當用戶從倉庫組下載構(gòu)件的時候,就能夠盡快地訪問到包含構(gòu)件的倉庫。

在這里插入圖片描述

上面的倉庫創(chuàng)建好之后就可以在首頁看到了:

在這里插入圖片描述

4、Nexus的索引與構(gòu)件搜索

既然Nexus能夠維護宿主倉庫并代理緩存遠程倉庫(如Maven中央庫),那么一個簡單的需求就自然浮現(xiàn)出來了,這就是搜索。Maven中央庫有幾十萬構(gòu)件供用戶使用,但有時我們往往僅僅知道某個關(guān)鍵字,如Ehcache,而不知道其確切的Maven坐標。Nexus通過維護倉庫的索引來提供搜索功能,能在很大程度上方便Maven用戶定位構(gòu)件坐標。

Sonatype提供的在線免費搜索服務(wù),其實用戶可以很方便地自己維護一個Nexus實例,并提供搜索服務(wù)。

為了能夠搜索Maven中央庫,首先需要設(shè)置Nexus中的Maven Central代理倉庫下載遠程索引,如下圖所示。需要注意的是,默認這個配置的值是關(guān)閉的。此外,由于中央庫的內(nèi)容比較多,因此其索引文件比較大,Nexus下載該文件也需要比較長的時間,大家還需要耐心等待。

在這里插入圖片描述

可以想象到,Nexus在后臺運行了一個任務(wù)來下載中央倉庫的索引,幸運的是,用戶可以通過界面直接觀察這一任務(wù)的狀態(tài)。單擊界面左邊導航欄中的Scheduled Tasks鏈接后,用戶就能在界面的右邊看到系統(tǒng)的調(diào)度任務(wù),如果Nexus正在下載中央倉庫的索引,用戶就能看到下圖所示的一個任務(wù),其狀態(tài)為RUNNING。在索引下載完畢之后,該任務(wù)就會消失。

在這里插入圖片描述

有了索引,用戶即可搜索Maven構(gòu)件了。Nexus界面左邊導航欄有一個快捷搜索框,在其中輸入關(guān)鍵字后,單擊搜索按鈕就能快速得到搜索結(jié)果,如下圖所示:

在這里插入圖片描述

除了簡單的關(guān)鍵字搜索,Nexus還提供了GAV搜索、類名搜索和校驗和搜索等功能,用戶可以單擊搜索頁面左上角的下拉菜單選擇高級搜索功能:

  • GAV搜索(GAV Search)允許用戶通過設(shè)置GroupId、ArtifactId和Version等信息來進行更有針對性的搜索。
  • 類名搜索(Classname Search)允許用戶搜索包含某個Java類的構(gòu)件。
  • 校驗和搜索(Checksum Search)允許用戶直接使用構(gòu)件的校驗和來搜索該構(gòu)件。

當然,用戶也可以自己手動輸入GroupId、ArtifactId等信息來進行GAV搜索。

在這里插入圖片描述

有了中央倉庫的索引,用戶不僅能夠搜索構(gòu)件,還能夠直接瀏覽中央倉庫的內(nèi)容。這便是Nexus的索引瀏覽功能。在Repositories頁面中,選擇Browse Index選項卡,就能看到中央倉庫內(nèi)容的樹形結(jié)構(gòu),如下圖所示:

在這里插入圖片描述

5、配置Maven從Nexus下載構(gòu)件

在POM中為Maven配置倉庫和插件倉庫。例如,當需要為項目添加Nexus私服上的public倉庫時,可以按代碼清單如下所示配置,在POM中配置Nexus倉庫:

<project>
……
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost: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://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
……
</project>

這樣的配置只對當前Maven項目有效,在實際應(yīng)用中,我們往往想要通過一次配置就能讓本機所有的Maven項目都使用自己的Maven私服。這個時候大家可能會想到settings.xml文件,該文件中的配置對所有本機Maven項目有效,但是settings.xml并不支持直接配置repositories和pluginRepositories。所幸Maven還提供了Profile機制,能讓用戶將倉庫配置放到setting.xml中的Profile中,如代碼清單如下所示:

在settings.xml中配置Nexus倉庫:

<settings>
……
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost: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://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
……</settings>

該配置中使用了一個id為nexus的profile,這個profile包含了相關(guān)的倉庫配置,同時配置中又使用activeProfile元素將nexus這個profile激活,這樣當執(zhí)行Maven構(gòu)建的時候,激活的profile會將倉庫配置應(yīng)用到項目中去。

上面代碼清單中的配置已經(jīng)能讓本機所有的Maven項目從Nexus私服下載構(gòu)件。細心的人可能會注意到,Maven除了從Nexus下載構(gòu)件之外,還會不時地訪問中央倉庫central,我們希望的是所有Maven下載請求都僅僅通過Nexus,以全面發(fā)揮私服的作用。這個時候就需要借助于Maven鏡像配置了??梢詣?chuàng)建一個匹配任何倉庫的鏡像,鏡像的地址為私服,這樣,Maven對任何倉庫的構(gòu)件下載請求都會轉(zhuǎn)到私服中。具體配置見代碼清單如下所示,配置鏡像讓Maven只使用私服:

<settings>
……<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases><snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
……
</settings>

關(guān)于鏡像、profile及profile激活的配置不再贅述,這里需要解釋的是倉庫及插件倉庫配置,它們的id都為central,也就是說,覆蓋了超級POM中央倉庫的配置,它們的url已無關(guān)緊要,因為所有請求都會通過鏡像訪問私服地址。配置倉庫及插件倉庫的主要目的是開啟對快照版本下載的支持,當Maven需要下載發(fā)布版或快照版構(gòu)件的時候,它首先檢查central,看該類型的構(gòu)件是否支持,得到正面的回答之后,再根據(jù)鏡像匹配規(guī)則轉(zhuǎn)而訪問私服倉庫地址。

6、部署構(gòu)件至Nexus

如果只為代理外部公共倉庫,那么Nexus的代理倉庫就已經(jīng)能夠完全滿足需要了。對于另一類Nexus倉庫——宿主倉庫來說,它們的主要作用是儲存組織內(nèi)部的,或者一些無法從公共倉庫中獲得的第三方構(gòu)件,供大家下載使用。用戶可以配置Maven自動部署構(gòu)件至Nexus的宿主倉庫,也可以通過界面手動上傳構(gòu)件。

6.1、使用Maven部署構(gòu)件至Nexus

日常開發(fā)生成的快照版本構(gòu)件可以直接部署到Nexus中策略為Snapshot的宿主倉庫中,項目正式發(fā)布的構(gòu)件則應(yīng)該部署到Nexus中策略為Release的宿主倉庫中。POM的配置方式,下面的代碼清單列出了一段典型的配置,配置Maven部署構(gòu)件至Nexus:

<project>
……
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releases Repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
……
</project>

Nexus的倉庫對于匿名用戶是只讀的。為了能夠部署構(gòu)件,還需要在settings.xml中配置認證信息,如代碼清單如下所示:

<settings>
……
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>*****</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>*****</password>
</server></servers>
……
</settings>

6.2、手動部署第三方構(gòu)件至Nexus

某些Java Jar文件(如Oracle)的JDBC驅(qū)動,由于許可證的因素,它們無法公開地放在公共倉庫中。此外,還有大量的小型開源項目,它們沒有把自己的構(gòu)件分發(fā)到中央倉庫中,也沒有維護自己的倉庫,因此也無法從公共倉庫獲得。這個時候用戶就需要將這類構(gòu)件手動下載到本地,然后通過Nexus的界面上傳到私服中。

要上傳第三方構(gòu)件,首先選擇一個宿主倉庫如3rd party,然后在頁面的下方選擇Artifact Upload選項卡。在上傳構(gòu)件的時候,Nexus要求用戶確定其Maven坐標,如果該構(gòu)件是通過Maven構(gòu)建的,那么可以在GAV Definition下拉列表中選擇From POM,否則就選GAV Parameters。用戶需要為該構(gòu)件定義一個Maven坐標,例如上傳一個Oracle 11g的JDBC驅(qū)動,則可以按下圖所示輸入坐標:

在這里插入圖片描述

定義好坐標之后,單擊Select Artifact(s)to Upload按扭從本機選擇要上傳的構(gòu)件,然后單擊Add Artifact按鈕將其加入到上傳列表中。Nexus允許用戶一次上傳一個主構(gòu)件和多個附屬構(gòu)件(即Classifier)。最后,單擊頁面最下方的Upload Artifact(s)按鈕將構(gòu)件上傳到倉庫中。

7、Nexus的權(quán)限管理

在組織中使用Nexus的時候往往會有一些安全性需求,例如希望只有管理員才能配置Nexus,只有某些團隊成員才能部署構(gòu)件,或者更細一些的要求,例如每個項目都有自己的Nexus宿主倉庫,且只能部署項目構(gòu)件至該倉庫中。Nexus提供了全面的權(quán)限控制特性,能讓用戶自由地根據(jù)需要配置Nexus用戶、角色、權(quán)限等。

7.1、Nexus的訪問控制模型

Nexus是基于權(quán)限(Privilege)做訪問控制的,服務(wù)器的每一個資源都有相應(yīng)的權(quán)限來控制,因此用戶執(zhí)行特定的操作時就必須擁有必要的權(quán)限。管理員必須以角色(Role)的方式將權(quán)限賦予Nexus用戶。例如要訪問Nexus界面,就必須擁有Status-(read)這個權(quán)限,而Nexus默認配置的角色UI:Basic UI Privileges就包含了這個權(quán)限,再將這個角色分配給某個用戶,這個用戶就能訪問Nexus界面了。

用戶可以被賦予一個或者多個角色,角色可以包含一個或者多個權(quán)限,角色還可以包含一個或者多個其他角色。

Nexus預定義了三個用戶,以admin登錄后,單擊頁面左邊導航欄中的User鏈接,就能看到所有已定義用戶的列表,如下圖所示:

在這里插入圖片描述

這三個用戶對應(yīng)了三個權(quán)限級別:

  • admin:該用戶擁有對Nexus服務(wù)的完全控制,默認密碼為admin123。
  • deployment:該用戶能夠訪問Nexus,瀏覽倉庫內(nèi)容,搜索,并且上傳部署構(gòu)件,但是無法對Nexus進行任何配置,默認密碼為deployment123。
  • anonymous:該用戶對應(yīng)了所有未登錄的匿名用戶,它們可以瀏覽倉庫并進行搜索。

理解各個角色的意義對于權(quán)限管理至關(guān)重要。Nexus預定義的一些常用且重要的角色包括:

  • UI:Basic UI Privileges:包含了訪問Nexus界面必須的最基本的權(quán)限。
  • UI:Repository Browser:包含了瀏覽倉庫頁面所需要的權(quán)限。
  • UI:Search:包含了訪問快速搜索欄及搜索頁面所需要的權(quán)限。
  • Repo:All Repositories(Read):給予用戶讀取所有倉庫內(nèi)容的權(quán)限,沒有倉庫的讀權(quán)限,用戶將無法在倉庫頁面上看到實際的倉庫內(nèi)容,也無法使用Maven從倉庫下載構(gòu)件。
  • Repo:All Repositories(Full Control):給予用戶完全控制所有倉庫內(nèi)容的權(quán)限。用戶不僅可以瀏覽、下載構(gòu)件,還可以部署構(gòu)件及刪除倉庫內(nèi)容。
  • Nexus包含了一個特殊的匿名用戶角色(Nexus Anonymous Role),默認配置下沒有登錄的用戶都會擁有該匿名角色的權(quán)限。這個匿名用戶角色實際包含了上述所列角色中,除Repo:All Repositories(Full Control)之外的所有角色所包含的權(quán)限。也就是說,匿名用戶可以訪問基本的Nexus界面、瀏覽倉庫內(nèi)容及搜索構(gòu)件。

除上述角色之外,Nexus還預定義了很多其他角色,它們往往都對應(yīng)了一個Nexus的功能。例如,UI:Logs and Config Files包含了訪問系統(tǒng)日志文件及配置文件所需要的權(quán)限。

7.2、為項目分配獨立的倉庫

在組織內(nèi)部,如果所有項目都部署快照及發(fā)布版構(gòu)件至同樣的倉庫,就會存在潛在的沖突及安全問題,我們不想讓項目A的部署影響到項目B,反之亦然。解決的方法就是為每個項目分配獨立的倉庫,并且只將倉庫的部署、修改和刪除權(quán)限賦予該項目的成員,其他用戶只能讀取、下載和搜索該倉庫的內(nèi)容。

假設(shè)項目名稱為foo,首先為該項目建立兩個宿主倉庫Foo Snapshots和Foo Releases,分別用來部署快照構(gòu)件和發(fā)布構(gòu)件。

在這里插入圖片描述

有了倉庫之后,就需要創(chuàng)建基于倉庫的增、刪、改、查權(quán)限。在Nexus中,這樣的權(quán)限是基于Repository Target建立的,Repository Target實際上是一系列正則表達式,在訪問倉庫某路徑下內(nèi)容的時候,Nexus會將倉庫路徑與Repository Target的正則表達式一一匹配,以檢查權(quán)限是否正確。

單擊左邊導航欄中的Repository Targets鏈接,就能看到下圖所示的頁面。圖中選中了All(Maven2)這一Repository Target,在下方可以看到它包含了一個值為“.*”的正則表達式,表示該Repository Target能夠匹配倉庫下的任何路徑。

在這里插入圖片描述

下一步就是基于該Repository Target和Foo Releases、Foo Snapshots兩個倉庫建立權(quán)限。單擊頁面左邊導航欄中的Privileges鏈接進入權(quán)限頁面,然后單擊Add按鈕,選擇Repository Target Privilege。下圖所示為創(chuàng)建對應(yīng)于Foo Releases的權(quán)限。

在這里插入圖片描述

上圖中選擇了Foo Releases倉庫和All(Maven2),表示創(chuàng)建匹配Foo Releases倉庫任何路徑的權(quán)限。單擊Save按鈕之后,就能在權(quán)限列表中看到相應(yīng)的增、刪、改、查權(quán)限,如下圖所示:

在這里插入圖片描述

然后,遵循同樣的步驟,為Foo Snapshots建立增、刪、改、查權(quán)限。

下一步是創(chuàng)建一個包含上述權(quán)限的角色。單擊導航欄中的Roles進入角色頁面,再單擊頁面上方的Add按鈕并選擇Nexus Role。下圖所示為將之前建立的權(quán)限加入到該角色中。

在這里插入圖片描述

角色創(chuàng)建完成之后,根據(jù)需要將其分配給Foo項目的團隊成員。這樣,其他團隊的成員默認只能讀取Foo Releases和Foo Snapshots的內(nèi)容,而擁有Foo Deployer角色的用戶就可以執(zhí)行部署構(gòu)件等操作。

8、Nexus的調(diào)度任務(wù)

Nexus提供了一系列可配置的調(diào)度任務(wù)來方便用戶管理系統(tǒng)。用戶可以設(shè)定這些任務(wù)運行的方式,例如每天、每周、手動等。調(diào)度任務(wù)會在適當?shù)臅r候在后臺運行。當然,用戶還是能夠在界面觀察它們的狀態(tài)的。

要建立一個調(diào)度任務(wù),單擊左邊導航欄中的Scheduled Tasks鏈接,然后在右邊的界面上方單擊Add按鈕,接著就能看到下圖所示的界面。用戶可以根據(jù)自己的需要,選擇任務(wù)類型,并配置其運行方式。

在這里插入圖片描述

Nexus包含了以下幾種類型的調(diào)度任務(wù):

  • Download Indexes:為代理倉庫下載遠程索引。
  • Empty Trash:清空Nexus的回收站,一些操作(如刪除倉庫文件)實際是將文件移到了回收站中。
  • Evict Unused Proxied Items From Repository Caches:刪除代理倉庫中長期未被使用的構(gòu)件緩存。
  • Expire Repository Caches:Nexus為代理倉庫維護了遠程倉庫的信息以避免不必要的網(wǎng)絡(luò)流量,該任務(wù)清空這些信息以強制Nexus去重新獲取遠程倉庫的信息。
  • Publish Indexes:將倉庫索引發(fā)布成可供m2eclipse和其他Nexus使用的格式。
  • Purge Nexus Timeline:刪除Nexus的時間線文件,該文件用于建立系統(tǒng)的RSS源。
  • Rebuild Maven Metadata Files:基于倉庫內(nèi)容重新創(chuàng)建倉庫元數(shù)據(jù)文件maven-meta-data.xml,同時重新創(chuàng)建每個文件的校驗和md5和sha1。
  • Reindex Repositories:為倉庫編纂索引。
  • Remove Snapshots From Repository:以可配置的方式刪除倉庫的快照構(gòu)件。
  • Synchronize Shadow Repository:同步虛擬倉庫的內(nèi)容(服務(wù)于Maven 1)。

9、其他私服軟件

Nexus不是唯一的Maven私服軟件,用戶還有另外兩個選擇,它們分別為Apache的Archiva與JFrog的Artifactory。

Archiva可能是歷史最長的Maven私服軟件,它早在2005年就作為Apache Maven的一個子項目存在,到2008年3月成為了Apache軟件基金會的頂級項目。

大家可以訪問http://archiva.apache.org以具體了解Archiva,其站點提供了一些入門指南及郵件列表等信息。Archiva的下載地址為http://archiva.apache.org/download.html。

10、總結(jié)

建立并維護自己的私服是使用Maven必不可少的一步,Maven私服軟件有Nexus、Archiva和Artifactory,它們都提供了開源的版本供用戶下載。我們詳細介紹了Nexus的安裝和使用,包括如何分辨各種類型的倉庫、如何建立倉庫索引和搜索構(gòu)件、如何使用權(quán)限管理功能、如何使用調(diào)度任務(wù)功能等。除了這些功能之外,Nexus還有很多有趣的特性,如RSS源、日志瀏覽及配置等,用戶可以從友好的界面中學習使用。

除了Nexus本身,我們還詳述了如何配置Maven從私服下載構(gòu)件,以及如何發(fā)布構(gòu)件至私服供他人使用。結(jié)合了Nexus的幫助之后,再使用Maven時就會如虎添翼。

到此這篇關(guān)于Maven使用Nexus創(chuàng)建私服的實現(xiàn)的文章就介紹到這了,更多相關(guān)Maven Nexus創(chuàng)建私服內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用?Spring?Boot?搭建?WebSocket?服務(wù)器實現(xiàn)多客戶端連接

    如何使用?Spring?Boot?搭建?WebSocket?服務(wù)器實現(xiàn)多客戶端連接

    本文介紹如何使用SpringBoot快速搭建WebSocket服務(wù)器,實現(xiàn)多客戶端連接和消息廣播,WebSocket協(xié)議提供全雙工通信,SpringBoot通過@ServerEndpoint簡化配置,支持實時消息推送,適用于聊天室或通知系統(tǒng)等應(yīng)用場景
    2024-11-11
  • 通過實例解析Spring Ioc項目實現(xiàn)過程

    通過實例解析Spring Ioc項目實現(xiàn)過程

    這篇文章主要介紹了Spring Ioc項目實踐過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 簡單了解Java程序運行整體流程

    簡單了解Java程序運行整體流程

    這篇文章主要介紹了簡單了解Java程序運行整體流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于Springboot+gateway整合依賴并處理依賴沖突問題

    關(guān)于Springboot+gateway整合依賴并處理依賴沖突問題

    這篇文章主要介紹了Springboot+gateway整合依賴并處理依賴沖突問題,給大家提到了spring boot版本和spring cloud版本,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • springboot接入mq的方法示例

    springboot接入mq的方法示例

    本文主要介紹了springboot接入mq的方法示例,主要實現(xiàn)配置以及實現(xiàn)一個簡單的發(fā)送、接收消息的例子,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java讀寫文件方法總結(jié)(推薦)

    Java讀寫文件方法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫ava讀寫文件方法總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • Java實現(xiàn)Executors類創(chuàng)建常見線程池

    Java實現(xiàn)Executors類創(chuàng)建常見線程池

    本文主要介紹了Java實現(xiàn)Executors類創(chuàng)建常見線程池,在Java中,可以通過Executors工廠類提供四種常見類型的線程池,下面就來介紹一下這四種的方法實現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 復雜JSON字符串轉(zhuǎn)換為Java嵌套對象的實現(xiàn)

    復雜JSON字符串轉(zhuǎn)換為Java嵌套對象的實現(xiàn)

    這篇文章主要介紹了復雜JSON字符串轉(zhuǎn)換為Java嵌套對象的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis 實現(xiàn)打印sql語句的代碼

    Mybatis 實現(xiàn)打印sql語句的代碼

    這篇文章主要介紹了Mybatis 實現(xiàn)打印sql語句的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 詳解Spring Security中獲取當前登錄用戶的詳細信息的幾種方法

    詳解Spring Security中獲取當前登錄用戶的詳細信息的幾種方法

    本文主要介紹了詳解Spring Security中獲取當前登錄用戶的詳細信息的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05

最新評論