coder-common-thin-backend/script/README.md
Leo aea6426fa3 chore: 添加picture文件夹到.gitignore并从仓库中移除
- 在.gitignore中添加picture/忽略规则
- 从git索引中移除已上传的头像文件
- 避免将来头像文件被误提交到仓库
2025-07-07 15:18:51 +08:00

221 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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