1、程序员将本地代码,git push 到远程gitlab服务器
2、jenkins 拉取到jenkins服务器,并用maven帮我们打成jar包。
3、最后,jenkins将打好的jar包通过ssh publisher发布到测试服务器
手把手教你用Jenkins + Maven + Git实现Spring Boot项目自动打包与远程部署
一、前言
日常Spring Boot项目开发中,手动拉取代码、Maven打包、上传服务器、重启服务的流程繁琐且容易出错,极大降低开发迭代效率。
本文将零基础手把手带你搭建一套基于 Jenkins + Git + Maven 的自动化CI/CD流程,实现:代码提交Git仓库→Jenkins自动拉取代码→自动Maven打包→自动上传Jar包到远程服务器→自动启停项目服务,真正做到一键构建、自动部署,适配绝大多数Linux服务器环境,新手可直接照搬操作。
二、整体部署流程
1. 开发者本地代码Push到Git/Gitee/GitHub远程仓库
2. Jenkins拉取Git仓库最新源码
3. Jenkins调用Maven执行clean package,打包生成可执行Jar包
4. 通过SSH将Jar包传输到远程业务服务器
5. 执行远程Shell脚本,停止旧服务、启动新服务
6. 配置钩子触发,实现代码提交后自动构建部署
三、环境准备
本次实操基于CentOS7/CentOS8服务器,所有软件均为稳定版本,兼容性强:
Jenkins:2.400+ 版本(已安装并启动、开放8080端口)
JDK:1.8 / 11(适配Spring Boot主流版本)
Maven:3.6+ (服务端预装,用于项目打包)
Git:2.20+ (Jenkins服务器预装)
两台服务器:Jenkins服务端、项目部署远程服务端
代码仓库:Gitee/GitHub/GitLab 任意公开/私有仓库
前置说明:默认已完成Jenkins安装启动、服务器防火墙放行8080、22端口,服务器之间网络互通。
四、Jenkins核心插件安装(必做)
Jenkins默认无Maven构建、SSH远程部署能力,需先安装核心插件,所有操作均在Jenkins后台完成。
4.1 进入插件管理页面
登录Jenkins后台 → 左侧菜单栏 Manage Jenkins(管理Jenkins) → Plugins(插件) →Available plugins(可用插件)
 截图说明:该页面为Jenkins可用插件市场,顶部有搜索输入框,下方展示插件列表,可输入插件名称快速检索对应插件,勾选后即可批量安装。
4.2 安装必备插件
搜索并勾选以下4个核心插件,点击【Install without restart】安装:
Maven Integration:支持Maven项目构建任务
Git Plugin:支持Git代码拉取、版本管理
Publish Over SSH:核心插件,实现远程服务器文件传输、Shell命令执行
Generic Webhook Trigger:支持Git钩子自动触发构建(可选,用于自动部署)
安装完成后,重启Jenkins服务(页面底部点击Restart即可)。
五、Jenkins全局环境配置
插件安装完成后,需配置JDK、Maven、Git全局路径,让Jenkins识别本地工具。
5.1 配置JDK环境
路径:Manage Jenkins → Global Tool Configuration(全局工具配置)→ 找到JDK模块
1. 点击【Add JDK】,取消自动安装
2. 填写别名:JDK1.8(自定义,后续任务配置需对应)
3. JDK路径:填写服务器JDK真实安装路径(可通过 which java、echo $JAVA_HOME 查询)
4. 点击保存
 截图说明:页面展示JDK自定义配置区域,已取消「自动安装」选项,手动填写自定义别名和服务器真实JDK安装路径,配置完成后可直接保存生效。
5.2 配置Maven环境
同一页面下滑找到Maven模块:
1. 点击【Add Maven】,取消自动安装
2. 别名:Maven3.6(自定义)
3. 填写服务器Maven安装路径(mvn -v 可查看路径)
4. 可自定义Maven settings.xml配置(推荐,配置私服、镜像加速)
5. 保存配置
 截图说明:Maven全局工具配置页面,包含自定义别名、手动指定安装路径、自定义settings.xml配置文件三大核心配置项,适配私服和镜像加速需求。
5.3 配置Git环境
同一页面找到Git模块:
1. 点击【Add Git】
2. 填写Git安装路径(默认Linux路径 /usr/bin/git)
3. 保存所有全局配置
5.4 配置远程SSH服务器(核心)
该配置用于Jenkins连接业务部署服务器,实现文件传输和命令执行。
路径:Manage Jenkins → System Configuration(系统配置)→ 下滑找到 Publish over SSH
1. 点击【Add SSH Server】
2. Name:自定义服务器名称(如:prod-server)
3. Hostname:远程部署服务器IP地址
4. Username:远程服务器登录用户(root/普通用户)
5. Remote Directory:远程服务器部署根目录(如 /data/project)
6. 点击【Advanced】,勾选Use password authentication,填写服务器登录密码
7. 点击【Test Configuration】,显示Success即连接成功
8. 保存配置
 截图说明:Publish over SSH配置页面,完整展示服务器名称、远程IP、登录账号、密码认证等参数,下方弹窗显示「Success」代表服务器连通测试成功。
六、远程服务器准备工作
在部署服务器提前创建目录、启停脚本,避免部署失败。
6.1 创建项目目录
执行以下命令创建统一部署目录:
mkdir -p /data/project /data/project/logs6.2 编写项目启停脚本
在 /data/project 目录创建 start.sh 启动脚本,统一管理服务启停:
#!/bin/bash
# 项目名称
PROJECT_NAME=demo-springboot
# Jar包路径
JAR_PATH=/data/project/demo.jar
# 停止旧进程
PID=$(ps -ef | grep $PROJECT_NAME | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
kill -9 $PID
echo "旧服务进程已停止,PID:$PID"
fi
# 启动新服务
nohup java -jar $JAR_PATH --spring.profiles.active=prod > /data/project/logs/run.log 2>&1 &
echo "Spring Boot服务启动成功"赋予脚本执行权限:
chmod +x /data/project/start.sh脚本说明:自动检测旧进程并杀死,后台启动Jar包,日志输出到指定目录,适配生产环境。
七、新建Jenkins Maven构建任务
7.1 创建新项目
1. 首页点击【New Item(新建任务)】
2. 输入任务名称(自定义,如springboot-demo-deploy)
3. 选择【Maven project(Maven项目)】,点击确定
 截图说明:Jenkins新建任务首页,上方为任务名称输入框,下方展示多种任务类型,本文选择「Maven project」类型创建构建任务。
7.2 配置源码管理(关联Git仓库)
下拉找到【源码管理】,选择Git:
1. Repository URL:填写项目Git仓库地址(HTTPS/SSH均可)
2. Credentials:添加Git账号密码凭证(私有仓库必填,公开仓库可忽略)
3. Branches to build:填写需要构建的分支,如 */main、*/master
4. 其他默认,无需修改
 截图说明:源码管理Git配置区域,包含仓库地址填写框、凭证选择下拉框、构建分支配置项,适配公开和私有Git仓库。
7.3 配置构建触发器(可选:自动构建)
如需代码提交后自动部署,勾选 Generic Webhook Trigger,后续配置Git钩子;手动构建可直接跳过该步骤。
7.4 配置Maven构建命令
下拉找到【Build(构建)】模块:
1. 选择之前配置的Maven版本
2. Goals and options 填写打包命令:
clean package -Dmaven.test.skip=true命令说明:clean清空旧打包文件,package打包生成Jar,跳过测试用例,提升打包速度。
 截图说明:Build构建模块配置页面,选中已配置的Maven工具,下方输入框填写clean package打包指令,实现项目自动编译打包。
7.5 配置构建后远程部署(核心)
找到【Post-build Actions(构建后操作)】,添加步骤:Send build artifacts over SSH
1. SSH Server选择之前配置的远程服务器
2. Transfer Set(传输配置):
- Source files:打包生成的Jar路径,Spring Boot默认路径:target/*.jar
- Remove prefix:去除路径前缀,填写 target
- Remote directory:远程服务器存放路径,填写 /data/project
- Exec command:远程执行的启停脚本命令:sh /data/project/start.sh
3. 保存所有配置
 截图说明:构建后SSH自动部署完整配置页面,包含服务器选择、Jar包传输路径、路径前缀去除、远程执行脚本命令全套核心配置。
八、手动构建测试,验证整套流程
8.1 执行构建
返回任务主页,点击左侧【Build Now(立即构建)】,开始自动执行流程。
构建过程可点击任务下方【Console Output(控制台输出)】查看实时日志,依次看到:
1. Jenkins拉取Git最新代码
2. Maven执行clean package打包
3. Jar包传输到远程服务器
4. 远程执行脚本,重启项目
 截图说明:Jenkins构建控制台输出页面,完整记录拉取代码、Maven打包、文件传输、远程启停服务的全过程日志,无报错即为部署成功。
8.2 验证部署结果
1. 控制台无报错,构建状态显示蓝色成功
2. 登录远程服务器,查看 /data/project 目录存在最新Jar包
3. 执行 ps -ef | grep java,可看到项目进程正常启动
4. 访问项目接口/页面,验证服务正常运行
九、配置代码提交自动触发部署(进阶)
实现 Git提交代码 → 自动触发Jenkins构建部署,全程无需手动操作。
9.1 获取Jenkins触发URL
任务配置 → 构建触发器 → 复制Webhook触发地址,格式如下:
http://Jenkins服务器IP:8080/generic-webhook-trigger/invoke?token=自定义令牌9.2 配置Git仓库Webhook
打开Gitee/GitHub项目仓库 → 管理 → WebHook:
1. 粘贴上述触发URL
2. 事件选择:Push推送事件
3. 开启触发,保存配置
后续本地代码git push提交后,Jenkins会自动执行构建、打包、部署全套流程。
十、常见报错与解决方案
Maven打包失败:程序包不存在:检查Maven镜像配置,本地仓库依赖缺失,重新执行打包或更新依赖
SSH连接失败:检查服务器IP、账号密码、防火墙端口,测试SSH连通性
端口占用启动失败:脚本正常杀死旧进程,手动执行
kill -9 进程PID释放端口Jar包传输为空:检查Source files路径是否正确,确认Maven打包成功生成Jar包
十一、总结
通过 Jenkins + Git + Maven组合,我们成功搭建了Spring Boot项目全自动CI/CD部署流水线,彻底告别手动打包、上传、重启的重复工作。整套流程核心逻辑清晰:拉代码→打包→传包→启停服务,适配绝大多数Java后端项目。
配置完成后,开发人员只需专注代码开发,提交推送即可自动完成部署,大幅提升迭代效率,是后端开发、运维必备的自动化部署方案。