Java 项目在 Ubuntu 上开发久了,磁盘空间被一点点吃掉,构建时间也可能越来越长。问题通常不只出在项目里的 target 或 build 目录,还可能包括 Maven、Gradle 的本地依赖缓存、系统临时目录,以及 IntelliJ IDEA、Eclipse 生成的 IDE 缓存。
这篇文章按“缓存在哪里、该怎么清、哪些命令风险更高”的顺序来梳理。看完你可以快速判断:是只清当前项目,还是连本地仓库一起重置;哪些操作适合日常处理,哪些应该在确认环境后再执行。
先清项目目录里的构建缓存
如果你只是想解决当前项目构建变慢、编译产物堆积的问题,优先清理项目目录中的构建输出即可。这一层影响最直接,风险也相对可控。
Maven 项目怎么清理
Maven 默认会把编译后的类文件、资源文件等内容放到项目根目录下的 target 文件夹。如果项目目录中包含 pom.xml,可以在项目根目录执行:
mvn clean
这个命令会删除 target 目录及其中内容。
如果你担心清理动作被跳过,也可以使用:
mvn clean -Dmaven.clean.skip=false
Gradle 项目怎么清理
Gradle 项目的构建输出通常位于 build 目录。如果项目根目录中有 build.gradle,可执行:
gradle clean
执行后,build 目录会被清空。
如果除了清理构建结果,还想强制刷新依赖,可以加上:
gradle clean --refresh-dependencies
本地 Maven 和 Gradle 仓库缓存要不要删
项目目录清理完,如果磁盘占用还是很高,下一步就该看本地依赖缓存。Maven 和 Gradle 都会把下载过的 JAR 包和相关元数据保存在用户目录下,时间长了会占掉不少空间。

Maven 本地仓库缓存
Maven 本地仓库默认路径为 ~/.m2/repository,其中 ~ 代表当前用户主目录。清理命令如下:
rm -rf ~/.m2/repository/*
这会删除所有本地 Maven 依赖缓存。下次构建时,相关依赖会重新下载。
Gradle 本地缓存
Gradle 的本地缓存默认位于 ~/.gradle/caches。可执行:
rm -rf ~/.gradle/caches/*
这个目录里不只有依赖包,也可能包含编译缓存等其他内容。删除后,Gradle 后续构建同样会重新拉取和生成需要的文件。
/tmp 里的 Java 临时文件能不能直接删
某些 Java 编译过程会在 /tmp 目录下留下临时文件,例如 .class 临时文件或中间产物。如果你明确要释放系统临时空间,可以执行:
rm -rf /tmp/*
但这一步风险明显更高,因为它删除的是 /tmp 下的全部临时文件,而不只是 Java 相关内容。执行前要先确认没有其他程序正在依赖其中的文件,也不要把它当作日常默认操作。
别忽略 IntelliJ IDEA 和 Eclipse 的缓存
很多时候,构建慢并不完全是命令行工具造成的,IDE 自己也会生成编译输出和索引缓存。尤其在频繁切换分支、升级依赖或导入大型项目后,这一层值得单独处理。

IntelliJ IDEA 清理方式
如果你使用 IntelliJ IDEA,可以通过菜单栏进入:
File > Invalidate Caches / Restart
然后选择:
Invalidate and Restart
这样 IDE 会清理缓存并自动重启。除了 IDE 内部缓存外,项目中的 out 目录也常见于编译输出场景。
Eclipse 清理方式
Eclipse 可以通过菜单栏执行:
Project > Clean
然后选择需要清理的项目。如果希望手动处理,也可以删除项目目录下的 bin 文件夹。
动手前要确认的风险和收尾设置
清缓存不复杂,真正容易出问题的是误删正在使用的文件,或者删完后没有预期到依赖会重新下载。正式执行前,建议先确认下面几件事。
先停掉正在运行的 Java 服务
如果目标机器上有正在运行的 Java 应用,缓存文件可能处于占用状态,直接删除容易失败。可以先停掉相关服务,例如:
sudo systemctl stop your-java-service.service
有自定义缓存就先备份
清理操作通常不可逆。如果项目里有需要保留的自定义缓存、编译优化文件或特殊中间产物,应该先备份,再决定是否删除。
想少生成缓存,可以顺手调整配置
如果你的目标不只是清一次,而是后续尽量少产生缓存,也可以顺带调整构建配置:
- Maven 可在
pom.xml中配置<skip>true</skip>跳过测试编译。 - Gradle 可通过
--no-build-cache禁用构建缓存。
这类配置是否合适,取决于你的构建流程和团队习惯。对本地临时排障有帮助,但不一定适合所有开发环境长期启用。
实用判断:到底该清哪一层
如果只是当前项目构建异常,先用 mvn clean 或 gradle clean 往往就够了;如果磁盘空间持续紧张,再考虑删除 ~/.m2/repository 或 ~/.gradle/caches;只有在明确知道问题涉及系统临时文件时,再动 /tmp。至于 IDE 缓存,更适合用在索引异常、编译状态紊乱、菜单清理可直接恢复的场景。
换句话说,清理 Java 缓存最稳妥的顺序是:项目构建输出、依赖仓库缓存、IDE 缓存,最后才是系统临时目录。按这个顺序处理,通常能减少误删和重复下载带来的额外成本。









