# devops-tools **Repository Path**: lxbzmy/devops-tools ## Basic Information - **Project Name**: devops-tools - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Maven 仓库清理工具 ## 功能描述 这是一个用于清理 Maven 本地仓库(`~/.m2/repository`)中垃圾目录的工具。该工具能够识别并移除没有有效制品文件的目录结构。 ## 工作原理 该脚本通过以下标准识别垃圾目录: - **叶子目录**(无子目录):如果目录内既没有 `.pom` 文件,也没有 `.jar`、`.war`、`.zip`、`.gz` 等制品文件,则视为垃圾目录 - **嵌套空目录**:如果一个非叶子目录的所有子目录都是垃圾,且自身也缺少制品文件,则视为垃圾目录 ## 使用方法 ### 试运行(仅扫描,不移动任何文件) ```bash perl clean-m2-dirty.pl --dry-run ``` ### 正式运行(扫描并移动垃圾目录) ```bash perl clean-m2-dirty.pl ``` ## 工作流程 1. **扫描阶段**:递归遍历 Maven 仓库,识别所有垃圾目录 2. **移动阶段**:将识别出的垃圾目录(仅最顶层)移动到临时目录 3. **清理阶段**:使用 `find` 命令删除所有残留的空目录 4. **完成**:显示临时目录位置,用户可自行确认后删除 ## 特点 - ✅ 支持试运行模式(`--dry-run`) - ✅ 仅移动最顶层垃圾目录,避免路径重复 - ✅ 自动清理所有残留的空目录 - ✅ 保留相对目录结构便于审查 - ✅ 提供临时目录位置,便于用户手动确认删除 ## 例子 假设目录结构如下: ``` ~/.m2/repository/ ├── oorg/apache/commons/commons-lang/ (垃圾) │ └── org/apache/commons/commons-lang/ ├── commons-lang-2.6.jar (有效) └── commons-lang-2.6.pom (有效) ``` 运行脚本后,垃圾目录会被移动到临时目录,如: ``` /tmp/m2-garbage-XXXXXX/oorg/apache/commons/commons-lang/ ``` ## 许可证 本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 许可证。 详见 [LICENSE](LICENSE) 文件。 ## 安全提示 - 在正式运行前,建议先使用 `--dry-run` 模式查看将要处理的目录 - 虽然脚本不会直接删除,但移动后的目录在临时目录中可能会被系统自动清理 - 重要的项目依赖请先备份 ## 技术细节 - **语言**:Perl 5 - **依赖**:仅使用 Perl 标准库 - **要求**:需要 `find` 命令支持 `-empty` 和 `-delete` 选项(Linux/macOS 都支持)