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?

jkp
źródło
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 .

Bogaty sprzedawca
źródło
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.

Gleb Varenov
źródło
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.

AlbertoPL
źródło
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).

inanutshellus
źródło
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>
danilo
źródło