Dependency Management
Cloud ZCP 利用 Sonatype Nexus 作为其集成的仓库管理工具来处理应用程序依赖关系。Nexus 在管理应用程序所需的软件二进制文件方面发挥着至关重要的作用,例如 Java 库(JAR)、Node 模块以及其他可能的工件类型。
其主要功能包括:
- Proxying Public Repositories: Nexus 可以作为公共仓库(如 Maven Central、npmjs.org 等)的本地代理(或镜像)。这使得开发和构建环境,尤其是在封闭网络中的环境,能够通过缓存下载的工件可靠且高效地访问外部依赖。
- Hosting Internal Libraries: Nexus 提供
hosted
仓库,组织可以在其中上传和管理自己的内部库或共享组件 1 。 - Grouping Repositories: 仓库可以组合在一起,允许构建工具在多个源中进行搜索(例如,首先检查内部库的托管仓库,然后检查外部的代理仓库)。
访问 Nexus
您可以通过 ZCP 控制台中的项目菜单访问 Nexus 界面: Dev Tools > Nexus。
标准项目用户通常没有直接登录 Nexus UI 的账户。可以通过 Browse 菜单查看仓库。创建托管仓库或上传自定义库等操作通常需要平台管理员的协助。
在浏览 Nexus 时,您将遇到不同的仓库类型:
- proxy: 镜像外部公共仓库。缓存下载的工件。
- hosted: 存储内部开发或上传的工件。
- group: 将多个代理和/或托管的存储库合并为一个访问点。库将在组内按定义的顺序进行搜索。
将 Nexus 用作 Maven 镜像
对于使用 Maven 的 Java 项目,特别是在没有直接互联网访问的环境中,可以将 Nexus 配置为镜像存储库。
- Configuration File: 修改 Maven 的
settings.xml
文件(通常位于~/.m2/settings.xml
或/conf/settings.xml
中的 Maven 安装目录)。 - Mirror Settings: 在
<mirrors>
部分中添加一个<mirror>
条目:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<mirrors>
<mirror>
<id>modernizationplatform</id> <name>现代化平台 Nexus</name> <url>NEXUS_REPOSITORY_URL</url> <mirrorOf>*</mirrorOf> </mirror>
</mirrors>
...
</settings>
- Finding the URL: 在 Nexus UI (Browse 部分) 中,找到所需的存储库(通常是一个
group
类型的存储库,包含公共存储库的代理和可能的内部托管存储库),并使用Copy URL
按钮获取正确的NEXUS_REPOSITORY_URL
。 mirrorOf
Setting:- 使用
*
将导致 Maven 通过此 Nexus 镜像路由 all 存储库请求。 - 或者,如果您只想镜像在
pom.xml
中定义的某些存储库,可以指定特定的存储库 ID(例如central
)。
- 使用
- IDE Integration: 确保您的开发环境(Eclipse、IntelliJ、VSCode 等)配置为使用此
settings.xml
文件。
将 Nexus 用作 Gradle 代理
对于使用 Gradle 的项目,您可以在项目的 build.gradle
文件中配置 Nexus 访问。
- Configuration File: 修改项目的
build.gradle
(或build.gradle.kts
)文件。 - Repository Settings: 调整
repositories { ... }
块:
repositories {
// 如果您想强制代理,请注释掉或删除 mavenCentral() 或 jcenter()
// mavenCentral()
maven {
url "NEXUS_REPOSITORY_URL" // Nexus *group* 存储库的 URL
}
}
- Finding the URL: 与 Maven 一样,在 Nexus UI 中使用
Copy URL
按钮找到适当的group
存储库 URL。通过将mavenCentral()
替换为 Nexus 的maven
块,您可以指示 Gradle 通过 Nexus 解析依赖项。
管理自定义库(托管存储库)
Nexus 中的 hosted
存储库旨在存储在公共存储库中不可用的工件,例如内部开发的库或特定版本的第三方库。
构建工具可以访问这些内部库,当托管存储库包含在构建中配置的 group
存储库中时(settings.xml
或 build.gradle
)。
将工件上传到托管存储库通常需要在 Nexus 中的管理权限。项目团队通常需要与平台管理员协调以实现此目的。