在云效中使用自己搭建的私有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
命令上传二方包了。
样例文件如下: