# 项目重构自动化脚本 这是一套用于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 ``` 脚本会引导你输入以下信息: - 项目根目录路径 - 旧的 GroupId(如:org.leocoder.thin) - 旧的 ArtifactId(如:coder-common-thin-backend) - 旧的模块前缀(如:coder-common-thin) - 新的 GroupId(如:org.leocoder.course) - 新的 ArtifactId(如:coder-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和所有子模块的 `` - ✅ 修改根POM和所有子模块的 `` - ✅ 修改 `` 标签 - ✅ 修改 `` 引用 - ✅ 修改依赖引用中的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