2010-09-02 8 views
3

Je l'ai vu:Eclipse modèle d'exclusion .classpath

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 

Dans mon fichier Eclipse .classpath à plusieurs reprises lors de la création d'un nouveau projet Maven, mais je ne peux pas sembler figurer dehors - ce qui, dans le diable n'exclusion = "**" signifie?

EDIT: Je suppose que ce que j'essaie d'obtenir ici, c'est que, bien qu'il semble exclu = "**" devrait exclure tout dans src/main/ressources, pourtant - ce n'est pas le cas. Lorsque je crée un projet de test et que je le mets dans des dossiers (par exemple: META-INF), ils apparaissent dans les cibles/classes. Pourquoi? Quel est le but de l'exclusion alors?

TIA

Répondre

1

Puisque vous utilisez m2eclipse, le fichier .project dans votre projet contient

<buildCommand> 
    <name>org.maven.ide.eclipse.maven2Builder</name> 
    <arguments> 
    </arguments> 
</buildCommand> 

C'est prépondérant du constructeur Java, et la copie des dossiers/src/main/ressources dans le répertoire/cibles/classes .

Si vous deviez supprimer la commande de construction ci-dessus et nettoyer votre projet, les fichiers dans/src/main/resources devraient disparaître. Si vous ajoutez dans la commande build, vos fichiers doivent réapparaître.

Je me rends compte que cela ne répond pas à la question posée de savoir ce qu'est exclu = "**", mais cela explique le comportement que vous voyez.

2

** est un motif spécial qui correspond à tous les fichiers dans le chemin de base et tous les fichiers dans tous les sous-répertoires de celui-ci. Dans votre exemple, il exclut simplement tous les fichiers à l'intérieur src/main/resources.

+1

Alors pourquoi quand je fais un projet clean tout dans src/main/resources finit-il toujours dans target/classes? – javamonkey79

3

Cela signifie essentiellement «exclure tout». ** est un caractère générique qui correspond à n'importe quel fichier ou répertoire, n'importe où dans une arborescence de répertoires.

Il est utile pour les dossiers Subversion .svn, par exemple, qui peuvent apparaître à n'importe quel niveau dans une arborescence source. Dans ce cas, vous pouvez exclure **/.svn, ce qui correspond à tout dossier .svn. Dans ce cas, **/ correspond à n'importe quel répertoire de l'arborescence.

+0

Pourtant, quand j'ajoute des dossiers et des fichiers sources à src/main/resources, ils apparaissent toujours dans target/classes; cela ne semble pas s'aligner. – javamonkey79

Questions connexes