Шаблон исключения Eclipse .classpath

Я видел это:

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

В моем файле Eclipse .classpath много раз при создании нового проекта Maven, но я не могу понять - что, черт возьми, означает except="**"?

РЕДАКТИРОВАТЬ: я думаю, что я пытаюсь здесь понять, так это то, что, хотя кажется, что exclude="**" должен исключать все в src/main/resources, но это не так. Когда я создаю тестовый проект и помещаю его в папки (например, META-INF), они действительно отображаются в target/classes. Почему? В чем тогда смысл исключения?

ТИА


person javamonkey79    schedule 02.09.2010    source источник


Ответы (3)


Поскольку вы используете m2eclipse, файл .project в вашем проекте содержит

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

Это переопределяет компоновщик Java и копирует папки в /src/main/resources в каталог /target/classes.

Если вы удалите указанную выше команду сборки и очистите свой проект, файлы в /src/main/resources должны исчезнуть. Если вы добавите команду сборки, ваши файлы должны появиться снова.

Я понимаю, что это не отвечает на поставленный вопрос о том, что делает exclude="**", но это объясняет поведение, которое вы видите.

person Matt    schedule 02.09.2010

В основном это означает «исключить все». ** — это подстановочный знак, который соответствует любому файлу или каталогу в любом месте дерева каталогов.

Например, это полезно для папок Subversion .svn, которые могут появляться на любом уровне в дереве исходного кода. В этом случае вы можете исключить **/.svn, который будет соответствовать любой папке .svn. В этом случае **/ соответствует любому каталогу в дереве.

person Richard Fearn    schedule 02.09.2010
comment
Тем не менее, когда я добавляю папки и исходные файлы в src/main/resources, они все равно отображаются в target/classes; это, кажется, не выстраивается. - person javamonkey79; 02.09.2010

** — это специальный шаблон, который соответствует каждому файлу в базовом пути и всем файлам во всех его подкаталогах. В вашем примере он просто исключает все файлы внутри src/main/resources.

person x4u    schedule 02.09.2010
comment
Тогда почему, когда я очищаю проект, все в src/main/resources по-прежнему попадает в target/classes? - person javamonkey79; 02.09.2010