Como posso excluir algumas pastas do meu projeto Eclipse?

86

Estou adicionando um projeto eclipse à nossa base de código existente e gostaria de saber se há uma maneira de excluir alguns diretórios de serem selecionados pelo eclipse. A razão é que temos um enorme diretório de "terceiros" em nosso repositório que não pode estar presente no projeto para o plugin de programação em par que estamos usando para poder sincronizar com eficiência.

Alguma pista?

jkp
fonte
1
Visto que está relacionado, veja aqui: webtrafficexchange.com/… Ao clicar com o botão direito do mouse em uma pasta, clicar em Propriedades e marcar a caixa "Derivado", você pode realmente manter seus arquivos como arquivos de origem, mas excluí-los das pesquisas de arquivos!
Andrew,

Respostas:

15

Os filtros irão ocultar os recursos da visualização, mas eles ainda estão no projeto. Se você criar um projeto em outro local, poderá criar recursos vinculados às pastas que deseja incluir em seu projeto.

Para referência, postei outra resposta que descreve como usar os recursos vinculados com mais detalhes .

Vendedor rico
fonte
Rico: essa foi minha abordagem inicial, mas o problema que encontrei foi que não conseguia fazer os recursos relativos ao projeto: todo o caminho estava codificado. Isso foi um problema porque eu preciso enviar o projeto ao nosso SCM. Alguma ideia de como resolver isso?
jkp
Eu adicionei um link para outra resposta que descreve isso com mais detalhes. Você pode usar uma variável nos caminhos, se os projetos estiverem no espaço de trabalho, você pode usar WORKSPACE_ROOT
Rich Seller
Fantástico. Eu sabia sobre as variáveis, mas não consegui fazê-las funcionar antes. Com isso eu deveria estar pronto para ir. Ótima resposta: exatamente o que eu estava procurando.
jkp
195

Existe uma maneira direta de fazer isso:

  1. Clique com o botão direito em uma pasta de projeto na árvore do Project Explorer e vá para "Propriedades".
  2. Recurso -> Filtros de recurso.
  3. Adicione quantos filtros de exclusão para arquivos / pastas desejar.

PS Se a árvore do seu projeto não for atualizada automaticamente, você pode ter que pressionar F5 enquanto coloca o foco na janela Project Explorer.

Gleb Varenov
fonte
8
Esta deve ser a resposta! Isso também funciona para projetos C ++ que usam pastas vinculadas.
void.pointer
Você pode postar o que será escrito no arquivo .project? Meu eclipse não é capaz de salvar essa alteração neste arquivo, então terei que escrevê-lo manualmente.
cara
2
Obrigado por esta resposta, e ainda, há alguma maneira de excluí-los da compilação, mas ainda deixá-los estar disponíveis e mostrados no Project Explorer?
Movsar Bekaev de
6

Sim, você pode colocar um filtro personalizado em seu projeto. Na visualização do explorador de projeto, deve haver uma seta branca apontando para baixo perto do topo do painel na guia Package Explorer. Clique nele e vá para Filtros. A partir daí, você pode especificar certos padrões de pasta que não deseja detectar marcando a caixa ao lado de Padrões de filtro de nome. Nesse caso, eu colocaria o nome da biblioteca de terceiros.

AlbertoPL
fonte
1
Alberto: obrigado pelo ponteiro, não sabia nada disso. O único problema é que não consigo encontrar uma maneira de excluir uma pasta inteira. E, como Rich aponta, eles ainda estarão no projeto, o que será um problema para nós (acho que o plug-in tentará sincronizá-los).
jkp
Parece-me que esta é a única resposta independente da linguagem. As outras instruções não estavam disponíveis em meu projeto baseado em Python.
dbn
O Eclipse realmente oculta as pastas, mas elas ainda estão incluídas na compilação
Amir Uval
1

A maneira como sempre fiz isso é verificar explicitamente os projetos como pares. por exemplo:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

em seguida, importe apenas "goodproject" para o eclipse. Se "3rdparty" for um subdiretório de goodproject, você pode falsificá-lo ... Digamos, por exemplo, que seu projeto svn seja assim:

projeto/
       src /
          a Principal/
          3ª parte /

Você pode criar localmente project / src / e fazer checkout apenas no diretório "principal" e fazer com que o eclipse conte com uma versão empacotada (por exemplo, aponte para o jar se seu projeto for java).

Inanutshellus
fonte
1

Se você deseja adicionar filtros diretamente dentro do arquivo .project , estas são algumas regras:

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

Uma seção de filtro .project , por exemplo:

    <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>
danilo
fonte