5.0 KiB
5.0 KiB
AutoDeploy
AutoDeploy 是一个面向 Windows 的 Spring Boot + Vue 本地自动化部署工具。它通过图形界面扫描前后端项目、检查开发环境、生成部署步骤,并依次完成后端构建、前端依赖安装、SQL 导入和服务启动。
主要功能
- 自动识别 Maven/Gradle Spring Boot 后端、一个或多个 Vue/Vite 前端以及
.sql文件。 - 从 Maven、Gradle 和 Spring Boot 配置中推断 Java 版本,推荐 JDK 8、11、17 或 21。
- 检测 JDK、Maven、Gradle、Node.js、npm、Vue CLI、MySQL 和 Git。
- 支持手动指定工具路径,并可将工具目录写入当前用户的
PATH;JDK、Maven 和 Gradle 会同步设置对应的环境变量。 - 通过
winget辅助安装常用开发环境,执行安装前会要求用户确认。 - 使用 Maven 或 Gradle 构建后端;已有可运行 JAR 时自动跳过重复构建。
- 前端缺少
node_modules时自动执行npm install,随后运行serve、dev或start脚本。 - 可按顺序导入多个 SQL 文件,并启动后端、用户端和管理端。
- 服务启动前检查端口占用并终止旧进程,等待新服务端口就绪后再继续。
- 后端在独立控制台中显示实时输出,各服务同时保留运行日志。
运行环境
- Windows 10/11
- Python 3.9 或更高版本(需包含 Tkinter,Windows 官方 Python 安装包默认提供)
- 待部署项目所需的 JDK、Maven/Gradle、Node.js/npm 和 MySQL
- 可选:
winget,用于在界面中安装缺失工具
本项目本身只使用 Python 标准库,不需要执行 pip install。
快速开始
克隆项目后进入项目目录:
python main.py
在工作台中按以下顺序操作:
- 选择包含后端、前端和 SQL 文件的项目根目录。
- 点击“扫描项目”,确认识别到的组件和推荐 JDK 版本。
- 点击“检测环境”;缺失的工具可以通过“安装环境”处理,也可以手动选择可执行文件。
- 如果需要导入 SQL,填写 MySQL 用户、密码和数据库名。数据库名默认取第一个 SQL 文件的文件名。
- 点击“执行部署”,在运行日志中查看每个步骤和最终访问地址。
当前默认端口如下:
| 服务 | 端口 | 地址 |
|---|---|---|
| Spring Boot 后端 | 8080 | http://localhost:8080 |
| 管理端 | 8081 | http://localhost:8081 |
| 用户端 | 8082 | http://localhost:8082 |
如果 Vue/Vite 配置文件中声明了端口,工具会优先读取该配置;端口发生冲突时部署会停止并给出提示。
项目识别规则
- 后端:查找
pom.xml、build.gradle或build.gradle.kts,并结合 Spring Boot 依赖和src/main/java判断候选项目。 - 前端:查找
package.json,结合 Vue 依赖、构建脚本及vue.config.js/vite.config.*判断项目。 - 前端角色:目录名包含
admin、manage、后台等关键字时识别为管理端;包含user、client、web、用户等关键字时识别为用户端。 - 启动脚本:依次使用
serve、dev、start中第一个可用的 npm 脚本。 - SQL:递归收集项目中的
.sql文件;扫描时跳过.git、node_modules、target、build、dist等目录。
构建与运行流程
部署计划会根据扫描结果动态生成,典型顺序为:
- 使用
mvn clean package -DskipTests或 GradlebootJar构建后端。 - 为尚未安装依赖的前端执行
npm install。 - 使用 MySQL 命令行依次导入 SQL 文件。
- 使用
java -jar启动后端,并等待 8080 端口就绪。 - 使用 npm 启动各前端开发服务器,并等待对应端口就绪。
- 在运行日志中输出所有服务的访问地址。
运行日志默认写入待部署项目根目录下的 deploy 文件夹:
backend.logfrontend-user.logfrontend-admin.log
自定义工具路径保存在本机 .deploy_tool_config/tool_paths.json 中,该目录已加入 .gitignore。
测试
运行全部单元测试:
python -m unittest discover -s tests -p "test_*.py"
项目结构
.
├── main.py # 程序入口
├── deploy_tool/
│ ├── gui.py # Tkinter 工作台
│ ├── scanner.py # 项目扫描与组件识别
│ ├── environment.py # 本机环境检测与工具发现
│ ├── installer.py # winget 安装命令与 JDK 推荐
│ ├── path_manager.py # 用户环境变量管理
│ ├── deployer.py # 部署计划、命令执行与服务管理
│ └── service_console.py # 后端独立控制台与日志转存
├── tests/ # 单元测试
└── docs/ # 设计说明与实现计划
当前范围
当前版本聚焦 Windows 本机的开发/演示环境部署。远程服务器上传、Nginx 配置、Docker 部署、生产环境进程守护和凭据托管暂不在本版本范围内。