加载中...

文章背景图

手把手教你用Jenkins + Maven + Git实现Spring Boot项目自动打包与远程部署

2026-06-04
0
-
- 分钟
|

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(可用插件)

![插件安装页面](https://img-blog.csdnimg.cn/20240310152000123.png) 截图说明:该页面为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 javaecho $JAVA_HOME 查询)

4. 点击保存

![JDK全局配置](https://img-blog.csdnimg.cn/20240310152200456.png) 截图说明:页面展示JDK自定义配置区域,已取消「自动安装」选项,手动填写自定义别名和服务器真实JDK安装路径,配置完成后可直接保存生效。

5.2 配置Maven环境

同一页面下滑找到Maven模块:

1. 点击【Add Maven】,取消自动安装

2. 别名:Maven3.6(自定义)

3. 填写服务器Maven安装路径(mvn -v 可查看路径)

4. 可自定义Maven settings.xml配置(推荐,配置私服、镜像加速)

5. 保存配置

![Maven全局配置](https://img-blog.csdnimg.cn/20240310152400789.png) 截图说明: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. 保存配置

![SSH远程服务器配置](https://img-blog.csdnimg.cn/20240310152600321.png) 截图说明:Publish over SSH配置页面,完整展示服务器名称、远程IP、登录账号、密码认证等参数,下方弹窗显示「Success」代表服务器连通测试成功。

六、远程服务器准备工作

部署服务器提前创建目录、启停脚本,避免部署失败。

6.1 创建项目目录

执行以下命令创建统一部署目录:

mkdir -p /data/project /data/project/logs

6.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任务](https://img-blog.csdnimg.cn/20240310152800654.png) 截图说明:Jenkins新建任务首页,上方为任务名称输入框,下方展示多种任务类型,本文选择「Maven project」类型创建构建任务。

7.2 配置源码管理(关联Git仓库)

下拉找到【源码管理】,选择Git:

1. Repository URL:填写项目Git仓库地址(HTTPS/SSH均可)

2. Credentials:添加Git账号密码凭证(私有仓库必填,公开仓库可忽略)

3. Branches to build:填写需要构建的分支,如 */main*/master

4. 其他默认,无需修改

![Git源码仓库配置](https://img-blog.csdnimg.cn/20240310153000987.png) 截图说明:源码管理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,跳过测试用例,提升打包速度。

![Maven打包命令配置](https://img-blog.csdnimg.cn/20240310153200234.png) 截图说明: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远程部署配置](https://img-blog.csdnimg.cn/20240310153400567.png) 截图说明:构建后SSH自动部署完整配置页面,包含服务器选择、Jar包传输路径、路径前缀去除、远程执行脚本命令全套核心配置。

八、手动构建测试,验证整套流程

8.1 执行构建

返回任务主页,点击左侧【Build Now(立即构建)】,开始自动执行流程。

构建过程可点击任务下方【Console Output(控制台输出)】查看实时日志,依次看到:

1. Jenkins拉取Git最新代码

2. Maven执行clean package打包

3. Jar包传输到远程服务器

4. 远程执行脚本,重启项目

![构建部署控制台日志](https://img-blog.csdnimg.cn/20240310153600890.png) 截图说明: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后端项目。

配置完成后,开发人员只需专注代码开发,提交推送即可自动完成部署,大幅提升迭代效率,是后端开发、运维必备的自动化部署方案。

评论交流

文章目录