Java 软件项目上线前的准备工作是确保版本稳定、可追溯和部署顺利的关键环节,结合 Git 版本管理(打 Tag 是核心环节),完整方案如下:
一、上线前准备阶段(代码冻结前)
- 分支与代码确认
确认上线分支:确保在指定的上线分支(如 master、release/v1.0)操作,禁止在开发分支(dev)直接上线。
查看当前分支
git branch
若不在目标分支,切换分支
git checkout 上线分支名 # 如 git checkout master
同步远程最新代码:拉取远程分支最新代码,避免本地代码落后导致冲突。
git pull origin 上线分支名 # 如 git pull origin master
代码冻结:通知团队成员,上线分支进入 “代码冻结” 状态,禁止提交新功能代码,仅允许紧急 Bug 修复(修复后需重新测试)。
- 代码质量与测试验证
静态代码检查:通过工具(如 SonarQube)扫描代码,确保无严重漏洞、规范问题。
示例:Maven 项目执行 Sonar 扫描(需提前配置 Sonar 服务)
mvn sonar:sonar
自动化测试执行:
单元测试:确保核心功能的单元测试通过率 100%。
mvn test # 执行所有单元测试
集成测试:验证服务间调用、数据库交互等场景。
回归测试:针对本次上线内容,覆盖相关功能点。
构建打包验证:本地构建部署包,检查是否存在编译错误、依赖缺失。
构建 Jar 包(跳过测试,若测试已通过)
mvn clean package -DskipTests
- 版本号管理
统一项目版本:在 pom.xml(Maven)或 build.gradle(Gradle)中,将项目版本号与即将创建的 Git Tag 保持一致(如 1.0.0)。
<version>1.0.0</version>
提交版本号变更:
git add pom.xml # 或 build.gradle
git commit -m "chore: 升级版本号至 1.0.0 准备上线"
git push origin 上线分支名
二、核心环节:Git 打 Tag(版本标记)
- Tag 命名规范(强制统一)
采用 语义化版本 + 环境标识(可选),格式:
v主版本号.次版本号.修订号[-环境]
正式上线版本:v1.0.0(主版本。次版本。修订号)
测试 / 预发布版本:v1.0.0-beta(beta 测试版)、v1.0.0-rc1(候选发布版)
说明:
主版本号:不兼容的大版本更新(如 v2.0.0)。
次版本号:新增功能但兼容旧版本(如 v1.1.0)。
修订号:仅修复 Bug 不新增功能(如 v1.0.1)。 - 打 Tag 操作步骤
(1)创建附注 Tag(推荐,含详细信息)
附注 Tag 会记录创建者、时间、描述,便于追溯,适合正式版本。
命令格式:git tag -a <tag名> -m "标签描述"
git tag -a v1.0.0 -m "正式上线版本:包含用户管理、订单支付、数据统计功能"
(2)验证本地 Tag
查看所有 Tag(按版本号排序)
git tag --sort=v:refname
查看指定 Tag 详情
git show v1.0.0 # 会显示创建者、时间、关联的提交记录等
(3)推送 Tag 到远程仓库
本地 Tag 需手动推送到远程,否则团队其他成员无法看到。
推送单个 Tag 到远程
git push origin v1.0.0
若有多个 Tag 需推送,可批量推送
git push origin --tags
(4)远程验证
登录 Git 仓库(如 GitLab、GitHub),在项目的 “Tags” 页面确认 Tag 已存在。
三、部署前最终检查
- 代码与 Tag 一致性验证
确保部署的代码与 Tag 指向的版本完全一致:
检出 Tag 对应的代码(临时查看,避免修改)
git checkout v1.0.0
确认代码无误后,返回原分支
git checkout 上线分支名
- 环境与配置检查
服务器环境:确认目标服务器的 JDK 版本、内存、磁盘空间等符合要求。
配置文件:检查线上配置(如数据库地址、Redis 密码、日志级别)是否正确,避免使用测试环境配置。
依赖服务:确认依赖的中间件(如 MySQL、Redis、MQ)状态正常。 - 备份策略
代码备份:Tag 本身就是代码版本的备份,如需额外备份,可打包当前代码:
git archive --format=zip -o project-v1.0.0.zip v1.0.0
数据备份:上线前备份数据库(如 MySQL 用 mysqldump),防止数据变更异常。
四、上线部署与验证
部署包上传:将构建好的 Jar 包(如 project-1.0.0.jar)上传到目标服务器。
执行部署:通过脚本启动服务(如 java -jar project-1.0.0.jar)。
健康检查:
访问服务健康检查接口(如 /actuator/health)。
查看日志(tail -f app.log),确认启动无异常。
功能验证:通过自动化脚本或人工测试,验证核心功能正常。
五、异常处理与回滚
- 若上线后发现问题,需紧急回滚
基于 Tag 回滚代码:
检出上一个稳定版本的 Tag
git checkout v0.9.0
重新构建部署包
mvn clean package -DskipTests
部署回滚包,恢复服务。
- 若 Tag 打错(如版本号错误)
删除本地错误 Tag
git tag -d v1.0.0-wrong
删除远程错误 Tag
git push origin --delete v1.0.0-wrong
重新打正确的 Tag 并推送
git tag -a v1.0.0 -m "正确描述"
git push origin v1.0.0
六、上线后记录
记录本次上线的 Tag 版本(如 v1.0.0)、部署时间、部署人员、变更内容。
在项目文档或发布日志中更新版本说明,便于后续追溯。
总结
上线前的核心流程可概括为:
代码冻结与同步 → 测试与质量检查 → 版本号统一 → 打 Git Tag 并推送 → 部署前检查 → 部署与验证 → 异常回滚预案
其中,Git Tag 是版本追溯的核心标识,务必保证命名规范、推送成功,且与部署的代码版本严格一致。