如果说上一篇解决的是:
“JPOM 怎么活下来,并且能被正常访问”
那这一篇要解决的就是:
“JPOM 到底怎么帮我少干活”
目标非常明确:
提交代码
自动构建
自动部署
不再手动
scp / restart / pray
一、整体流程先给你画清楚(重要)
先说结论,再讲细节。
JPOM 在 CI/CD 中的位置
Git 仓库
↓(代码提交)
JPOM Server
↓
构建(本地 or 远程)
↓
部署到目标服务器
↓
启动 / 重启服务
JPOM 的核心价值在于三点:
构建和部署解耦
Server 与 Node 分离
不用侵入你现有服务器结构
二、本地构建的两种部署模式,你必须选一个
JPOM 支持两种常见部署方式,新手一定要分清。
模式一:本地部署(最简单)
适合场景:
JPOM Server 就在目标服务器上
构建机 = 运行机
小项目 / 单机部署
JPOM Server
├─ 拉代码
├─ mvn package
├─ 覆盖 jar
└─ 重启服务
优点
配置最少
不涉及 SSH
最不容易出问题
缺点
构建过程占用线上服务器资源
模式二:SSH 远程部署(推荐)
适合场景:
构建机 ≠ 运行机
多台服务器
正式环境 / 多环境部署
JPOM Server
├─ 拉代码
├─ mvn package
├─ scp 到远程服务器
└─ SSH 执行启动脚本
优点
架构清晰
可扩展
更接近“正经 CI/CD”
缺点
第一次配置稍微多一点点
👉 下面我两种都写,但重点放在 SSH 远程部署
三、准备工作(不然你会一直报错)
1️⃣ Git 仓库准备
JPOM 支持:
GitHub
GitLab
Gitee
自建 Git
要求只有一个:
JPOM Server 能拉到代码
如果是私有仓库,提前准备:
用户名 + Token
或 SSH Key
2️⃣ Maven / Node 环境(按需)
在 JPOM Server 所在机器确认:
mvn -v
node -v
npm -v
没有就装,别指望 JPOM 给你变出来。
四、JPOM 中配置「代码仓库」
路径:
JPOM → 系统管理 → 仓库管理 → 新增仓库
关键配置说明:
仓库类型:Git
拉取方式:HTTPS(新手更稳)
分支:
main/master凭证:Token / 用户名密码
测试连接成功即可。
五、构建方式一:本地构建 + 本地部署
1️⃣ 新建构建任务
路径:
项目管理 → 构建 → 新增构建
核心配置:
构建方式:本地构建
代码仓库:选择刚才创建的仓库
构建命令示例:
mvn clean package -DskipTests
2️⃣ 构建产物配置
假设你的 jar 在:
target/app.jar
配置:
构建产物路径:
target/app.jar发布目录:
/opt/app/
3️⃣ 发布后执行命令
sh restart.sh
到这里,其实已经是一个完整的 CI 流程了。
六、构建方式二:SSH 远程部署(重点)
这是真正值得用 JPOM 的地方。
⚠️ 使用这个方式之前,需要先在远程服务器上安装jpom-agent端,获取到密码/私钥。
1️⃣ 添加 SSH 节点
路径:
节点管理 → SSH 节点 → 新增
填写:
主机 IP
端口(默认 22)
用户名
密码 / 私钥
测试连接成功即可。
2️⃣ 构建配置(还是本地)
构建命令仍然是:
mvn clean package -DskipTests3️⃣ 发布方式选择「SSH」
关键配置:
发布方式:SSH
目标节点:选择刚才配置的节点
目标路径:
/opt/app/app.jar4️⃣ 远程执行命令
cd /opt/app
sh restart.sh
JPOM 会自动做三件事:
上传 jar
覆盖旧文件
SSH 执行命令
七、强烈建议你做的三件事(血泪经验)
1️⃣ 重启脚本一定要“可重复执行”
不要写成:
kill -9 xxxx
java -jar app.jar
要写成:
pid=$(ps -ef | grep app.jar | grep -v grep | awk '{print $2}')
[ -n "$pid" ] && kill $pid
nohup java -jar app.jar > app.log 2>&1 &
2️⃣ 构建日志一定要看
JPOM 构建失败,99% 原因在日志里。
不是 JPOM 的锅,是:
Maven 依赖
网络
JDK 版本
权限
3️⃣ 先跑通测试环境,再动生产
JPOM 很容易“部署得太顺手”,
一不小心就 show time。
八、总结(这一套你可以长期用)
JPOM 不是玩具
宝塔 + JPOM = 非常适合中小团队
SSH 远程部署是正确打开方式
一旦跑通,基本告别手动部署
评论区