讀古今文學網 > Maven實戰 > 9.7.2 為項目分配獨立的倉庫 >

9.7.2 為項目分配獨立的倉庫

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

假設項目名稱為foo,首先為該項目建立兩個宿主倉庫Foo Snapshots和Foo Releases,分別用來部署快照構件和發佈構件。具體步驟參見9.3.3節,這裡不再贅述。

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

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

圖9-19 Nexus的Repository Target

下一步就是基於該Repository Target和Foo Releases、Foo Snapshots兩個倉庫建立權限。單擊頁面左邊導航欄中的Privileges鏈接進入權限頁面,然後單擊Add按鈕,選擇Repository Target Privilege。圖9-20所示為創建對應於Foo Releases的權限。

圖9-20 為Foo Releases創建倉庫權限

圖9-20中選擇了Foo Releases倉庫和All(Maven2),表示創建匹配Foo Releases倉庫任何路徑的權限。單擊Save按鈕之後,就能在權限列表中看到相應的增、刪、改、查權限,如圖9-21所示。

圖9-21 Foo Releases倉庫的增、刪、改、查權限

然後,遵循同樣的步驟,為Foo Snapshots建立增、刪、改、查權限。

下一步是創建一個包含上述權限的角色。單擊導航欄中的Roles進入角色頁面,再單擊頁面上方的Add按鈕並選擇Nexus Role。圖9-22所示為將之前建立的權限加入到該角色中。

圖9-22 創建Foo Deployer角色

角色創建完成之後,根據需要將其分配給Foo項目的團隊成員。這樣,其他團隊的成員默認只能讀取Foo Releases和Foo Snapshots的內容,而擁有Foo Deployer角色的用戶就可以執行部署構件等操作。