Eclipse文件搜索多次查找同一文件

时间:2013-02-25 10:25:52

标签: eclipse maven

在Eclipse中我有两个maven项目A和B,其中A是B的父项。目录结构如下:

A/pom.xml
A/B/pom.xml
A/B/...

然后我使用文件搜索(Ctrl + H)查找项目B中的任何文件。搜索结果窗口以不同的相对路径显示文件两次:

A/B/<my_file>
B/<my_file>

因此,同一个文件显示两次。显然,第一个搜索结果是reduntant。有没有办法排除这些重复的搜索结果?

11 个答案:

答案 0 :(得分:37)

我个人为避免这种情况而做的是将父项目中的每个模块标记为派生(右键单击文件夹&gt; properties&gt; Attributes:Derived)。

然后,当您执行文件搜索时,取消选中“考虑派生资源”(我认为默认情况下不会选中),您将无法获得A/B/<my_file>

唯一的不便是您必须为每个模块执行此操作,并且每次添加新模块时都会这样做。

答案 1 :(得分:12)

检查窗口 - &gt;偏好 - &gt; Maven - &gt; 隐藏物理嵌套模块的文件夹(实验性的) Mars.1发布(4.5.1)中为我工作。

检查后,我关闭了eclipse中的所有项目,删除了eclipse项目文件( .project,.classpath .settings )并重新导入了我的maven项目。

答案 2 :(得分:7)

在打开的资源窗口(cntrl + shift + R)中,单击右上角的箭头并选中“过滤重复资源”。这对我有用。

答案 3 :(得分:4)

Windows - 首选项 - Maven - 隐藏物理嵌套模块的文件夹

答案 4 :(得分:2)

我同意Damon Horrell的观点。 转到Windows - 首选项 - Maven - 隐藏物理嵌套模块的文件夹(确保选中该复选框)。

注意:确保将maven项目重新导入到eclipse中以查看更改。

答案 5 :(得分:2)

我有类似的问题。

我解决这个问题的方法是

  1. 创建要搜索的项目的eclipse“工作集”
  2. 将此工作集设置为搜索对话框中的选项
  3. 在其中搜索

    example search dialog

答案 6 :(得分:1)

有一个古老的bug which requests Eclipse to support nested projects。我想,2008年开业,不会很快发生。

由于Eclipse不支持Maven的默认嵌套模块布局,因此您必须单独导入每个模块,这不会混淆Eclipse,但它可能会让您感到困惑,因为您可以在搜索结果中看到。当您开始在模块中保存启动配置时,会发生类似的事情。

有几种可能的解决方案:

  1. 习惯忽略搜索结果的一半。需要一些纪律,但没有魔力。

  2. 确保您的根项目不包含您可能希望从Eclipse打开的任何重要项目(即将父POM移动到必须是根项目的子项的新模块)。现在您可以关闭根项目。

    在你的项目中放置一些东西需要一些纪律,当你必须添加新模块时,它会很笨拙。

  3. 使用flat multi-module approach。这是对#2的扩展,它看起来很奇怪,并且可能是被冒犯的插件。因此,如果您使用大量非标准插件,则应检查他们是否喜欢新布局。

答案 7 :(得分:1)

在父项目中,孩子们已经在视觉上隐藏在我的案例中,但仍然可以通过搜索和 Ctrl - 点击链接找到。

我使用资源过滤器

解决了这个问题
  1. 右键单击(父级)项目&gt; 属性&gt; 资源&gt; 资源过滤器
  2. 点击添加过滤器... ,选择适用于 - &gt; 文件夹并输入一个子项目的文件夹名称,单击确定
  3. 对所有子项目文件夹重复2.
  4. 最后,你应该有这样的事情:enter image description here

答案 8 :(得分:0)

您可以使用flat multi-module approach解决此问题。

如果您将maven-release-plugin与Subversion之外的版本控制系统一起使用,则可以应用警告。

答案 9 :(得分:0)

作为一个新的木匠,仍然无法发表评论,但我真的想补充一些最佳答案。有用!它不仅为我删除了重复文件(一个来自子模块,一个来自父模块),它还从父模块中删除了类文件。)

但它将文件夹添加到我的.gitignore中,这会导致以后添加的新文件/目录出现问题。我只是将更改恢复为.gitignore,它仍然适用于eclipse。

找到此答案以禁用.gitignore的自动更改 EGit and Eclipse modifies .gitignore file but it should not

答案 10 :(得分:0)

除了上面提到的“隐藏物理嵌套模块的文件夹”外,我还找到了另一种简单的解决方案,只需导入 Maven 项目时取消选中父模块enter image description here