|
|
||
|---|---|---|
| .. | ||
| batch-refactor.sh | ||
| demo.sh | ||
| project-refactor.sh | ||
| README.md | ||
| refactor-config.example | ||
项目重构自动化脚本
这是一套用于Maven项目重构的自动化脚本,可以批量修改项目的包名、groupId、artifactId、模块名称等,让你轻松地将一个项目模板改造为新的项目。
功能特性
🚀 全自动重构: 一键修改项目中的所有相关配置 📦 多文件支持: 支持修改POM文件、Java源码、XML映射文件、配置文件 🗂️ 目录重构: 自动重命名Java包目录和模块目录 🔧 可视化界面: 友好的命令行交互界面 💾 安全备份: 可选的项目备份功能 ⚡ 批量处理: 支持配置文件批量重构
文件说明
script/
├── project-refactor.sh # 主重构脚本(交互式)
├── batch-refactor.sh # 批量重构脚本(配置文件)
├── refactor-config.example # 配置文件模板
└── README.md # 使用说明(本文件)
使用方法
方法一:交互式重构(推荐新手)
# 进入脚本目录
cd script
# 运行交互式重构脚本
./project-refactor.sh
脚本会引导你输入以下信息:
- 项目根目录路径
- 旧的 GroupId(如:org.leocoder.thin)
- 旧的 ArtifactId(如:coder-common-thin-backend)
- 旧的模块前缀(如:coder-common-thin)
- 新的 GroupId(如:org.leocoder.course)
- 新的 ArtifactId(如:coder-course-backend)
- 新的模块前缀(如:coder-course)
- 数据库名称(可选)
方法二:配置文件批量重构(推荐批量处理)
# 1. 复制配置文件模板
cp refactor-config.example my-project.conf
# 2. 编辑配置文件
vim my-project.conf
# 3. 运行批量重构
./batch-refactor.sh my-project.conf
配置文件格式
# 项目基本信息
PROJECT_DIR="/path/to/your/project"
# 旧配置
OLD_GROUP_ID="org.leocoder.thin"
OLD_ARTIFACT_ID="coder-common-thin-backend"
OLD_MODULE_PREFIX="coder-common-thin"
OLD_DATABASE_NAME="coder-common-thin"
# 新配置
NEW_GROUP_ID="org.leocoder.course"
NEW_ARTIFACT_ID="coder-course-backend"
NEW_MODULE_PREFIX="coder-course"
NEW_DATABASE_NAME="coder-course"
# 其他选项
CREATE_BACKUP="true" # 是否创建备份
AUTO_CONFIRM="false" # 是否自动确认(跳过确认步骤)
重构内容
脚本会自动处理以下内容:
1. POM文件修改
- ✅ 修改根POM和所有子模块的
<groupId> - ✅ 修改根POM和所有子模块的
<artifactId> - ✅ 修改
<name>标签 - ✅ 修改
<module>引用 - ✅ 修改依赖引用中的groupId和artifactId
2. Java源码修改
- ✅ 修改所有Java文件的
package声明 - ✅ 修改所有Java文件的
import语句 - ✅ 修改注解中的包名引用(如@SpringBootApplication的scanBasePackages)
3. XML映射文件
- ✅ 修改MyBatis Mapper文件的
namespace - ✅ 修改
resultType中的包名引用
4. 配置文件
- ✅ 修改YAML/Properties文件中的包扫描配置
- ✅ 修改数据库连接配置中的数据库名
- ✅ 修改文件路径配置
5. 目录结构重构
- ✅ 重命名Java包目录结构(src/main/java/com/old/package → src/main/java/com/new/package)
- ✅ 重命名模块目录(old-module-name → new-module-name)
- ✅ 重命名SQL文件
使用示例
示例1:从通用框架改造为选课系统
# 交互式输入
./project-refactor.sh
# 输入示例:
# 项目路径: /Users/leocoder/my-project
# 旧的 GroupId: org.leocoder.thin
# 旧的 ArtifactId: coder-common-thin-backend
# 旧的模块前缀: coder-common-thin
# 新的 GroupId: org.leocoder.course
# 新的 ArtifactId: coder-course-backend
# 新的模块前缀: coder-course
示例2:批量处理多个项目
# 为选课系统创建配置
cat > course-system.conf << EOF
PROJECT_DIR="/Users/leocoder/course-project"
OLD_GROUP_ID="org.leocoder.thin"
OLD_ARTIFACT_ID="coder-common-thin-backend"
OLD_MODULE_PREFIX="coder-common-thin"
NEW_GROUP_ID="org.leocoder.course"
NEW_ARTIFACT_ID="coder-course-backend"
NEW_MODULE_PREFIX="coder-course"
CREATE_BACKUP="true"
AUTO_CONFIRM="false"
EOF
# 为库存系统创建配置
cat > inventory-system.conf << EOF
PROJECT_DIR="/Users/leocoder/inventory-project"
OLD_GROUP_ID="org.leocoder.thin"
OLD_ARTIFACT_ID="coder-common-thin-backend"
OLD_MODULE_PREFIX="coder-common-thin"
NEW_GROUP_ID="org.leocoder.inventory"
NEW_ARTIFACT_ID="coder-inventory-backend"
NEW_MODULE_PREFIX="coder-inventory"
CREATE_BACKUP="true"
AUTO_CONFIRM="false"
EOF
# 执行批量重构
./batch-refactor.sh course-system.conf
./batch-refactor.sh inventory-system.conf
注意事项
⚠️ 重要提醒:
- 备份项目: 重构前强烈建议备份整个项目
- 关闭IDE: 重构期间请关闭IDE,避免文件锁定
- 检查结果: 重构完成后请检查项目能否正常编译运行
- 更新配置: 检查IDE的运行配置是否需要更新
重构后需要手动检查的项目
- IDE中的运行配置(主类路径)
- 数据库连接配置
- 第三方服务配置
- 测试用例
- 文档更新
故障排除
常见问题
Q: 脚本执行后项目无法启动? A: 检查IDE的运行配置,确保主类路径已更新为新的包名。
Q: 某些文件没有被修改? A: 检查文件是否在target目录下,脚本会跳过编译输出目录。
Q: 包名格式验证失败? A: 确保包名符合Java命名规范,只能包含字母、数字、下划线和点号。
Q: 权限被拒绝?
A: 确保脚本有执行权限:chmod +x *.sh
调试技巧
- 查看详细日志: 脚本会显示处理的文件信息
- 检查备份: 如果出现问题,可以从备份恢复
- 分步执行: 可以注释掉脚本中的某些步骤来分步调试
扩展功能
你可以根据需要扩展脚本功能:
- 添加新的文件类型: 在相应的函数中添加处理逻辑
- 自定义替换规则: 修改sed命令的正则表达式
- 集成到CI/CD: 将脚本集成到自动化流水线中
贡献
如果你发现bug或有改进建议,请提交issue或pull request。
许可证
MIT License
作者: Leocoder
版本: 1.0
最后更新: 2025-07-06