【问题标题】:How can I exclude some folders from my Eclipse project?如何从我的 Eclipse 项目中排除一些文件夹?
【发布时间】:2019-10-26 12:41:59
【问题描述】:

我正在向我们现有的代码库添加一个 eclipse 项目,我想知道是否有办法完全排除某些目录被 eclipse 拾取?原因是我们的存储库中有一个巨大的“第三方”目录,而我们使用的pair-programming 插件无法在项目中出现该目录以便能够有效地同步。

有什么线索吗?

【问题讨论】:

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

标签: eclipse project


【解决方案1】:

有一个直接的方法:

  1. 右键单击项目资源管理器树中的项目文件夹,然后转到“属性”。
  2. 资源 -> 资源过滤器。
  3. 为文件/文件夹添加任意数量的排除过滤器。

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

【讨论】:

  • 这应该是答案!这也适用于使用链接文件夹的 C++ 项目。
  • 您能否发布将写入 .project 文件的内容?我的 Eclipse 无法将该更改保存到此文件中,因此我必须手动编写它。
  • 感谢您的回答,但是,有没有办法将它们从构建中排除,但仍然让它们可以观察并显示在 Project Explorer 中?
【解决方案2】:

过滤器将从视图中隐藏资源,但它们仍在项目中。 如果您在其他位置创建项目,您可以在要包含在项目中的文件夹中创建 linked resources

作为参考,我发布了another answer that describes how to use linked resources in more detail

【讨论】:

  • Rich:这是我最初的方法,但我发现的问题是我无法使资源与项目相关:整个路径是硬编码的。这是一个问题,因为我需要将项目提交给我们的 SCM。任何想法如何解决这个问题?
  • 我添加了一个指向另一个答案的链接,该答案更详细地描述了这一点。您可以在路径上使用变量,如果项目在工作区中,则可以使用 WORKSPACE_ROOT
  • 太棒了。我确实知道这些变量,但我无法让它们更早地工作。有了这个我应该很高兴。很好的答案:正是我想要的。
【解决方案3】:

是的,您可以在项目中放置自定义过滤器。在您的项目浏览器视图中,Package Explorer 选项卡旁边的面板顶部附近应该有一个白色的向下箭头。单击它,然后转到过滤器。从那里,您可以通过选中名称过滤器模式旁边的框来指定您不希望检测到的某些文件夹模式。在这种情况下,我会输入第 3 方库的名称。

【讨论】:

  • Alberto:感谢您的指点,我对此一无所知。唯一的麻烦是我根本找不到排除整个文件夹的方法。正如 Rich 指出的那样,它们仍然会在项目中,这对我们来说是个问题(我猜插件会尝试同步它们)。
  • 在我看来,这是唯一与语言无关的答案。我的基于 Python 的项目中没有其他说明。
  • Eclipse 确实隐藏了文件夹,但它们仍然包含在构建中
【解决方案4】:

我一直这样做的方式是将项目明确签出为同行。例如:

~/myworkspace/goodproject ~/myworkspace/3rdparty

然后只将“goodproject”导入 Eclipse。如果 "3rdparty" 是 goodproject 的子目录,你可以假装出来......例如,你的 svn 项目看起来像这样:

项目/ 源/ 主要的/ 第三方/

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

【讨论】:

    【解决方案5】:

    如果您想直接在 .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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多