¿Cómo puedo excluir algunas carpetas de mi proyecto Eclipse?

86

Estoy agregando un proyecto de eclipse a nuestra base de código existente, y me gustaría saber si hay alguna manera de excluir algunos directorios para que no sean seleccionados por eclipse. La razón es que tenemos un directorio de "terceros" enorme en nuestro repositorio que no puede estar presente en el proyecto para el complemento de programación de pares que estamos usando para poder sincronizar de manera eficiente.

¿Alguna pista?

jkp
fuente
1
Ya que está relacionado, vea aquí: webtrafficexchange.com/… Al hacer clic con el botón derecho en una carpeta, hacer clic en Propiedades y marcar la casilla "Derivado", en realidad puede mantener sus archivos como archivos de origen, ¡pero luego excluirlos de las búsquedas de archivos!
Andrew

Respuestas:

15

Los filtros ocultarán los recursos de la vista, pero todavía están en el proyecto. Si crea un proyecto en otra ubicación, puede crear recursos vinculados a las carpetas que desea incluir en su proyecto.

Como referencia, publiqué otra respuesta que describe cómo usar los recursos vinculados con más detalle .

Vendedor rico
fuente
Rich: este fue mi enfoque inicial, pero el problema que encontré fue que no podía generar los recursos en relación con el proyecto: toda la ruta estaba codificada. Esto fue un problema porque necesito enviar el proyecto a nuestro SCM. ¿Alguna idea de cómo resolver eso?
jkp
Agregué un enlace a otra respuesta que describe esto con más detalle. Puede usar una variable en las rutas, si los proyectos están en el espacio de trabajo, puede usar WORKSPACE_ROOT
Rich Seller
Fantástico. Sabía acerca de las variables pero no pude hacer que funcionaran antes. Con esto debería estar listo para irme. Gran respuesta: justo lo que estaba buscando.
jkp
195

Hay una forma directa de hacerlo:

  1. Haga clic con el botón derecho en una carpeta de proyecto en el árbol del Explorador de proyectos y vaya a "Propiedades".
  2. Recurso -> Filtros de recursos.
  3. Agregue tantos filtros de exclusión para archivos / carpetas como desee.

PD Si el árbol de su proyecto no se actualiza automáticamente, es posible que deba presionar F5 mientras tiene el foco de entrada en la ventana del Explorador de proyectos.

Gleb Varenov
fuente
8
¡Esta debería ser la respuesta! Esto también funciona para proyectos de C ++ que utilizan carpetas vinculadas.
void.pointer
¿Puede publicar lo que se escribirá en el archivo .project? Mi eclipse no puede guardar ese cambio en este archivo, así que tendré que escribirlo manualmente.
dude
2
Gracias por esta respuesta y, sin embargo, ¿hay alguna forma de excluirlos de la compilación, pero aún así permitir que sean observables y se muestren en el Explorador de proyectos?
Movsar Bekaev
6

Sí, puede colocar un filtro personalizado en su proyecto. En la vista del explorador de proyectos, debería haber una flecha blanca que apunta hacia abajo cerca de la parte superior del panel junto a la pestaña Explorador de paquetes. Haga clic en él y vaya a Filtros. Desde allí, puede especificar ciertos patrones de carpeta que no desea que se detecten marcando la casilla junto a Patrones de filtro de nombre. En este caso, pondría el nombre de la biblioteca de terceros.

AlbertoPL
fuente
1
Alberto: gracias por el puntero, no sabía nada de esto. El único problema es que no puedo encontrar una manera de excluir una carpeta completa. Y como señala Rich, todavía estarán en el proyecto, lo que será un problema para nosotros (supongo que el complemento intentará sincronizarlos).
jkp
Me parece que esta es la única respuesta que es independiente del idioma. Las otras instrucciones no estaban disponibles en mi proyecto basado en Python.
dbn
De hecho, Eclipse oculta las carpetas, pero aún están incluidas en la compilación
Amir Uval
1

La forma en que siempre lo he hecho es verificar explícitamente los proyectos como compañeros. p.ej:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

luego importe sólo "goodproject" en eclipse. Si "3rdparty" es un subdirectorio de goodproject, puede falsificarlo ... Digamos, por ejemplo, que su proyecto svn se ve así:

proyecto/
       src /
          principal/
          Tercera parte/

Puede crear localmente el proyecto / src / luego verificar solo el directorio "principal" y hacer que eclipse dependa de una versión empaquetada (por ejemplo, apunte al jar si su proyecto es java).

inanutshellus
fuente
1

Si desea agregar filtros directamente dentro del archivo .project , estas son algunas reglas:

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

Una .project sección de filtro, por ejemplo:

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