# java 项目jar 包一键部署 **Repository Path**: vbinson/mcpw ## Basic Information - **Project Name**: java 项目jar 包一键部署 - **Description**: 本地jar一键部署到服务端,小众工具 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一键部署工具 将本地 JAR 包通过 SSH/SFTP 一键部署到服务器,自动完成:**上传 → 备份 → 复制 → 重启**。 ![界面截图](a80f7660-ee99-452a-b5b7-cc098454500a.png) --- ## 环境要求 - Python 3.9+ - 依赖:`PySide6`、`paramiko` ## 安装依赖 ```bash pip install PySide6 paramiko ``` ## 直接运行(开发/测试) ```bash cd E:\mcpw python main.py ``` ## 打包为 .exe 文件 ```bash pip install pyinstaller cd E:\mcpw pyinstaller --onefile --windowed --name "一键部署工具" ^ --add-data "ui;ui" --add-data "core;core" ^ --hidden-import=paramiko --hidden-import=bcrypt ^ --hidden-import=cryptography main.py ``` > 生成的 .exe 在 `dist\一键部署工具.exe`,可复制到任意目录运行。 --- ## 界面概览 ``` ┌─ 📋 使用说明(可展开/收起)─────────────────────┐ ├─ 服务器配置 ────────────────────────────────────┤ │ 配置名称: [生产环境 ▼] [新建][保存][删除][导出][导入] │ │ 主机/IP: [192.168.1.100 ] 🔌 测试连接 │ │ 端口: [22] │ │ 用户名: [admin ] │ │ 登录密码: [******] [👁] │ │ 上传临时目录: [/tmp/deploy-staging/] │ │ Sudo密码: [☑ 与登录密码相同] │ ├──────────────────────────────────────────────────┤ │ 部署表格 │ │ ☑ │ 本地 JAR 路径 │ 远程目标目录 │ 文件名 │ 执行命令 │ │ ☑ │ D:\app.jar │ /opt/app/ │ app.jar│ docker.. │ │ ☐ │ D:\lib.jar │ /opt/lib/ │ lib.jar│ │ │ [⏫置顶] [↑上移] [↓下移] [☑全选] [☐全不选] [➕添加] [🗑删除] │ │ │ │ ████████████ 任务 1/2 [🚀 一键部署] [⏹ 停止] │ │ ████████████ 上传: 45% │ ├──────────────────────────────────────────────────┤ │ 日志输出(彩色:✅成功 ❌失败 ⚠警告) │ └──────────────────────────────────────────────────┘ ``` --- ## 使用说明 ### Step 1:配置服务器 | 字段 | 说明 | 示例 | |------|------|------| | 配置名称 | 点「新建」起名,下拉可切换 | `生产环境` | | 主机/IP | 服务器地址 | `192.168.1.100` | | 端口 | SSH 端口 | `22` | | 用户名 | SSH 登录账号 | `admin` | | 登录密码 | SSH 密码 | `******` | | 上传临时目录 | 非 root 用户可写的临时目录 | `/tmp/deploy-staging/` | | Sudo 密码 | 用于 root 操作(备份、复制、重启) | 勾选 = 同登录密码 | > 填完后点 **「保存」**。点 **「测试连接」** 可验证 SSH 是否可通。 ### Step 2:添加部署项 在部署表格中添加要上传的 JAR: | 列 | 说明 | 示例 | |----|------|------| | ☑ | 勾选要部署的项 | 只部署勾中的 | | 本地 JAR 路径 | **双击**可浏览选择 | `D:\build\myapp.jar` | | 远程目标目录 | JAR 放到哪个目录 | `/opt/myapp/lib/` | | 远程文件名 | 默认用本地文件名 | `myapp.jar` | | 上传后执行命令 | 部署完自动执行 | `docker restart myapp` | > 使用 **⏫ 置顶 / ↑ 上移 / ↓ 下移** 调整部署顺序。 > 使用 **☑ 全选 / ☐ 全不选** 快速勾选。 > 鼠标悬浮在任意单元格上可查看完整内容,列宽可拖拽调整。 ### Step 3:一键部署 点 **「🚀 一键部署」** → 确认 → 自动流水线: ``` ① 上传 → /tmp/deploy-staging/ (SFTP + 进度条) ② 备份 → /opt/app/lib/app.jar.bak.时间戳 (sudo cp) ③ 复制 → /opt/app/lib/app.jar (sudo cp) ④ 执行 → docker restart myapp (sudo) ``` - 部署期间可点 **「⏹ 停止」** 安全中止 - 日志窗口实时显示每步 ✅ 成功 / ❌ 失败 - 任务进度条 + 单文件上传进度条 ### Step 4:配置管理 | 按钮 | 功能 | |------|------| | **新建** | 弹出对话框输入名字,创建空白配置 | | **保存** | 把当前服务器信息 + 部署表格存入选中配置 | | **删除** | 删除选中配置(有确认) | | **导出** | 导出选中配置为 JSON 文件(可迁移) | | **导入** | 从 JSON 文件导入配置(同名可选覆盖) | | **测试连接** | 验证 SSH 是否可通 | > 每个配置独立保存服务器信息和部署列表,切换配置自动回显。 --- ## 项目结构 ``` E:\mcpw\ ├── main.py # 程序入口 ├── requirements.txt # 依赖列表 ├── profiles.json # 配置数据(自动生成) ├── README.md ├── ui\ │ ├── __init__.py │ ├── main_window.py # 主窗口 + 线程管理 │ ├── server_config.py # 服务器配置面板 │ ├── deploy_table.py # 部署映射表格(排序/勾选) │ └── log_panel.py # 日志输出面板 └── core\ ├── __init__.py ├── deployer.py # SSH/SFTP 部署(上传进度/中止) └── profile_manager.py # 配置持久化(JSON) ```