# 项目模板重构脚本
这是一个用于将 `coder-common-thin-backend` 项目重构为新项目模板的自动化脚本。
## 功能特性
🚀 **全自动重构**:一键完成整个项目的重构过程
📁 **目录重命名**:自动重命名所有模块目录和子模块目录
📦 **Maven配置**:更新所有 pom.xml 文件中的 groupId、artifactId 和模块名
☕ **Java包结构**:重构所有 Java 文件的包名和 import 语句
⚙️ **配置文件**:更新所有配置文件中的包名引用
🗄️ **数据库配置**:重命名 SQL 文件和更新数据库名引用
🔄 **多层级支持**:支持插件模块等多层级子模块结构
## 使用方法
### 1. 进入脚本目录
```bash
cd /Users/leocoder/leocoder/develop/frameworks/coder-common-thin/coder-common-thin-backend/script
```
### 2. 执行重构脚本
```bash
./project-template-refactor.sh
```
### 3. 按提示输入新项目信息
脚本会提示你输入以下信息:
- **新项目名称**:例如 `my-project-backend`
- **新的GroupId**:例如 `com.company.project`
- **新的包名**:例如 `com.company.project`
- **新的模块前缀**:例如 `my-project`
- **新的数据库名**:例如 `my_project_db`
### 4. 确认配置并开始重构
脚本会显示所有配置信息供你确认,输入 `y` 开始重构。
## 重构内容详解
### 📁 目录结构重构
**原始结构:**
```
/parent-directory/
└── coder-common-thin-backend/ ← 项目根目录
├── coder-common-thin-web/
├── coder-common-thin-common/
├── coder-common-thin-model/
├── coder-common-thin-mybatisplus/
├── coder-common-thin-modules/
├── coder-common-thin-plugins/
│ ├── coder-common-thin-easyexcel/
│ ├── coder-common-thin-oss/
│ ├── coder-common-thin-sa-token/
│ └── ...其他插件模块
└── sql/
└── coder-common-thin.sql
```
**重构后结构(以 my-project-backend 为例):**
```
/parent-directory/
├── coder-common-thin-backend_backup_* ← 自动创建的备份
└── my-project-backend/ ← 重命名后的项目根目录
├── my-project-web/
├── my-project-common/
├── my-project-model/
├── my-project-mybatisplus/
├── my-project-modules/
├── my-project-plugins/
│ ├── my-project-easyexcel/
│ ├── my-project-oss/
│ ├── my-project-sa-token/
│ └── ...其他插件模块
└── sql/
└── my_project_db.sql
```
⭐ **v1.2.0 新特性**:脚本现在会自动重命名项目根目录,无需手动操作!
### 📦 Maven 配置重构
- **groupId**:`org.leocoder.thin` → `com.company.project`
- **artifactId**:`coder-common-thin-*` → `my-project-*`
- **name**:相应模块名称更新
- **依赖引用**:所有模块间依赖的 groupId 和 artifactId
### ☕ Java 包结构重构
- **包声明**:`package org.leocoder.thin.*` → `package com.company.project.*`
- **import语句**:`import org.leocoder.thin.*` → `import com.company.project.*`
- **目录结构**:`src/main/java/org/leocoder/thin/` → `src/main/java/com/company/project/`
### ⚙️ 配置文件重构
- **application.yml / application-dev.yml / application-local.yml**:
- `packages-to-scan: org.leocoder.thin` → `packages-to-scan: com.company.project`
- `projectName: CORDER-ADMIN-THIN` → `projectName: MY-PROJECT-ADMIN`
- `pool-name: CORDER-HIKARI-DEV` → `pool-name: MY-PROJECT-HIKARI-DEV`
- `name: coder-web` → `name: my-project-web`
- `jdbc:mysql://localhost:3306/coder-common-thin` → `jdbc:mysql://localhost:3306/new-db-name`
- `jdbc:mysql://localhost:3306/coder-common-thin-backup` → `jdbc:mysql://localhost:3306/new-db-name-backup`
- `filePath: /path/coder-common-thin-backend/` → `filePath: /path/new-project-backend/`
- **logback配置文件**(logback-spring*.xml):
- `coder-common-thin-logback` → `my-project-logback`
- `` → ``
- 所有日志路径引用:`${CORDER_ADMIN_LOGS}` → `${MY_PROJECT_ADMIN_LOGS}`
- **其他配置文件**:包名和项目相关引用更新
### 🗄️ SQL 文件重构
- **文件重命名**:`coder-common-thin.sql` → `my_project_db.sql`
- **数据库名更新**:SQL文件中的数据库名引用更新
## 安全特性
### 🔒 自动备份
脚本执行前会自动创建项目备份:
```
coder-common-thin-backend_backup_20250922_143022/
```
### ✅ 验证检查
重构完成后自动验证是否还有旧的引用残留
### 🚫 错误处理
遇到错误时立即停止执行,保护项目完整性
## 重构后操作
重构完成后请执行以下步骤:
### 1. 验证编译
```bash
mvn clean compile
```
### 2. 更新数据库配置
手动检查并更新以下配置文件中的数据库连接信息:
- `*/src/main/resources/application-dev.yml`
- `*/src/main/resources/application-local.yml`
### 3. 验证功能
- 启动应用程序验证功能正常
- 检查所有插件模块是否正常加载
### 4. IDE配置
- 重新导入Maven项目
- 检查项目结构和依赖
### 5. Git管理
```bash
git add .
git commit -m "refactor: 重构项目为新模板"
```
## 注意事项
⚠️ **重要提醒:**
1. 重构前请确保代码已提交到Git仓库
2. 脚本会自动创建备份,但建议额外手动备份重要数据
3. 重构过程不可逆,请谨慎操作
4. 重构后需要手动更新数据库连接配置
5. 如果项目中有自定义的特殊配置,可能需要手动调整
## 故障排除
### 常见问题
1. **权限错误**:确保脚本有可执行权限 `chmod +x project-template-refactor.sh`
2. **路径错误**:确保在正确的项目根目录下执行脚本
3. **Maven错误**:重构后如果编译失败,检查依赖配置是否正确
4. **包名冲突**:如果新包名已存在,选择不同的包名
5. **Bash版本兼容性**:脚本已修复了bash版本兼容性问题
6. **包名未正确替换**:使用修复脚本 `./fix-existing-project.sh`
7. **多余src目录**:使用修复脚本自动清理
### 项目修复工具
#### 1. 快速修复目录名反斜杠问题
如果目录名中出现反斜杠(如 `leocoder\`):
```bash
./quick-fix-backslash.sh
```
#### 2. 修复遗漏的modules子模块
如果modules目录下的子模块没有被重命名:
```bash
./fix-missing-modules.sh
```
#### 3. 修复已有问题的项目
如果重构过程中出现包名未正确替换或目录结构问题:
```bash
./fix-existing-project.sh
```
#### 4. 检查项目状态
检查项目重构后的整体状态:
```bash
./project-status-check.sh
```
#### 5. 演示logback配置处理
查看logback配置处理效果:
```bash
./logback-demo.sh
```
#### 6. 测试反斜杠修复功能
验证反斜杠问题修复效果:
```bash
./test-backslash-fix.sh
```
#### 7. 测试配置文件修复功能
验证数据库连接字符串和文件路径配置修复效果:
```bash
./test-config-fix.sh
```
### 回滚操作
如果重构出现问题,可以:
1. 删除重构后的项目目录
2. 从备份目录恢复:`cp -r coder-common-thin-backend_backup_* coder-common-thin-backend`
3. 或使用修复脚本进行增量修复
### 脚本版本信息
- **v1.0.0**:初始版本
- **v1.1.0**:修复bash兼容性问题,改进Java包结构迁移逻辑,增加修复工具
- **v1.1.1**:修复sed正则表达式导致的目录名反斜杠问题,增加快速修复工具
- **v1.2.0**:**重大更新** - 完善反斜杠自动清理,增加项目根目录自动重命名功能
- **v1.2.1**:**关键修复** - 彻底解决反斜杠问题,增强MyBatis XML处理,改进验证逻辑
- **v1.2.2**:**模块修复** - 修复modules子模块重命名遗漏问题,支持多层级子模块处理
- **v1.2.3**:**配置修复** - 修复数据库连接字符串和文件路径配置未更新问题
## 技术支持
如果在使用过程中遇到问题,请:
1. 检查脚本执行日志
2. 查看备份目录是否完整
3. 联系开发团队获取支持
---
**版本**:v1.2.3
**作者**:Leocoder
**更新时间**:2025-09-22