Как я могу исключить некоторые папки из моего проекта Eclipse?

86

Я добавляю проект eclipse к нашей существующей кодовой базе, и я хотел бы знать, есть ли способ вообще исключить некоторые каталоги из захвата eclipse? Причина в том, что у нас есть огромный «сторонний» каталог в нашем репозитории, который не может присутствовать в проекте для плагина парного программирования, который мы используем для эффективной синхронизации.

Какие-нибудь подсказки?

jkp
источник
1
Поскольку это связано, см. Здесь: webtrafficexchange.com/… Щелкнув папку правой кнопкой мыши, выбрав «Свойства» и установив флажок «Производные», вы можете сохранить свои файлы как исходные, но затем исключить их из поиска файлов!
Эндрю

Ответы:

15

Фильтры скрывают ресурсы от просмотра, но они все еще находятся в проекте. Если вы создаете проект в другом месте, вы можете создавать связанные ресурсы с папками, которые хотите включить в свой проект.

Для справки я опубликовал еще один ответ, в котором более подробно описано, как использовать связанные ресурсы .

Богатый продавец
источник
Рич: это был мой первоначальный подход, но проблема, которую я обнаружил, заключалась в том, что я не мог выделить ресурсы относительно проекта: весь путь был жестко запрограммирован. Это было проблемой, потому что мне нужно передать проект в SCM. Есть идеи, как это решить?
jkp
Я добавил ссылку на другой ответ, который описывает это более подробно. Вы можете использовать переменную в путях, если проекты находятся в рабочей области, вы можете использовать WORKSPACE_ROOT
Rich Seller
Фантастика. Я знал о переменных, но не мог заставить их работать раньше. С этим мне должно быть хорошо. Отличный ответ: именно то, что я искал.
jkp
195

Есть простой способ сделать это:

  1. Щелкните правой кнопкой мыши папку проекта в дереве Project Explorer и перейдите в «Свойства».
  2. Ресурс -> Фильтры ресурсов.
  3. Добавьте столько фильтров исключения для файлов / папок, сколько захотите.

PS Если ваше дерево проекта не обновляется автоматически, вам, возможно, придется нажать F5, когда фокус ввода находится в окне Project Explorer.

Глеб Варенов
источник
8
Это должен быть ответ! Это также работает для проектов C ++, использующих связанные папки.
void.pointer
Подскажите, пожалуйста, что будет записано в файл .project? Мое затмение не может сохранить это изменение в этом файле, поэтому мне придется записать его вручную.
чувак
2
Спасибо за этот ответ, и все же, есть ли способ исключить их из сборки, но все же позволить им быть наблюдаемыми и отображаться в Project Explorer?
Мовсар Бекаев 09
6

Да, вы можете добавить в свой проект собственный фильтр. В представлении проводника проекта в верхней части панели рядом с вкладкой проводника пакетов должна быть белая направленная вниз стрелка. Щелкните его и перейдите в Фильтры. Оттуда вы можете указать определенные шаблоны папок, которые вы не хотите обнаруживать, установив флажок рядом с Name Filter Patterns. В этом случае я бы поставил имя сторонней библиотеки.

АльбертоПЛ
источник
1
Альберто: спасибо за указатель, я вообще не знал об этом. Единственная проблема в том, что я вообще не могу найти способ исключить целую папку. И, как указывает Рич, они все еще будут в проекте, что будет проблемой для нас (я думаю, плагин попытается их синхронизировать).
jkp
Мне кажется, что это единственный ответ, не зависящий от языка. Других инструкций в моем проекте на Python не было.
dbn
Eclipse действительно скрывает папки, но они по-прежнему включены в сборку
Амир Увал,
1

Я всегда делал это так, чтобы явно проверять проекты как коллеги. например:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

затем импортируйте в eclipse только «хороший проект». Если "3rdparty" является подкаталогом goodproject, вы можете подделать его ... Скажем, например, ваш проект svn выглядит так:

проект /
       src /
          основной/
          3-я сторона /

Вы можете локально создать проект / src /, а затем проверить только «основной» каталог, а eclipse будет полагаться на упакованную версию (например, указать на банку, если ваш проект - java).

inanutshellus
источник
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>
Данило
источник