跳到主要内容

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.xmlbuild.gradle)。

将工件上传到托管存储库通常需要在 Nexus 中的管理权限。项目团队通常需要与平台管理员协调以实现此目的。