Eclipse Maven项目执行release:perform后锁定target/checkout目录问题
Eclipse更新后Maven Release与Git目录锁定问题
近期更新Eclipse后出现异常:维护一个基于Git的Eclipse Maven项目时,通过命令行执行mvn release:perform后,Eclipse会自动锁定项目下的target\checkout文件夹,导致无法执行mvn clean命令,必须关闭Eclipse才能解除锁定。
报错信息
命令行执行mvn clean时的错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project broker-permserver: Failed to clean project: Failed to delete D:\coding\dev\broker-permserver\target\checkout\.git\objects\pack\pack-7d131c816204f9e3e9105e10e092fa77b3bac607.pack -> [Help 1]
Eclipse内尝试删除该目录时的提示:
Problems encountered while deleting resources. Folder contains an active Git repository. The folder cannot be moved, renamed or deleted until the team provider is disconnected.
环境版本
- Eclipse版本:2023-03 (4.27.0),Build id:20230309-1520
- EGit版本:6.5.0.202303070854-r
解决办法
临时应急方案
- 在Eclipse中定位到
target\checkout文件夹,右键选择 Team -> Disconnect,确认断开Git关联后,即可正常执行mvn clean或删除该目录。 - 执行
mvn release:perform完成后,先在Eclipse中右键项目选择 Refresh,再执行上述断开操作,能降低Eclipse自动锁定仓库的概率。
永久规避方案
- 修改Maven Release插件配置
在项目的pom.xml中指定临时检出目录到Eclipse工作区外,避免Eclipse自动扫描并锁定该Git仓库:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.0.0</version> <configuration> <!-- 将临时检出目录设置到用户目录下的临时文件夹 --> <checkoutDirectory>${user.home}/tmp/maven-release-checkout</checkoutDirectory> </configuration> </plugin>
- 排除Eclipse对target目录的自动扫描
- 打开Eclipse偏好设置:Window -> Preferences -> General -> Workspace -> Resource Filters
- 点击 Add,选择 Exclude all,勾选 Files and folders,输入
target作为匹配模式,应用设置后Eclipse将不再自动索引target目录下的内容。
内容的提问来源于stack exchange,提问作者Sam Goldberg
相关产品推荐
相关产品推荐

