Comment puis-je exclure certains dossiers de mon projet Eclipse?

86

J'ajoute un projet eclipse à notre base de code existante, et j'aimerais savoir s'il existe un moyen d'exclure du tout certains répertoires de la prise en charge par eclipse? La raison est que nous avons un énorme répertoire "tiers" dans notre référentiel qui ne peut pas être présent dans le projet pour le plugin de programmation par paires que nous utilisons pour pouvoir se synchroniser efficacement.

Des indices?

jkp
la source
1
Puisqu'il est lié, voir ici: webtrafficexchange.com/ ... En cliquant avec le bouton droit sur un dossier, en cliquant sur Propriétés et en cochant la case "Dérivé", vous pouvez réellement conserver vos fichiers en tant que fichiers source, mais les exclure des recherches de fichiers!
Andrew

Réponses:

15

Les filtres masqueront les ressources de la vue, mais elles sont toujours dans le projet. Si vous créez un projet dans un autre emplacement, vous pouvez créer des ressources liées aux dossiers que vous souhaitez inclure dans votre projet.

Pour référence, j'ai publié une autre réponse qui décrit plus en détail comment utiliser les ressources liées .

Vendeur riche
la source
Rich: c'était mon approche initiale, mais le problème que j'ai trouvé était que je ne pouvais pas rendre les ressources relatives au projet: tout le chemin était codé en dur. C'était un problème car je dois valider le projet dans notre SCM. Des idées pour résoudre cela?
jkp
J'ai ajouté un lien vers une autre réponse qui décrit cela plus en détail. Vous pouvez utiliser une variable sur les chemins, si les projets sont dans l'espace de travail, vous pouvez utiliser WORKSPACE_ROOT
Rich Seller
Fantastique. Je connaissais les variables mais je n'ai pas pu les faire fonctionner plus tôt. Avec cela, je devrais être prêt à partir. Excellente réponse: exactement ce que je cherchais.
jkp
195

Il y a une manière simple de le faire:

  1. Cliquez avec le bouton droit sur un dossier de projet dans l'arborescence de l'Explorateur de projets et accédez à "Propriétés".
  2. Ressource -> Filtres de ressources.
  3. Ajoutez autant de filtres d'exclusion pour les fichiers / dossiers que vous le souhaitez.

PS Si votre arborescence de projet n'est pas mise à jour automatiquement, vous devrez peut-être appuyer sur F5 tout en ayant le focus d'entrée dans la fenêtre Explorateur de projet.

Gleb Varenov
la source
8
Cela devrait être la réponse! Cela fonctionne également pour les projets C ++ utilisant des dossiers liés.
void.pointer
Pouvez-vous s'il vous plaît poster ce qui sera écrit dans le fichier .project? Mon éclipse ne peut pas enregistrer cette modification dans ce fichier, je vais donc devoir l'écrire manuellement.
dude
2
Merci pour cette réponse, et pourtant, existe-t-il un moyen de les exclure de la construction, tout en les laissant être observables et affichés dans l'Explorateur de projets?
Movsar Bekaev
6

Oui, vous pouvez placer un filtre personnalisé sur votre projet. Dans la vue de l'explorateur de projet, il doit y avoir une flèche blanche pointant vers le bas près du haut du panneau près de l'onglet Explorateur de packages. Cliquez dessus et allez dans Filtres. À partir de là, vous pouvez spécifier certains modèles de dossier que vous ne souhaitez pas détecter en cochant la case en regard de Modèles de filtre de nom. Dans ce cas, je mettrais le nom de la bibliothèque tierce.

AlbertoPL
la source
1
Alberto: merci pour le pointeur, je ne savais pas du tout à ce sujet. Le seul problème est que je ne trouve pas du tout un moyen d'exclure un dossier entier. Et comme Rich le souligne, ils seront toujours dans le projet, ce qui sera un problème pour nous (je suppose que le plugin essaiera de les synchroniser).
jkp
Il me semble que c'est la seule réponse qui soit indépendante de la langue. Les autres instructions n'étaient pas disponibles dans mon projet basé sur Python.
dbn
Eclipse cache en effet les dossiers, mais ils sont toujours inclus dans la construction
Amir Uval
1

La façon dont je l'ai toujours fait est de vérifier explicitement les projets en tant que pairs. par exemple:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

puis importez uniquement "goodproject" dans eclipse. Si "3rdparty" est un sous-répertoire de goodproject, vous pouvez le simuler ... Disons par exemple que votre projet svn ressemble à ceci:

projet/
       src /
          principale/
          3ème partie/

Vous pouvez créer localement le projet / src / puis extraire uniquement le répertoire "principal", et faire en sorte qu'éclipse repose sur une version packagée (par exemple, pointez vers le fichier jar si votre projet est java).

inanutshellus
la source
1

Si vous souhaitez ajouter des filtres directement dans le fichier .project , voici quelques règles:

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

Une section de filtre .project par exemple:

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