如何从Eclipse项目中排除某些文件夹?


86

我在现有的代码库中添加了一个eclipse项目,我想知道是否有一种方法可以完全排除某些目录以免被eclipse占用?原因是我们的存储库中有一个庞大的“第三方”目录,该目录无法在项目中显示,因为我们正在使用它们来高效地进行配对编程插件。

有什么线索吗?


1
由于它是相关的,请参见:webtrafficexchange.com/…通过右键单击一个文件夹,单击“属性”,然后选中“派生”框,您实际上可以将文件保留为源文件,但从文件搜索中排除它们!
安德鲁

Answers:


15

过滤器将隐藏资源,但它们仍在项目中。如果在其他位置创建项目,则可以将链接的资源创建到要包含在项目中的文件夹。

作为参考,我发布了另一个答案,该答案详细描述了如何使用链接的资源


Rich:这是我最初的方法,但是我发现的问题是我无法使资源相对于项目:整个路径都是硬编码的。这是一个问题,因为我需要将该项目提交给我们的SCM。任何想法如何解决?
jkp

我添加了指向另一个答案的链接,该链接对此进行了更详细的描述。您可以在路径上使用变量,如果项目在工作空间中,则可以使用WORKSPACE_ROOT
Rich Seller 2009年

太棒了 我确实知道这些变量,但是我无法让它们更早地工作。有了这个我应该很好。很好的答案:正是我想要的。
jkp

195

有一个直接的方法:

  1. 右键单击“项目资源管理器”树中的项目文件夹,然后转到“属性”。
  2. 资源->资源过滤器。
  3. 根据需要为文件/文件夹添加尽可能多的排除过滤器。

PS如果您的项目树没有自动更新,则在Project Explorer窗口中输入焦点时可能必须按F5键。


8
这应该是答案!这也适用于使用链接文件夹的C ++项目。
void.pointer 2014年

您能将要写入的内容张贴到.project文件中吗?我的日食无法将该更改保存到此文件,因此我将不得不手动编写它。
花花公子

2
感谢您提供此答案,但是,是否有任何方法可以将它们从构建中排除,但仍然可以使它们易于观察并显示在Project Explorer中?
Movsar Bekaev '16

6

是的,您可以在项目上放置自定义过滤器。在项目资源管理器视图中,Package Explorer选项卡的面板顶部附近应该有一个白色的向下箭头。单击它,然后转到过滤器。在此处,您可以通过选中名称过滤器样式旁边的框来指定不想检测的某些文件夹样式。在这种情况下,我将放置第3方库的名称。


1
Alberto:感谢您的指导,我一点也不知道。唯一的麻烦是我根本找不到一种排除整个文件夹的方法。正如Rich指出的那样,它们仍将存在于项目中,这对我们来说将是一个问题(我想插件将尝试使其同步)。
jkp

在我看来,这是唯一与语言无关的答案。其他说明在基于Python的项目中不可用。
dbn 2012年

Eclipse确实隐藏了这些文件夹,但它们仍包含在构建中
Amir Uval

1

我一直这样做的方法是将项目作为对等方明确地签出。例如:

〜/ myworkspace / goodproject
〜/ myworkspace / 3rdparty

然后仅将“ goodproject”导入eclipse中。如果“ 3rdparty”是goodproject的子目录,则可以伪造它。例如,您的svn项目如下所示:

项目/
       src /
          主要/
          第三方/

您可以在本地创建project / src /,然后仅检出“ main”目录,并使eclipse依赖于打包版本(例如,如果您的项目是Java,则指向jar)。


1

如果要直接在.project文件中添加过滤器,请遵循以下规则:

    <type>6</type> <!-- exclude all, files -->
    <type>5</type> <!-- include only, files -->
    <type>13</type> <!-- include only, files and folders -->
    <type>26</type><!-- exclude all, folders, all children -->

    <arguments>1.0-name-matches-false-false-xyz</arguments> <!-- case sensitive=false, regular expression=false, something named=xyz -->
    <arguments>1.0-name-matches-true-false-EEE</arguments> <!-- case sensitive = true, regular expression = false, something named=EEE -->
    <arguments>1.0-name-matches-false-false-www</arguments> <!--case sensitive=false, regular expression = false, something named=www -->

例如一个.project过滤器部分:

    <filteredResources>
        <filter>
            <id>1567020347706</id>
            <name></name>
            <type>6</type> <!-- exclude all, files -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-abc</arguments>
            </matcher>
        </filter>
        <filter>
            <id>1567020347708</id>
            <name></name>
            <type>5</type> <!-- include only, files -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-xyz</arguments> <!-- case sensitive=false, regular expression=false -->
            </matcher>
        </filter>
        <filter>
            <id>1567020347711</id>
            <name></name>
            <type>13</type>
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-mno</arguments>
            </matcher>
        </filter>
        <filter>
            <id>1567020347713</id>
            <name></name>
            <type>26</type><!-- exclude all, folders, all children -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-true-false-EEE</arguments> <!-- case sensitive = true, regular expression = false -->
            </matcher>
        </filter>
        <filter>
            <id>1567020347716</id>
            <name></name>
            <type>26</type> <!-- exclude all, folders, all children -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-www</arguments> <!-- case sensitive = false, regular expression = false -->
            </matcher>
        </filter>
    </filteredResources>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.