Wie kann ich einige Ordner von meinem Eclipse-Projekt ausschließen?

86

Ich füge unserer vorhandenen Codebasis ein Eclipse-Projekt hinzu und möchte wissen, ob es eine Möglichkeit gibt, einige Verzeichnisse von der Erfassung durch Eclipse auszuschließen. Der Grund dafür ist, dass wir in unserem Repository ein riesiges "Drittanbieter" -Verzeichnis haben, das im Projekt für das von uns verwendete Paarprogrammier- Plugin nicht vorhanden sein kann, um eine effiziente Synchronisierung durchführen zu können.

Irgendwelche Hinweise?

jkp
quelle
1
Weitere Informationen finden Sie hier: webtrafficexchange.com/… Wenn Sie mit der rechten Maustaste auf einen Ordner klicken, auf Eigenschaften klicken und das Kontrollkästchen "Abgeleitet" aktivieren , können Sie Ihre Dateien tatsächlich als Quelldateien behalten und sie dann von der Dateisuche ausschließen!
Andrew

Antworten:

15

Filter verbergen Ressourcen aus der Ansicht, befinden sich jedoch noch im Projekt. Wenn Sie ein Projekt an einem anderen Ort erstellen, können Sie verknüpfte Ressourcen mit den Ordnern erstellen , die Sie in Ihr Projekt aufnehmen möchten.

Als Referenz habe ich eine weitere Antwort veröffentlicht, in der die Verwendung verknüpfter Ressourcen ausführlicher beschrieben wird .

Reicher Verkäufer
quelle
Rich: Dies war mein ursprünglicher Ansatz, aber das Problem, das ich fand, war, dass ich die Ressourcen nicht relativ zum Projekt herstellen konnte: Der gesamte Pfad war fest codiert. Dies war ein Problem, da ich das Projekt an unser SCM übergeben muss. Irgendwelche Ideen, wie man das löst?
JKP
Ich habe einen Link zu einer anderen Antwort hinzugefügt, die dies ausführlicher beschreibt. Sie können eine Variable auf den Pfaden verwenden. Wenn sich die Projekte im Arbeitsbereich befinden, können Sie WORKSPACE_ROOT
Rich Seller
Fantastisch. Ich wusste über die Variablen Bescheid, konnte sie aber nicht früher zum Laufen bringen. Damit sollte ich gut gehen können. Tolle Antwort: genau das, wonach ich gesucht habe.
JKP
195

Es gibt einen direkten Weg, dies zu tun:

  1. Klicken Sie mit der rechten Maustaste auf einen Projektordner in der Projekt-Explorer-Struktur und gehen Sie zu "Eigenschaften".
  2. Ressource -> Ressourcenfilter.
  3. Fügen Sie beliebig viele Ausschlussfilter für Dateien / Ordner hinzu.

PS Wenn Ihr Projektbaum nicht automatisch aktualisiert wird, müssen Sie möglicherweise F5 drücken, während Sie den Eingabefokus im Projekt-Explorer-Fenster haben.

Gleb Varenov
quelle
8
Dies sollte die Antwort sein! Dies funktioniert auch für C ++ - Projekte mit verknüpften Ordnern.
void.pointer
Können Sie bitte posten, was in die .project-Datei geschrieben wird? Meine Eclipse kann diese Änderung nicht in dieser Datei speichern, daher muss ich sie manuell schreiben.
Alter
2
Vielen Dank für diese Antwort. Gibt es dennoch eine Möglichkeit, sie vom Build auszuschließen, sie aber dennoch sichtbar zu machen und im Projektexplorer anzuzeigen?
Movsar Bekaev
6

Ja, Sie können Ihrem Projekt einen benutzerdefinierten Filter hinzufügen. In Ihrer Projekt-Explorer-Ansicht sollte sich auf der Registerkarte "Paket-Explorer" oben im Bedienfeld ein weißer nach unten zeigender Pfeil befinden. Klicken Sie darauf und gehen Sie zu Filter. Von dort aus können Sie bestimmte Ordnermuster angeben, die nicht erkannt werden sollen, indem Sie das Kontrollkästchen neben Namensfiltermuster aktivieren. In diesem Fall würde ich den Namen der Drittanbieter-Bibliothek eingeben.

AlbertoPL
quelle
1
Alberto: Danke für den Hinweis, das wusste ich überhaupt nicht. Das einzige Problem ist, dass ich keinen Weg finden kann, einen ganzen Ordner überhaupt auszuschließen. Und wie Rich betont, werden sie weiterhin im Projekt sein, was für uns ein Problem sein wird (ich denke, das Plugin wird versuchen, sie zu synchronisieren).
JKP
Es scheint mir, dass dies die einzige Antwort ist, die sprachunabhängig ist. Die anderen Anweisungen waren in meinem Python-basierten Projekt nicht verfügbar.
dbn
Eclipse versteckt zwar die Ordner, aber sie sind immer noch im Build enthalten
Amir Uval
1

Ich habe es immer so gemacht, dass ich Projekte explizit als Peers auschecke. z.B:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

Importieren Sie dann nur "goodproject" in Eclipse. Wenn "3rdparty" ein Unterverzeichnis von goodproject ist, können Sie es vortäuschen ... Nehmen wir zum Beispiel an, Ihr SVN-Projekt sieht folgendermaßen aus:

Projekt/
       src /
          Main/
          3. Partei /

Sie können das Projekt / src / lokal erstellen und dann nur das "Haupt" -Verzeichnis auschecken und Eclipse auf eine gepackte Version verlassen lassen (z. B. auf das JAR zeigen, wenn Ihr Projekt Java ist).

inanutshellus
quelle
1

Wenn Sie Filter direkt in die .project- Datei einfügen möchten , gelten folgende Regeln:

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

Ein .project Filterabschnitt zum Beispiel:

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