如何为 java 构建节点配置 Maven 构建缓存和依赖仓库?
概述
为 Jenkins 实例的构建节点配置构建缓存及依赖仓库后,Jenkins 流水线构建过程中,可复用下载的依赖包,缩短构建时间,有效提高流水线的构建效率、降低网络带宽消耗并实现对依赖项的控制。
本文将为您说明,如何为 Java 构建节点配置 Maven 构建缓存和 Maven 依赖仓库。
Maven 简介
Maven 是一种强大的构建工具,用于管理 Java 项目的依赖关系和构建过程。
用作 Java 构建节点的构建缓存后,可满足的场景如下:
-
在多人共同开发的项目中,构建缓存可以减少每个开发人员重复下载相同依赖的时间和网络带宽。
-
在 CI/CD 流水线中,构建缓存可以减少构建和部署的时间,提高整个开发流程的效率。
-
在未接入互联网的环境中,构建缓存可以帮助您在离线状态下构建项目。
-
在资源受限的环境中,构建缓存可以降低资源消耗,提高构建速度。
Nexus Repository Manager 简介
Nexus Repository Manager 提供了一个中心化的仓库,用于存储和管理构建产物,并提供访问控制、安全性、版本控制等功能。
用作 Maven 的依赖仓库后,可提供以下特性:
-
方便企业内部开发环境共享依赖项:在大型企业中,配置 Nexus 作为内部 Maven 的依赖仓库可以确保项目之间共享和管理相同的依赖项,减少外部网络请求,提高依赖项的可用性和安全性。
-
满足安全和合规性要求:Nexus 可以用于强制执行安全和合规性标准,确保使用的依赖项是经过审核和批准的。
-
管理自定义依赖项:Nexus 允许自定义依赖项的管理策略,包括缓存、版本控制和安全性检查,提高了开发流程的可控性和可维护性。
-
优化性能:将 Nexus 配置为本地 Maven 代理可以提高依赖项的获取速度,减少对公共 Maven 注册表的依赖,特别是对于跨地理区域的团队。
配置 Maven 构建缓存
前提条件
-
平台上存在已部署的 Jenkins 实例。
-
请提前在 Jenkins 实例所在的命名空间下准备好用作缓存的 PVC(Persistent volume Claim)。
操作步骤
-
进入 平台管理 视图后,在左侧导航栏中,单击 工具链管理 > 实例管理。
-
单击 Jenkins 实例的名称。
-
在 构建节点 页签下,单击待配置缓存的 Java 节点。
-
单击 更新构建节点。
-
添加 构建缓存,参考以下说明,配置相关参数。
方案 参数配置 说明 方案 1 存储类型: Persistent volume Claim
缓存类型:Maven 缓存
缓存路径:/root/.m2/repository.m2/repository是 Maven 用来存储所有项目依赖项的默认目录,通常用作 Maven 项目依赖项的本地缓存。当您在 Maven 项目的pom.xml文件中指定依赖项后,Maven 会尝试从.m2/repository目录中检索这些依赖项,以减少对远程存储库的网络请求,提高构建效率。方案 2 存储类型: Persistent volume Claim
缓存类型:自定义
缓存路径:/root/.m2/cache.m2/cache是 Maven 3.6.0 及更高版本引入的功能,用于存储远程仓库的缓存数据。.m2/cache通过引入 Mirror Image 概念,可以将远程存储库的数据缓存到本地,避免重复的网络请求。这对于在构建时频繁访问远程仓库的情况非常有益,可以显著减少构建时间,并降低对网络的依赖。 -
单击 更新。
验证缓存是否生效
-
切换至 DevOps 视图,在左侧导航栏中,单击 CI/CD > Jenkins。
-
执行流水线(构建节点 为已配置了构建缓存的 Java 节点且包含 Maven 构建任务),并查看流水线的 Pod。
说明:若 Pod 挂载了为构建缓存配置的 PVC,则表明构建缓存已生效。YAML 示例如下:
volumes: - name: volume-0 secret: defaultMode: 420 secretName: demo-xxxx-2603138448 - name: volume-2 persistentVolumeClaim: claimName: demo-jenkins-pvc
配置 Maven 依赖仓库
您可根据实际业务的使用需求,灵活选择依赖仓库的配置方式。
前提条件
平台已集成了 Nexus,且 Nexus 中已存在 Maven 仓库(Repository)。
方式 1:使用平台集成分配的 Maven 依赖仓库
将 Maven 依赖仓库分配给平台项目后,可为不同项目下以 图形化创建/模板创建 方式创建的任一流水线的 Maven 构建任务灵活配置依赖仓库。
配置方法:
-
参考 分配平台项目 将 Nexus 中的 Maven 仓库分配给平台中的指定项目。
-
在项目下以 图形化创建/模板创建 方式创建流水线并添加 Maven 构建 时,选择平台分配的 Maven 仓库作为 依赖仓库。
方式 2:通过 Maven Settings 文件配置依赖仓库
为 java 构建节点配置依赖仓库后,平台上所有使用该构建节点的流水线构建时,均可从该依赖仓库拉取依赖项。
说明:配置构建节点级别的依赖仓库不影响用户为 Maven 构建任务配置其他的依赖仓库,配置的所有依赖仓库均可使用。
操作步骤
-
进入 平台管理 视图后,在左侧导航栏中,单击 工具链管理 > 实例管理。
-
单击 Jenkins 实例的名称。
-
在 构建节点 页签下,单击要配置依赖仓库的 Java 节点。
-
单击 更新构建节点。
-
启用 Maven Settings 文件 功能,在 内容 中输入以下配置信息,配置 Maven 的依赖仓库。
注意:需要将配置信息中的 用户名、密码、Maven repository URL 替换为访问 Nexus 中 Maven 仓库的用户名、密码及 URL。
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"> <servers> <server> <id>my-maven-repository</id> <username>{ 用户名 }</username> <password>{ 密码 }</password> </server> </servers> <profiles> <profile> <id>my-default-profile</id> <repositories> <repository> <id>my-maven-repository</id> <name>my-maven-repository</name> <url>{ Maven repository URL }</url> <layout>default</layout> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>my-default-profile</activeProfile> </activeProfiles> </settings> -
单击 更新。