Шаблон исключения Eclipse .classpath - PullRequest
5 голосов
/ 02 сентября 2010

Я видел это:

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

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

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

TIA

Ответы [ 3 ]

3 голосов
/ 02 сентября 2010

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

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

2 голосов
/ 02 сентября 2010

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

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

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

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

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

2 голосов
/ 02 сентября 2010

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

...