Jak mogę wykluczyć niektóre foldery z mojego projektu Eclipse?


86

Dodaję projekt zaćmienia do naszej istniejącej bazy kodu i chciałbym wiedzieć, czy w ogóle istnieje sposób na wykluczenie niektórych katalogów z przechwytywania przez zaćmienie? Powodem jest to, że w naszym repozytorium mamy ogromny katalog „stron trzecich”, którego nie może być obecny w projekcie dla wtyczki do programowania w parach, której używamy, aby móc wydajnie synchronizować.

Jakieś wskazówki?


1
Ponieważ jest to powiązane, zobacz tutaj: webtrafficexchange.com/… Klikając prawym przyciskiem myszy folder, klikając Właściwości i zaznaczając pole „Pochodne”, możesz faktycznie zachować swoje pliki jako pliki źródłowe, ale następnie wykluczyć je z wyszukiwania plików!
— Andrew

Odpowiedzi:


15

Filtry będą ukrywać zasoby, ale nadal znajdują się w projekcie. Jeśli tworzysz projekt w innej lokalizacji, możesz utworzyć połączone zasoby do folderów, które chcesz uwzględnić w swoim projekcie.

Dla odniesienia opublikowałem inną odpowiedź, która bardziej szczegółowo opisuje, jak korzystać z połączonych zasobów .


Rich: to było moje początkowe podejście, ale problem, który znalazłem, polegał na tym, że nie mogłem powiązać zasobów z projektem: cała ścieżka została zakodowana na stałe. To był problem, ponieważ muszę przekazać projekt do naszego SCM. Jakieś pomysły, jak to rozwiązać?
— jkp

Dodałem link do innej odpowiedzi, która bardziej szczegółowo to opisuje. Możesz użyć zmiennej na ścieżkach, jeśli projekty znajdują się w obszarze roboczym, możesz użyć WORKSPACE_ROOT
— bogaty sprzedawca

Fantastyczny. Wiedziałem o zmiennych, ale nie mogłem zmusić ich do działania wcześniej. Z tym powinienem być dobry. Świetna odpowiedź: właśnie tego szukałem.
— jkp,

195

Jest na to prosty sposób:

  1. Kliknij prawym przyciskiem myszy folder projektu w drzewie Eksploratora projektów i przejdź do „Właściwości”.
  2. Zasób -> Filtry zasobów.
  3. Dodaj tyle filtrów wykluczania plików / folderów, ile chcesz.

PS Jeśli drzewo projektu nie jest aktualizowane automatycznie, może być konieczne naciśnięcie klawisza F5 podczas wprowadzania fokusu w oknie Eksploratora projektów.


8
To powinna być odpowiedź! Działa to również w przypadku projektów C ++ korzystających z połączonych folderów.
— void.pointer

Czy możesz opublikować, co zostanie zapisane w pliku .project? Moje zaćmienie nie jest w stanie zapisać tej zmiany w tym pliku, więc będę musiał zapisać go ręcznie.
— koleś,

2
Dziękuję za tę odpowiedź, a jednak czy jest jakiś sposób, aby wykluczyć je z kompilacji, ale nadal pozwolić im być obserwowalnymi i wyświetlanymi w Eksploratorze projektów?
— Movsar Bekaev

6

Tak, możesz umieścić niestandardowy filtr w swoim projekcie. W widoku eksploratora projektu powinna znajdować się biała strzałka skierowana w dół w pobliżu górnej części panelu przy karcie Eksplorator pakietów. Kliknij go i przejdź do Filtry. W tym miejscu możesz określić wzorce folderów, których nie chcesz wykrywać, zaznaczając pole obok opcji Wzorce filtrów nazw. W takim przypadku podałbym nazwę biblioteki innej firmy.


1
Alberto: dzięki za wskazówkę, w ogóle o tym nie wiedziałem. Jedynym problemem jest to, że nie mogę w ogóle znaleźć sposobu na wykluczenie całego folderu. I jak zaznacza Rich, nadal będą w projekcie, co będzie dla nas problemem (myślę, że wtyczka będzie próbowała je zsynchronizować).
— jkp

Wydaje mi się, że jest to jedyna odpowiedź niezależna od języka. Inne instrukcje nie były dostępne w moim projekcie opartym na języku Python.
— dbn

Eclipse rzeczywiście ukrywa foldery, ale nadal są one zawarte w kompilacji
— Amir Uval

1

Sposób, w jaki zawsze to robiłem, polega na jawnym sprawdzaniu projektów jako współpracownicy. na przykład:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

następnie importuj tylko „dobry projekt” do zaćmienia. Jeśli „3rdparty” jest podkatalogiem goodproject, możesz to sfałszować ... Załóżmy na przykład, że Twój projekt svn wygląda tak:

projekt/
       src /
          Główny/
          Strona trzecia /

Możesz lokalnie utworzyć projekt / src /, a następnie pobrać tylko katalog "główny" i sprawić, że eclipse będzie polegać na wersji spakowanej (np. Wskaż jar, jeśli twój projekt to java).


1

Jeśli chcesz dodać filtry bezpośrednio w pliku .project , oto kilka reguł:

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

Na przykład jedna sekcja filtrów .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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.