09_如何在Jenkins容器中手动配置特定版本的JDK环境
在使用 Jenkins 进行 Java 项目的持续集成与部署时,正确配置 JDK 环境是至关重要的一步。本文将详细说明为什么需要单独配置 JDK,以及在 Docker 部署环境下,如何优雅地手动安装和配置指定版本的 JDK。
一、 为什么 Jenkins 需要配置特定的 JDK 环境?
在使用 Jenkins 中的 Maven 构建打包项目时,必须确保 Jenkins 拥有与该项目匹配的 JDK 版本,否则极大概率会导致编译失败。
因为 Maven 本身是一个基于 Java 的工具,它的运行和打包动作都强依赖于 JDK。例如:
假设你的某个项目是基于 JDK 8 开发的:

而你的 Jenkins 中目前默认使用的maven可能是较高版本的 JDK,例如使用 Maven 3.9.11 进行构建:

此时,如果直接使用默认环境进行 Maven 打包,可能会因为版本不兼容而报错。因此,我们需要在 Jenkins 中明确为该项目安装并指定一套 JDK 8 的运行环境。
二、 为什么推荐"手动安装"而不是"自动安装"?
在 Jenkins 的全局工具配置中,虽然提供了"自动安装(Install automatically)" JDK 的选项,但实际操作时你会发现,它通常会提示需要注册并登录 Oracle 账号才能下载。

为了避开繁琐的账号注册和网络下载限制,在企业实战中,我们通常强烈推荐采用手动下载并挂载安装的方式。
三、 手动安装 JDK 的完整步骤(基于 Docker 部署)
前提条件 :如果你是通过 Docker 部署的 Jenkins,请确保你已经将容器内的目录(如
/var/jenkins_home)通过数据卷挂载到了宿主机本地。
1. 确认 Docker 的挂载配置
以下是一个标准的 Jenkins docker-compose.yml 挂载示例,请确认你的配置类似如下:
yaml
version: '3.8'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
user: root
ports:
- "8785:8080"
- "50000:50000"
volumes:
# 将宿主机的 /root/docker/jenkins 挂载到容器内的 /var/jenkins_home
- /root/docker/jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
restart: unless-stopped
2. 在宿主机下载并解压 JDK
我们以安装 JDK 8 为例,为了加快下载速度,这里推荐使用华为云的开源镜像站。在宿主机上依次执行以下命令:
Bash
# 1. 进入宿主机的 jenkins 挂载目录(如果里面没有 tools 文件夹,就新建一个)
mkdir -p /root/docker/jenkins/tools
cd /root/docker/jenkins/tools
# 2. 使用 wget 下载华为云的 JDK 8 压缩包
wget [https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz](https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz)
# 3. 解压下载好的压缩包
tar -zxvf jdk-8u202-linux-x64.tar.gz
# 4. (可选) 删除压缩包以节省磁盘空间
rm -f jdk-8u202-linux-x64.tar.gz
# 5. 查看解压出来的文件夹内容
ls -l
执行完毕后,你应该能看到解压出来的 jdk1.8.0_202 文件夹:
Plaintext
[root@your-server tools]# ls -l
total 189512
drwxr-xr-x 4 root root 4096 Mar 17 10:32 hudson.model.JDK
drwxr-xr-x 3 root root 4096 Jul 8 2025 hudson.tasks.Maven_MavenInstallation
drwxr-xr-x 7 10 143 4096 Dec 16 2018 jdk1.8.0_202
drwxr-xr-x 3 root root 4096 Jul 8 2025 jenkins.plugins.nodejs.tools.NodeJSInstallation
3. 确定容器内部的绝对路径
这一步非常关键!虽然我们在宿主机的 /root/docker/jenkins/tools/jdk1.8.0_202 目录放好了 JDK,但在 Jenkins 容器内部 看来,由于挂载关系(宿主机的 /root/docker/jenkins 对应容器的 /var/jenkins_home),这个 JDK 所在的绝对路径其实是:
👉 /var/jenkins_home/tools/jdk1.8.0_202
记好这个路径,我们马上要在界面上填入它。
四、 在 Jenkins 界面中配置 JDK 路径
万事俱备,只欠东风。最后一步就是在 Jenkins 系统中关联我们刚才下载好的 JDK 环境:
-
回到 Jenkins 的网页管理界面。
-
依次点击左侧菜单栏的 Manage Jenkins (系统管理) -> Tools (全局工具配置)。
-
找到 JDK 安装 (JDK installations) 区域,点击新增(如果已有就展开修改),给这个配置起个名字(例如
jdk8)。 -
务必取消勾选 "Install automatically (自动安装)" 选项。
-
在显示出来的 JAVA_HOME 这一栏中,精准填入刚才确定的容器内绝对路径:
/var/jenkins_home/tools/jdk1.8.0_202 -
滑动到页面最底部,点击 Save (保存)。
如:

/jenkins_home/tools/jdk1.8.0_202`
-
滑动到页面最底部,点击 Save (保存)。
如:
外链图片转存中...(img-yQp47Ogy-1773729911267)
至此,针对特定项目的 JDK 8 环境就完全配置好了,你可以放心地去跑通你的自动化构建流水线了!