在云效中使用自己搭建的私有Maven倉庫
制品倉庫 Packages (新版)
云效制品倉庫 Packages (https://packages.aliyun.com/) 是阿里云出品的一款企業級私有倉庫服務,提供基于 Maven、Gradle、NPM 等軟件包管理工具的企業級私有倉庫服務,用于管理企業級依賴托管。倉庫支持管理 Maven 制品和 NPM 制品,并支持配置遠程倉庫,一鍵遷移現有私庫。提供租戶隔離、權限控制、高可用存儲等服務,全面保障企業制品安全。
Maven 私有倉庫(老版)
云效提供了企業級Maven私有倉庫服務,用戶可以使用它來托管自己的私有二方庫。用戶也可以自己搭建Maven私服。以下是使用Nexus搭建Maven私服的指南。
本文中使用的是Nexus Repository Manager OSS nexus 3.5.0-02
。下載鏈接為 https://www.sonatype.com/download-oss-sonatype。安裝和使用請參考其官方文檔。
假設您的Nexus服務器的域名(或者您傾向于直接使用IP也可以)是<your-nexus-repository-domain>
保證私服公網可見
首先要保證您的私服在公網是可見的,這樣云效才能從您的私服下載二方包。驗證方式:在一臺您的企業內網之外的機器上執行telnet <your-nexus-repository-domain> 80
,如果沒有返回錯誤,則表示該私服是公網可見的。
保證私服中的庫不能被匿名下載
Nexus默認的配置,允許匿名下載Maven庫中的包。需要將其禁止掉。具體做法如下。
開啟下載包的HTTP認證
在nexus-default.properties
添加一行nexus.browserdetector.disable=true
。重啟Nexus。
關閉匿名用戶
保證下圖中Allow anonymous users to access the server
是沒有被選中的。
創建用戶上傳和下載二方包的Maven庫
在Nexus上創建了一個名為my-lib-repo
的Maven庫。
為Maven庫創建用戶
Nexus會為您創建的Maven庫預置一些權限點,接下來需要創建一個角色,來包含只讀的權限點。
然后再創建一個用戶來使用該角色。用戶名和密碼都是my-lib-repo-reader
。
在settings.xml中添加認證信息
在Maven的默認settings.xml中找到servers
的部分,添加一個server
配置如下。
<server>
<id>my-lib-repo</id>
<username>my-lib-repo-reader</username>
<password>my-lib-repo-reader</password>
</server>
為了保證云效使用該settings.xml
,需要把該settings.xml
文件放置到您的代碼庫的根目錄。
配置pom.xml的下載包順序
為了讓您的Maven構建先嘗試從maven.aliyun.com
下載包,如果下載不到再從http://<your-nexus-repository-domain>/repository/my-lib-repo
下載包,需要按照如下的方式配置pom.xml
:
<project>
...
<repositories>
<repository>
<id>aliyun-repo</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
<repository>
<id>my-lib-repo</id>
<url>http://<your-nexus-repository-domain>/repository/my-lib-repo/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</pluginRepository>
<pluginRepository>
<id>my-lib-repo</id>
<url>http://<your-nexus-repository-domain>/repository/my-lib-repo/</url>
</pluginRepository>
</pluginRepositories>
...
</project>
您的Maven構建無論下載依賴包還是插件包,都會首先嘗試從maven.aliyun.com
下載,如果下載不到,再從http://<your-nexus-repository-domain>/repository/my-lib-repo/
下載。
發布二方包
如果您需要發布二方包,需要給角色my-lib-repo-read
添加相應的權限。
同時要在自己的pom.xml
中添加配置如下:
<distributionManagement>
<repository>
<id>my-lib-repo</id>
<url>http://<your-nexus-repository-domain>/repository/my-lib-repo/</url>
</repository>
</distributionManagement>
然后就可以在構建配置的build.command
中使用mvn deploy
命令上傳二方包了。
樣例文件如下: