# package-renamer
**Repository Path**: libinqingfeng/package-renamer
## Basic Information
- **Project Name**: package-renamer
- **Description**: 一个”强大“的 Java 项目重命名工具,支持批量修改包名、模块前缀、类名和 Maven GroupId,特别适合多模块项目重构
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-01-19
- **Last Updated**: 2026-01-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 📦 Package Renamer
一个强大的 Java 项目重命名工具
批量重命名包名、模块前缀、类名的自动化工具
特别适合 Maven 多模块项目的重构需求
功能特性 •
快速开始 •
使用指南 •
示例
---
## ✨ 核心功能
- 📦 **批量重命名包名** - 自动替换整个项目的包路径(如:`cn.iocoder.yudao` → `com.udong.synergy`)
- 🏷️ **模块前缀重命名** - 统一修改 Maven 模块名称前缀(如:`yudao-*` → `synergy-*`)
- 🔧 **GroupId 替换** - 更新 pom.xml 中的项目组 ID
- 📝 **类名前缀重命名** - 批量修改 Java 类名前缀(如:`Yudao*` → `Synergy*`)
- 🔄 **自动更新依赖** - 自动同步修改 import 语句和配置文件引用
- 🗂️ **文件目录迁移** - 自动移动文件到新的包路径并重命名
- 🧹 **清理空目录** - 自动清理迁移后的空文件夹
- 🎯 **多模块支持** - 完美支持 Maven 聚合项目,递归处理所有子模块
## 🏗️ 项目结构
```
src/main/java/com/dong/renamer/
├── Main.java # 主入口
├── properties/
│ └── RenamerProperties.java # 配置属性类
├── scanner/
│ └── PropertiesScanner.java # 交互式配置扫描器
├── core/
│ ├── ProjectRenamer.java # 项目重命名核心逻辑
│ └── handler/
│ ├── PackageHandler.java # 包名和类文件处理器
│ └── PomHandler.java # Maven POM 文件处理器
└── folder/
├── handler/
│ └── PackageMoveHandler.java # 包目录移动处理器
└── util/
├── DirectoryCleaner.java # 目录清理工具
└── DirectoryMover.java # 目录移动工具
```
## 🚀 快速开始
### 前置要求
- Java 8+
- Maven 3.x
### 安装
```bash
# 克隆项目
git clone https://gitee.com/xxd9527/package-renamer.git
# 进入项目目录
cd package-renamer
# 编译打包
mvn clean package
```
编译成功后会在 `target` 目录生成 `package-renamer-1.0-SNAPSHOT.jar` 文件。
### 使用方式
```bash
# 直接运行主类
java -jar target/package-renamer-1.0-SNAPSHOT.jar
```
程序会引导你输入以下配置:
1. **项目路径** - 需要重命名的项目根目录
2. **旧的模块前缀** - 原模块名前缀(如:yudao)
3. **新的模块前缀** - 新模块名前缀(如:synergy)
4. **旧的包前缀** - 原包名前缀(如:cn.iocoder.yudao)
5. **新的包前缀** - 新包名前缀(如:com.udong.synergy)
6. **旧的项目组ID** - 原 Maven GroupId(如:cn.iocoder.boot)
7. **新的项目组ID** - 新 Maven GroupId(如:com.udong.boot)
## 🔄 工作流程
```mermaid
graph TB
A[开始] --> B[读取配置]
B --> C[处理 POM 文件]
C --> D{存在子模块?}
D -->|是| E[递归处理子模块]
D -->|否| F[处理包名和类文件]
E --> F
F --> G[移动文件到新包路径]
G --> H[重命名类文件]
H --> I[更新配置文件]
I --> J[重命名模块目录]
J --> K[清理空目录]
K --> L[完成]
```
## 📋 处理范围
### Java 文件
- ✅ package 声明
- ✅ import 语句
- ✅ 类名、文件名
- ✅ 文件路径移动
### POM 文件
- ✅ groupId
- ✅ artifactId
- ✅ module 声明
### 配置文件
- ✅ application.yml / application.yaml
- ✅ application.properties
- ✅ META-INF/spring.factories
- ✅ META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
## ⚠️ 重要提示
> **⚠️ 在运行此工具之前,请务必备份您的项目!**
>
> 本工具会直接修改源代码文件,所有操作不可逆。建议:
> - 使用 Git 提交当前状态
> - 或创建完整的项目备份
## 💡 使用场景
- 🔄 项目重构时批量修改包名
- 🏢 公司/组织名称变更
- 📦 开源项目个性化定制
- 🔀 多个项目合并统一命名规范
- 🎯 Maven 多模块项目批量重命名
## 🛠️ 技术栈
- **Java 8+** - 编程语言
- **Maven** - 项目构建工具
- **Lombok 1.18.42** - 简化 Java 代码
- **DOM Parser** - XML 解析(处理 POM 文件)
## 🔍 工作原理
1. **扫描项目** - 递归遍历项目目录,识别所有 `.java` 和 `.xml` 文件
2. **解析 POM** - 使用 DOM 解析器处理 Maven POM 文件,更新 groupId、artifactId 和 module
3. **处理 Java 文件** - 逐行解析 Java 源码,替换 package 声明、import 语句和类名
4. **移动文件** - 根据新的包名结构移动 Java 文件到对应目录
5. **重命名文件** - 根据新的类名前缀重命名 Java 文件
6. **更新配置** - 处理 application.yml、properties 和 Spring 配置文件
7. **清理目录** - 删除迁移后的空目录
8. **重命名模块** - 重命名 Maven 模块目录名
## 📝 配置说明
### RenamerProperties 配置项
| 配置项 | 说明 | 示例 |
|--------|------|------|
| projectPath | 项目根路径 | `D:\IdeaProjects\my-project` |
| oldModulePrefix | 旧模块前缀 | `yudao` |
| newModulePrefix | 新模块前缀 | `synergy` |
| oldPackagePrefix | 旧包名前缀 | `cn.iocoder.yudao` |
| newPackagePrefix | 新包名前缀 | `com.udong.synergy` |
| oldProjectGroupId | 旧 GroupId | `cn.iocoder.boot` |
| newProjectGroupId | 新 GroupId | `com.udong.boot` |
| oldClassNamePrefix | 旧类名前缀 | `Yudao` |
| newClassNamePrefix | 新类名前缀 | `Synergy` |
所有配置项均为可选,工具会根据是否配置来决定是否执行对应的重命名操作。
## 🎯 执行示例
假设有以下项目结构:
```
yudao-project/
├── pom.xml
├── yudao-module-system/
│ ├── pom.xml
│ └── src/main/java/cn/iocoder/yudao/module/system/
└── yudao-module-infra/
├── pom.xml
└── src/main/java/cn/iocoder/yudao/module/infra/
```
运行工具后将变为:
```
synergy-project/
├── pom.xml
├── synergy-module-system/
│ ├── pom.xml
│ └── src/main/java/com/udong/synergy/module/system/
└── synergy-module-infra/
├── pom.xml
└── src/main/java/com/udong/synergy/module/infra/
```
## ❓ 常见问题
### Q: 工具支持哪些文件类型?
A: 支持 `.java`、`pom.xml`、`.yml`、`.yaml`、`.properties`、`.factories` 和 `.imports` 文件。
### Q: 是否支持 Gradle 项目?
A: 目前仅支持 Maven 项目,Gradle 支持计划在后续版本中添加。
### Q: 如果重命名失败怎么办?
A: 请确保提前备份项目。如遇问题,可恢复备份后调整配置重试。
### Q: 能否只重命名包名而不修改类名?
A: 可以。工具会根据配置项是否为空来决定执行哪些操作,不配置类名前缀即可。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
如果这个项目对你有帮助,请给个 ⭐️ Star 支持一下!
## 📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
## 📧 联系方式
- 提交 Issue:[Issues](https://gitee.com/your-username/package-renamer/issues)
- 贡献代码:[Pull Requests](https://gitee.com/your-username/package-renamer/pulls)
---
**注意**:本工具会直接修改源文件,使用前请确保已备份!