專案引入 SVN/Git 後,.svn、.git 目錄滿天飛,干擾「Open Type」、「Search」、「Package Explorer」視圖。Eclipse 提供兩種層級的過濾機制,本文實測對比優劣,給出最佳組合策略。
src/main/java)**/.svn/**、**/.git/**、**/.hg/**效果:編譯器忽略版控目錄,不會產生 .class,「Open Type」(Ctrl+Shift+T) 不會搜到版控資料夾內的類。
.svn、.git、.hg、CVS效果:Package Explorer 直接隱藏、專案搜尋 (Ctrl+H) 排除、甚至檔案系統層級刷新不顯示,最徹底。
| 維度 | Build Path Excluded | Resource Filters |
|---|---|---|
| 隱藏 Package Explorer | ❌ | ✅ |
| 編譯排除 | ✅ | ✅ (間接) |
| Open Type / Call Hierarchy | ✅ 排除 | ✅ 排除 |
| 檔案搜尋 (Ctrl+H) | ❌ 仍搜尋 | ✅ 排除 |
| Team/CVS/SVN 操作 | 不影響 | 不影響 |
| 適用範圍 | 單一 Source Folder | 整個專案 |
# .settings/org.eclipse.jdt.core.prefs (Build Path Excluded 自動產生)
source.. = src/main/java/ \
src/test/java/
src/main/java/excludes = **/.svn/**,**/.git/**
src/test/java/excludes = **/.svn/**,**/.git/**
# .settings/org.eclipse.core.resources.prefs (Resource Filters 自動產生)
filters = name=.svn|name=.git|name=.hg|name=CVS,1,1
.settings/ 目錄至版控,新成員 Checkout 即生效Maven 專案 maven-eclipse-plugin 可自動產生:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.10</version>
<configuration>
<sourceExcludes>**/.svn/**,**/.git/**</sourceExcludes>
</configuration>
</plugin>
Gradle eclipse 插件同理:
eclipse {
sourceSets {
main {
java {
exclude '**/.svn/**', '**/.git/**'
}
}
}
}
.svn 內的 *.class → 重新開啟 → Clean Project。target/ 建議加入 Resource Filters (Exclude, Folder, name=target),避免搜尋到編譯產物。**「Resource Filters 隱藏 UI、Build Path Excluded 保編譯」**,雙管齊下,配置入版控,團隊零干擾。