【问题标题】:Eclipse file search finds the same file multiple timesEclipse 文件搜索多次找到同一个文件
【发布时间】:2013-02-25 10:25:51
【问题描述】:

在 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>

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

【问题讨论】:

  • 我不明白为什么您会在项目 A 中看到该文件。我在 Eclipse 中没有相同的行为。
  • 你的子项目是父项目的子目录吗?您的项目是 m2e 项目吗?
  • 我的项目是m2e项目,但是child不是parent的子目录
  • 好的,我明白了,我以为你有一些奇怪的源副本,但你的孩子是父母的子目录。然后某人发布(但已删除)的答案是正确的,请使用“选定资源”范围进行搜索。
  • 如果我不知道哪个资源包含我的文件怎么办?

标签: eclipse maven


【解决方案1】:

我个人为避免这种情况所做的是将父项目中的每个模块标记为派生(右键单击文件夹>属性>属性:派生)。

然后在执行文件搜索时,取消选中“考虑派生资源”(我认为默认情况下不会选中),您将不会得到A/B/&lt;my_file&gt;

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

【讨论】:

  • 请注意,如果您使用 GIT,此解决方案将不起作用,因为它会不断修改 .gitignore 文件以排除“派生”项目。
  • @DamonHorrell 您可以在 Eclipse Luna 中将 EGit 配置为不自动将派生文件添加到 .gitignore 文件中。在首选项中,转到团队 > Git > 项目。然后取消选中“通过将派生资源添加到 .gitignore 来自动忽略它们”。
  • 使用 AutoDeriv 插件github.com/nodj/AutoDeriv,您可以以非常类似于 .gitignore 的方式自动化派生资源。这个插件允许专门为 Eclipse 定义“.derived”文件。通过这种方式,您可以添加所有子项目以自动忽略。
  • 嗨,Ryan Bennetts ...感谢您的帖子这正是日食的问题。它有十万个选项来配置每个方面,因为事情不能正常工作。我希望 netbeans 有更多的性能。 Eclipse 感觉就像一个级联的混乱。您在 Mvn 中有多个资源。像上面一样添加派生标志。然后 Git 忽略模块。转到首选项,勾选选项以禁用自动添加到 git-ignore 文件。我的天啊!它永远不会以日食结束。这东西比 netbeans 和 intelliJ 快,但是上帝...简化这个混乱!Eclipse 本身已经成为一种解决方法!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    检查 Window -> Preferences -> Maven -> 隐藏物理嵌套模块的文件夹(实验性)Mars.1 Release (4.5. 1).

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

    【讨论】:

    • 自火星以来,从 Project Explorer 的视图菜单中:Project Presentation > Hierarchical。但是,这仅适用于 Project Explorer,不适用于搜索等其他视图。
    【解决方案4】:

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

    【讨论】:

    • 自火星以来,从 Project Explorer 的视图菜单中:Project Presentation > Hierarchical。但是,这仅适用于 Project Explorer,不适用于搜索等其他视图。
    【解决方案5】:

    我有类似的问题。

    我对这个问题的解决方案是

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

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

      • 自火星以来,从 Project Explorer 的视图菜单中:Project Presentation > Hierarchical。但是,这仅适用于 Project Explorer,不适用于搜索等其他视图。
      【解决方案7】:

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

      我通过使用资源过滤器解决了这个问题:

      1. 右键单击(父)项目> 属性 > 资源 > 资源过滤器
      2. 点击添加过滤器...,选择应用于 -> 文件夹并输入一个子项目的文件夹名称,点击确定
      3. 对所有子项目文件夹重复 2.

      到最后,你应该有这样的东西:

      【讨论】:

        【解决方案8】:

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

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

        有几种可能的解决方案:

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

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

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

        3. 使用flat multi-module approach。这是对 #2 的扩展,它看起来很奇怪,并且 可能 有插件会因此受到冒犯。所以如果你使用了很多非标准的插件,你应该检查他们是否喜欢新的布局。

        【讨论】:

        • 仅供参考,最近有一些关于错误 245412 的进展:在 4.5 版中,项目将直观地嵌套在项目资源管理器中。它还没有修复搜索对话框中的重复条目,但至少有一些进展。
        【解决方案9】:

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

        但是它将文件夹添加到我的 .gitignore 中,这将导致以后添加的新文件/目录出现问题。我刚刚将更改还原为 .gitignore,它仍然可以在 eclipse 中使用。

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

        【讨论】:

          【解决方案10】:

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

          如果您将 maven-release-plugin 与 Subversion 以外的版本控制系统一起使用,则可能需要注意。

          【讨论】:

            【解决方案11】:

            除了提到的“隐藏物理嵌套模块的文件夹”之外,您还可以在导入 Maven 项目时取消选中父模块

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-04-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多