chore: 添加picture文件夹到.gitignore并从仓库中移除
- 在.gitignore中添加picture/忽略规则 - 从git索引中移除已上传的头像文件 - 避免将来头像文件被误提交到仓库
3
.gitignore
vendored
@ -41,3 +41,6 @@ build/
|
|||||||
logs/
|
logs/
|
||||||
/logs/
|
/logs/
|
||||||
spy.log
|
spy.log
|
||||||
|
|
||||||
|
### Upload Files ###
|
||||||
|
picture/
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 112 KiB |
221
script/README.md
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
# 项目重构自动化脚本
|
||||||
|
|
||||||
|
这是一套用于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和所有子模块的 `<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
|
||||||
189
script/batch-refactor.sh
Executable file
@ -0,0 +1,189 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 批量重构脚本 - 使用配置文件进行批量重构
|
||||||
|
# Author: Leocoder
|
||||||
|
# Version: 1.0
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
PURPLE='\033[0;35m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
WHITE='\033[1;37m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}✓ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}✗ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_info() {
|
||||||
|
echo -e "${PURPLE}ℹ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_warning() {
|
||||||
|
echo -e "${YELLOW}⚠ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查配置文件
|
||||||
|
check_config_file() {
|
||||||
|
local config_file="$1"
|
||||||
|
|
||||||
|
if [ ! -f "$config_file" ]; then
|
||||||
|
print_error "配置文件不存在: $config_file"
|
||||||
|
echo ""
|
||||||
|
echo "请先创建配置文件:"
|
||||||
|
echo "1. 复制 refactor-config.example 为 refactor-config.conf"
|
||||||
|
echo "2. 编辑 refactor-config.conf 设置正确的值"
|
||||||
|
echo "3. 运行: ./batch-refactor.sh refactor-config.conf"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 加载配置文件
|
||||||
|
load_config() {
|
||||||
|
local config_file="$1"
|
||||||
|
|
||||||
|
print_info "加载配置文件: $config_file"
|
||||||
|
|
||||||
|
# 读取配置文件
|
||||||
|
source "$config_file"
|
||||||
|
|
||||||
|
# 验证必需的配置项
|
||||||
|
local required_vars=("PROJECT_DIR" "OLD_GROUP_ID" "NEW_GROUP_ID" "OLD_ARTIFACT_ID" "NEW_ARTIFACT_ID" "OLD_MODULE_PREFIX" "NEW_MODULE_PREFIX")
|
||||||
|
|
||||||
|
for var in "${required_vars[@]}"; do
|
||||||
|
if [ -z "${!var}" ]; then
|
||||||
|
print_error "配置项 $var 未设置"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "配置加载成功"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示配置信息
|
||||||
|
show_config() {
|
||||||
|
echo ""
|
||||||
|
echo -e "${WHITE}批量重构配置:${NC}"
|
||||||
|
echo -e "${CYAN}项目目录:${NC} $PROJECT_DIR"
|
||||||
|
echo -e "${CYAN}旧 GroupId:${NC} $OLD_GROUP_ID"
|
||||||
|
echo -e "${CYAN}新 GroupId:${NC} $NEW_GROUP_ID"
|
||||||
|
echo -e "${CYAN}旧 ArtifactId:${NC} $OLD_ARTIFACT_ID"
|
||||||
|
echo -e "${CYAN}新 ArtifactId:${NC} $NEW_ARTIFACT_ID"
|
||||||
|
echo -e "${CYAN}旧模块前缀:${NC} $OLD_MODULE_PREFIX"
|
||||||
|
echo -e "${CYAN}新模块前缀:${NC} $NEW_MODULE_PREFIX"
|
||||||
|
|
||||||
|
if [ -n "$OLD_DATABASE_NAME" ]; then
|
||||||
|
echo -e "${CYAN}旧数据库名:${NC} $OLD_DATABASE_NAME"
|
||||||
|
echo -e "${CYAN}新数据库名:${NC} $NEW_DATABASE_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# 执行重构
|
||||||
|
execute_refactor() {
|
||||||
|
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
local refactor_script="$script_dir/project-refactor.sh"
|
||||||
|
|
||||||
|
if [ ! -f "$refactor_script" ]; then
|
||||||
|
print_error "重构脚本不存在: $refactor_script"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建临时输入文件
|
||||||
|
local temp_input=$(mktemp)
|
||||||
|
|
||||||
|
# 生成自动化输入
|
||||||
|
cat > "$temp_input" << EOF
|
||||||
|
$PROJECT_DIR
|
||||||
|
$OLD_GROUP_ID
|
||||||
|
$OLD_ARTIFACT_ID
|
||||||
|
$OLD_MODULE_PREFIX
|
||||||
|
$NEW_GROUP_ID
|
||||||
|
$NEW_ARTIFACT_ID
|
||||||
|
$NEW_MODULE_PREFIX
|
||||||
|
$OLD_DATABASE_NAME
|
||||||
|
$NEW_DATABASE_NAME
|
||||||
|
y
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ "$CREATE_BACKUP" = "true" ]; then
|
||||||
|
echo "y" >> "$temp_input"
|
||||||
|
else
|
||||||
|
echo "n" >> "$temp_input"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 执行重构脚本
|
||||||
|
print_info "开始执行重构..."
|
||||||
|
"$refactor_script" < "$temp_input"
|
||||||
|
|
||||||
|
# 清理临时文件
|
||||||
|
rm -f "$temp_input"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
print_success "批量重构完成!"
|
||||||
|
else
|
||||||
|
print_error "重构过程中出现错误"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主函数
|
||||||
|
main() {
|
||||||
|
echo -e "${CYAN}"
|
||||||
|
echo "╔══════════════════════════════════════════════════════════════════════════════╗"
|
||||||
|
echo "║ 批量重构脚本 ║"
|
||||||
|
echo "║ Batch Refactoring Tool ║"
|
||||||
|
echo "╚══════════════════════════════════════════════════════════════════════════════╝"
|
||||||
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
local config_file="$1"
|
||||||
|
|
||||||
|
if [ -z "$config_file" ]; then
|
||||||
|
config_file="refactor-config.conf"
|
||||||
|
print_info "使用默认配置文件: $config_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_config_file "$config_file"
|
||||||
|
load_config "$config_file"
|
||||||
|
show_config
|
||||||
|
|
||||||
|
if [ "$AUTO_CONFIRM" != "true" ]; then
|
||||||
|
echo -e "${YELLOW}警告: 此操作将修改项目中的所有相关文件!${NC}"
|
||||||
|
read -p "是否继续? (y/N): " confirm
|
||||||
|
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
|
||||||
|
print_info "操作已取消"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
execute_refactor
|
||||||
|
}
|
||||||
|
|
||||||
|
# 使用说明
|
||||||
|
usage() {
|
||||||
|
echo "使用方法:"
|
||||||
|
echo " $0 [配置文件]"
|
||||||
|
echo ""
|
||||||
|
echo "示例:"
|
||||||
|
echo " $0 # 使用默认配置文件 refactor-config.conf"
|
||||||
|
echo " $0 my-project-config.conf # 使用指定配置文件"
|
||||||
|
echo ""
|
||||||
|
echo "配置文件格式请参考 refactor-config.example"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 参数检查
|
||||||
|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 执行主函数
|
||||||
|
main "$@"
|
||||||
53
script/demo.sh
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 演示脚本 - 快速测试重构功能
|
||||||
|
# Author: Leocoder
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${BLUE}"
|
||||||
|
echo "╔══════════════════════════════════════════════════════════════════════════════╗"
|
||||||
|
echo "║ 项目重构脚本演示 ║"
|
||||||
|
echo "╚══════════════════════════════════════════════════════════════════════════════╝"
|
||||||
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
echo -e "${GREEN}🚀 项目重构自动化脚本已就绪!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "包含以下脚本文件:"
|
||||||
|
echo "├── project-refactor.sh (交互式重构脚本)"
|
||||||
|
echo "├── batch-refactor.sh (批量重构脚本)"
|
||||||
|
echo "├── refactor-config.example (配置文件模板)"
|
||||||
|
echo "├── README.md (详细使用说明)"
|
||||||
|
echo "└── demo.sh (演示脚本)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${YELLOW}快速使用方法:${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "1️⃣ 交互式重构(推荐新手):"
|
||||||
|
echo " ./project-refactor.sh"
|
||||||
|
echo ""
|
||||||
|
echo "2️⃣ 批量重构(推荐批量处理):"
|
||||||
|
echo " cp refactor-config.example my-config.conf"
|
||||||
|
echo " vim my-config.conf # 编辑配置"
|
||||||
|
echo " ./batch-refactor.sh my-config.conf"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}✨ 脚本功能特性:${NC}"
|
||||||
|
echo "• 🔄 自动修改 Maven POM 文件"
|
||||||
|
echo "• 📦 批量更新 Java 包名和 import"
|
||||||
|
echo "• 🗂️ 重命名目录结构"
|
||||||
|
echo "• ⚙️ 更新配置文件"
|
||||||
|
echo "• 🗃️ 处理 MyBatis XML 映射"
|
||||||
|
echo "• 💾 可选项目备份"
|
||||||
|
echo "• 📊 详细的进度显示"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${YELLOW}查看完整使用说明:${NC}"
|
||||||
|
echo "cat README.md"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}🎯 现在你可以轻松地将任何 Maven 项目重构为新项目!${NC}"
|
||||||
481
script/project-refactor.sh
Executable file
@ -0,0 +1,481 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 项目重构脚本 - 自动化修改包名、groupId、artifactId
|
||||||
|
# Author: Leocoder
|
||||||
|
# Version: 1.0
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
PURPLE='\033[0;35m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
WHITE='\033[1;37m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# 全局变量
|
||||||
|
PROJECT_DIR=""
|
||||||
|
OLD_GROUP_ID=""
|
||||||
|
NEW_GROUP_ID=""
|
||||||
|
OLD_ARTIFACT_ID=""
|
||||||
|
NEW_ARTIFACT_ID=""
|
||||||
|
OLD_PACKAGE=""
|
||||||
|
NEW_PACKAGE=""
|
||||||
|
OLD_MODULE_PREFIX=""
|
||||||
|
NEW_MODULE_PREFIX=""
|
||||||
|
OLD_DATABASE_NAME=""
|
||||||
|
NEW_DATABASE_NAME=""
|
||||||
|
|
||||||
|
# 打印banner
|
||||||
|
print_banner() {
|
||||||
|
echo -e "${CYAN}"
|
||||||
|
echo "╔══════════════════════════════════════════════════════════════════════════════╗"
|
||||||
|
echo "║ 项目重构自动化脚本 ║"
|
||||||
|
echo "║ Project Refactoring Tool ║"
|
||||||
|
echo "║ Version 1.0 ║"
|
||||||
|
echo "╚══════════════════════════════════════════════════════════════════════════════╝"
|
||||||
|
echo -e "${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 打印步骤标题
|
||||||
|
print_step() {
|
||||||
|
echo -e "${BLUE}════════════════════════════════════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${WHITE}$1${NC}"
|
||||||
|
echo -e "${BLUE}════════════════════════════════════════════════════════════════════════════════${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 打印成功信息
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}✓ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 打印警告信息
|
||||||
|
print_warning() {
|
||||||
|
echo -e "${YELLOW}⚠ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 打印错误信息
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}✗ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 打印信息
|
||||||
|
print_info() {
|
||||||
|
echo -e "${PURPLE}ℹ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 验证输入
|
||||||
|
validate_input() {
|
||||||
|
local input="$1"
|
||||||
|
local pattern="$2"
|
||||||
|
local description="$3"
|
||||||
|
|
||||||
|
if [[ ! "$input" =~ $pattern ]]; then
|
||||||
|
print_error "$description 格式不正确: $input"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取用户输入
|
||||||
|
get_user_input() {
|
||||||
|
print_step "步骤 1: 获取重构参数"
|
||||||
|
|
||||||
|
# 获取项目根目录
|
||||||
|
echo -e "${CYAN}请输入项目根目录路径 (默认: 当前目录):${NC}"
|
||||||
|
read -p "项目路径: " PROJECT_DIR
|
||||||
|
if [ -z "$PROJECT_DIR" ]; then
|
||||||
|
PROJECT_DIR="$(pwd)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查项目目录是否存在
|
||||||
|
if [ ! -d "$PROJECT_DIR" ]; then
|
||||||
|
print_error "项目目录不存在: $PROJECT_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查是否是Maven项目
|
||||||
|
if [ ! -f "$PROJECT_DIR/pom.xml" ]; then
|
||||||
|
print_error "这不是一个Maven项目 (未找到pom.xml)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_success "项目目录: $PROJECT_DIR"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}请输入旧的配置信息:${NC}"
|
||||||
|
|
||||||
|
# 获取旧的groupId
|
||||||
|
read -p "旧的 GroupId (例如: org.leocoder.thin): " OLD_GROUP_ID
|
||||||
|
validate_input "$OLD_GROUP_ID" "^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)*$" "GroupId"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
# 获取旧的artifactId
|
||||||
|
read -p "旧的 ArtifactId (例如: coder-common-thin-backend): " OLD_ARTIFACT_ID
|
||||||
|
validate_input "$OLD_ARTIFACT_ID" "^[a-zA-Z][a-zA-Z0-9_-]*$" "ArtifactId"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
# 获取旧的模块前缀
|
||||||
|
read -p "旧的模块前缀 (例如: coder-common-thin): " OLD_MODULE_PREFIX
|
||||||
|
validate_input "$OLD_MODULE_PREFIX" "^[a-zA-Z][a-zA-Z0-9_-]*$" "模块前缀"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}请输入新的配置信息:${NC}"
|
||||||
|
|
||||||
|
# 获取新的groupId
|
||||||
|
read -p "新的 GroupId (例如: org.leocoder.course): " NEW_GROUP_ID
|
||||||
|
validate_input "$NEW_GROUP_ID" "^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)*$" "GroupId"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
# 获取新的artifactId
|
||||||
|
read -p "新的 ArtifactId (例如: coder-course-backend): " NEW_ARTIFACT_ID
|
||||||
|
validate_input "$NEW_ARTIFACT_ID" "^[a-zA-Z][a-zA-Z0-9_-]*$" "ArtifactId"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
# 获取新的模块前缀
|
||||||
|
read -p "新的模块前缀 (例如: coder-course): " NEW_MODULE_PREFIX
|
||||||
|
validate_input "$NEW_MODULE_PREFIX" "^[a-zA-Z][a-zA-Z0-9_-]*$" "模块前缀"
|
||||||
|
if [ $? -ne 0 ]; then exit 1; fi
|
||||||
|
|
||||||
|
# 获取数据库名称(可选)
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}数据库配置 (可选):${NC}"
|
||||||
|
read -p "旧的数据库名称 (留空跳过): " OLD_DATABASE_NAME
|
||||||
|
if [ -n "$OLD_DATABASE_NAME" ]; then
|
||||||
|
read -p "新的数据库名称: " NEW_DATABASE_NAME
|
||||||
|
if [ -z "$NEW_DATABASE_NAME" ]; then
|
||||||
|
print_warning "新数据库名称为空,将跳过数据库配置修改"
|
||||||
|
OLD_DATABASE_NAME=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 设置包名
|
||||||
|
OLD_PACKAGE="$OLD_GROUP_ID"
|
||||||
|
NEW_PACKAGE="$NEW_GROUP_ID"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示配置摘要
|
||||||
|
show_summary() {
|
||||||
|
print_step "步骤 2: 配置摘要"
|
||||||
|
|
||||||
|
echo -e "${WHITE}重构配置摘要:${NC}"
|
||||||
|
echo -e "${CYAN}项目目录:${NC} $PROJECT_DIR"
|
||||||
|
echo -e "${CYAN}旧 GroupId:${NC} $OLD_GROUP_ID"
|
||||||
|
echo -e "${CYAN}新 GroupId:${NC} $NEW_GROUP_ID"
|
||||||
|
echo -e "${CYAN}旧 ArtifactId:${NC} $OLD_ARTIFACT_ID"
|
||||||
|
echo -e "${CYAN}新 ArtifactId:${NC} $NEW_ARTIFACT_ID"
|
||||||
|
echo -e "${CYAN}旧模块前缀:${NC} $OLD_MODULE_PREFIX"
|
||||||
|
echo -e "${CYAN}新模块前缀:${NC} $NEW_MODULE_PREFIX"
|
||||||
|
echo -e "${CYAN}旧包名:${NC} $OLD_PACKAGE"
|
||||||
|
echo -e "${CYAN}新包名:${NC} $NEW_PACKAGE"
|
||||||
|
|
||||||
|
if [ -n "$OLD_DATABASE_NAME" ]; then
|
||||||
|
echo -e "${CYAN}旧数据库名:${NC} $OLD_DATABASE_NAME"
|
||||||
|
echo -e "${CYAN}新数据库名:${NC} $NEW_DATABASE_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}警告: 此操作将修改项目中的所有相关文件,建议先备份项目!${NC}"
|
||||||
|
echo ""
|
||||||
|
read -p "是否继续? (y/N): " confirm
|
||||||
|
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
|
||||||
|
print_info "操作已取消"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 备份项目
|
||||||
|
backup_project() {
|
||||||
|
print_step "步骤 3: 备份项目"
|
||||||
|
|
||||||
|
local backup_dir="${PROJECT_DIR}_backup_$(date +%Y%m%d_%H%M%S)"
|
||||||
|
|
||||||
|
echo -e "${CYAN}是否创建项目备份?${NC}"
|
||||||
|
read -p "创建备份到 $backup_dir (Y/n): " create_backup
|
||||||
|
|
||||||
|
if [[ "$create_backup" =~ ^[Nn]$ ]]; then
|
||||||
|
print_warning "跳过备份步骤"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_info "正在创建备份..."
|
||||||
|
cp -r "$PROJECT_DIR" "$backup_dir"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
print_success "备份创建成功: $backup_dir"
|
||||||
|
else
|
||||||
|
print_error "备份创建失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 修改POM文件
|
||||||
|
update_pom_files() {
|
||||||
|
print_step "步骤 4: 修改 POM 文件"
|
||||||
|
|
||||||
|
local pom_files=$(find "$PROJECT_DIR" -name "pom.xml" -type f)
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
for pom_file in $pom_files; do
|
||||||
|
print_info "处理: $(basename $(dirname $pom_file))/pom.xml"
|
||||||
|
|
||||||
|
# 创建临时文件
|
||||||
|
local temp_file=$(mktemp)
|
||||||
|
|
||||||
|
# 修改groupId和artifactId
|
||||||
|
sed "s|<groupId>$OLD_GROUP_ID</groupId>|<groupId>$NEW_GROUP_ID</groupId>|g" "$pom_file" | \
|
||||||
|
sed "s|<artifactId>$OLD_ARTIFACT_ID</artifactId>|<artifactId>$NEW_ARTIFACT_ID</artifactId>|g" | \
|
||||||
|
sed "s|<name>$OLD_ARTIFACT_ID</name>|<name>$NEW_ARTIFACT_ID</name>|g" | \
|
||||||
|
sed "s|<module>$OLD_MODULE_PREFIX-|<module>$NEW_MODULE_PREFIX-|g" | \
|
||||||
|
sed "s|<artifactId>$OLD_MODULE_PREFIX-|<artifactId>$NEW_MODULE_PREFIX-|g" | \
|
||||||
|
sed "s|<name>$OLD_MODULE_PREFIX-|<name>$NEW_MODULE_PREFIX-|g" > "$temp_file"
|
||||||
|
|
||||||
|
# 替换原文件
|
||||||
|
mv "$temp_file" "$pom_file"
|
||||||
|
|
||||||
|
((count++))
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "已修改 $count 个 POM 文件"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 修改Java文件包名
|
||||||
|
update_java_packages() {
|
||||||
|
print_step "步骤 5: 修改 Java 包名"
|
||||||
|
|
||||||
|
local java_files=$(find "$PROJECT_DIR" -name "*.java" -type f)
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
# 转换包名格式(用于文件内容替换)
|
||||||
|
local old_package_escaped=$(echo "$OLD_PACKAGE" | sed 's/\./\\./g')
|
||||||
|
local new_package_escaped="$NEW_PACKAGE"
|
||||||
|
|
||||||
|
for java_file in $java_files; do
|
||||||
|
if grep -q "$OLD_PACKAGE" "$java_file"; then
|
||||||
|
print_info "处理: $(basename $java_file)"
|
||||||
|
|
||||||
|
# 修改package声明和import语句
|
||||||
|
sed -i.bak "s|$old_package_escaped|$new_package_escaped|g" "$java_file"
|
||||||
|
|
||||||
|
# 删除备份文件
|
||||||
|
rm -f "${java_file}.bak"
|
||||||
|
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "已修改 $count 个 Java 文件"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 修改XML映射文件
|
||||||
|
update_xml_files() {
|
||||||
|
print_step "步骤 6: 修改 XML 映射文件"
|
||||||
|
|
||||||
|
local xml_files=$(find "$PROJECT_DIR" -name "*.xml" -type f | grep -E "(mapper|mybatis)")
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
if [ -z "$xml_files" ]; then
|
||||||
|
print_info "未找到需要修改的XML映射文件"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local old_package_escaped=$(echo "$OLD_PACKAGE" | sed 's/\./\\./g')
|
||||||
|
|
||||||
|
for xml_file in $xml_files; do
|
||||||
|
if grep -q "$OLD_PACKAGE" "$xml_file"; then
|
||||||
|
print_info "处理: $(basename $xml_file)"
|
||||||
|
|
||||||
|
# 修改namespace和resultType
|
||||||
|
sed -i.bak "s|$old_package_escaped|$NEW_PACKAGE|g" "$xml_file"
|
||||||
|
|
||||||
|
# 删除备份文件
|
||||||
|
rm -f "${xml_file}.bak"
|
||||||
|
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "已修改 $count 个 XML 文件"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 修改配置文件
|
||||||
|
update_config_files() {
|
||||||
|
print_step "步骤 7: 修改配置文件"
|
||||||
|
|
||||||
|
local config_files=$(find "$PROJECT_DIR" -name "*.yml" -o -name "*.yaml" -o -name "*.properties" | grep -v target)
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
local old_package_escaped=$(echo "$OLD_PACKAGE" | sed 's/\./\\./g')
|
||||||
|
|
||||||
|
for config_file in $config_files; do
|
||||||
|
local modified=false
|
||||||
|
|
||||||
|
# 修改包扫描配置
|
||||||
|
if grep -q "$OLD_PACKAGE" "$config_file"; then
|
||||||
|
sed -i.bak "s|$old_package_escaped|$NEW_PACKAGE|g" "$config_file"
|
||||||
|
modified=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 修改数据库配置
|
||||||
|
if [ -n "$OLD_DATABASE_NAME" ] && grep -q "$OLD_DATABASE_NAME" "$config_file"; then
|
||||||
|
sed -i.bak "s|$OLD_DATABASE_NAME|$NEW_DATABASE_NAME|g" "$config_file"
|
||||||
|
modified=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$modified" = true ]; then
|
||||||
|
print_info "处理: $(basename $config_file)"
|
||||||
|
rm -f "${config_file}.bak"
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "已修改 $count 个配置文件"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重命名目录结构
|
||||||
|
rename_directories() {
|
||||||
|
print_step "步骤 8: 重命名目录结构"
|
||||||
|
|
||||||
|
# 重命名Java包目录
|
||||||
|
print_info "重命名Java包目录结构..."
|
||||||
|
|
||||||
|
# 将点分隔的包名转换为路径
|
||||||
|
local old_package_path=$(echo "$OLD_PACKAGE" | tr '.' '/')
|
||||||
|
local new_package_path=$(echo "$NEW_PACKAGE" | tr '.' '/')
|
||||||
|
|
||||||
|
# 查找所有需要重命名的包目录
|
||||||
|
local package_dirs=$(find "$PROJECT_DIR" -type d -path "*/java/$old_package_path" 2>/dev/null)
|
||||||
|
|
||||||
|
for package_dir in $package_dirs; do
|
||||||
|
local parent_dir=$(dirname "$package_dir")
|
||||||
|
local new_package_dir="$parent_dir/$new_package_path"
|
||||||
|
|
||||||
|
# 创建新的目录结构
|
||||||
|
mkdir -p "$(dirname $new_package_dir)"
|
||||||
|
|
||||||
|
# 移动内容
|
||||||
|
if [ "$package_dir" != "$new_package_dir" ]; then
|
||||||
|
print_info "移动: $package_dir -> $new_package_dir"
|
||||||
|
mv "$package_dir" "$new_package_dir" 2>/dev/null || {
|
||||||
|
# 如果直接移动失败,尝试复制后删除
|
||||||
|
cp -r "$package_dir" "$new_package_dir"
|
||||||
|
rm -rf "$package_dir"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 重命名模块目录
|
||||||
|
print_info "重命名模块目录..."
|
||||||
|
local module_dirs=$(find "$PROJECT_DIR" -maxdepth 2 -type d -name "$OLD_MODULE_PREFIX-*" 2>/dev/null)
|
||||||
|
|
||||||
|
for module_dir in $module_dirs; do
|
||||||
|
local parent_dir=$(dirname "$module_dir")
|
||||||
|
local old_name=$(basename "$module_dir")
|
||||||
|
local new_name=$(echo "$old_name" | sed "s/^$OLD_MODULE_PREFIX-/$NEW_MODULE_PREFIX-/")
|
||||||
|
local new_module_dir="$parent_dir/$new_name"
|
||||||
|
|
||||||
|
if [ "$module_dir" != "$new_module_dir" ]; then
|
||||||
|
print_info "重命名模块: $old_name -> $new_name"
|
||||||
|
mv "$module_dir" "$new_module_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "目录重命名完成"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重命名SQL文件
|
||||||
|
rename_sql_files() {
|
||||||
|
print_step "步骤 9: 重命名 SQL 文件"
|
||||||
|
|
||||||
|
local sql_files=$(find "$PROJECT_DIR" -name "*.sql" -type f | grep -i "$OLD_MODULE_PREFIX")
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
if [ -z "$sql_files" ]; then
|
||||||
|
print_info "未找到需要重命名的SQL文件"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for sql_file in $sql_files; do
|
||||||
|
local dir_name=$(dirname "$sql_file")
|
||||||
|
local old_name=$(basename "$sql_file")
|
||||||
|
local new_name=$(echo "$old_name" | sed "s/$OLD_MODULE_PREFIX/$NEW_MODULE_PREFIX/g")
|
||||||
|
local new_sql_file="$dir_name/$new_name"
|
||||||
|
|
||||||
|
if [ "$sql_file" != "$new_sql_file" ]; then
|
||||||
|
print_info "重命名SQL文件: $old_name -> $new_name"
|
||||||
|
mv "$sql_file" "$new_sql_file"
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_success "已重命名 $count 个 SQL 文件"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 清理临时文件
|
||||||
|
cleanup() {
|
||||||
|
print_step "步骤 10: 清理和验证"
|
||||||
|
|
||||||
|
# 清理可能遗留的备份文件
|
||||||
|
find "$PROJECT_DIR" -name "*.bak" -type f -delete 2>/dev/null
|
||||||
|
|
||||||
|
# 显示统计信息
|
||||||
|
local java_files_count=$(find "$PROJECT_DIR" -name "*.java" -type f | wc -l)
|
||||||
|
local pom_files_count=$(find "$PROJECT_DIR" -name "pom.xml" -type f | wc -l)
|
||||||
|
local xml_files_count=$(find "$PROJECT_DIR" -name "*.xml" -type f | grep -E "(mapper|mybatis)" | wc -l)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${WHITE}重构统计:${NC}"
|
||||||
|
echo -e "${CYAN}Java 文件:${NC} $java_files_count"
|
||||||
|
echo -e "${CYAN}POM 文件:${NC} $pom_files_count"
|
||||||
|
echo -e "${CYAN}XML 映射文件:${NC} $xml_files_count"
|
||||||
|
|
||||||
|
print_success "清理完成"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主函数
|
||||||
|
main() {
|
||||||
|
# 检查依赖
|
||||||
|
if ! command -v sed &> /dev/null; then
|
||||||
|
print_error "sed 命令未找到,请安装 sed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_banner
|
||||||
|
|
||||||
|
get_user_input
|
||||||
|
show_summary
|
||||||
|
backup_project
|
||||||
|
|
||||||
|
# 进入项目目录
|
||||||
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
|
# 执行重构步骤
|
||||||
|
update_pom_files
|
||||||
|
update_java_packages
|
||||||
|
update_xml_files
|
||||||
|
update_config_files
|
||||||
|
rename_directories
|
||||||
|
rename_sql_files
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
print_step "🎉 重构完成!"
|
||||||
|
|
||||||
|
echo -e "${GREEN}"
|
||||||
|
echo "╔══════════════════════════════════════════════════════════════════════════════╗"
|
||||||
|
echo "║ 重构成功完成! ║"
|
||||||
|
echo "║ ║"
|
||||||
|
echo "║ 项目已成功从 $OLD_GROUP_ID 重构为 $NEW_GROUP_ID"
|
||||||
|
echo "║ ║"
|
||||||
|
echo "║ 下一步建议: ║"
|
||||||
|
echo "║ 1. 检查IDE中的运行配置 ║"
|
||||||
|
echo "║ 2. 更新数据库连接配置 ║"
|
||||||
|
echo "║ 3. 清理并重新编译项目 ║"
|
||||||
|
echo "║ 4. 测试项目是否正常运行 ║"
|
||||||
|
echo "╚══════════════════════════════════════════════════════════════════════════════╝"
|
||||||
|
echo -e "${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 脚本入口
|
||||||
|
main "$@"
|
||||||
21
script/refactor-config.example
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# 项目重构配置文件示例
|
||||||
|
# 复制此文件为 refactor-config.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"
|
||||||