2013-02-11 5 views
4

я начал замечать эти атрибуты в моем файле .classpath после запуска Maven -> Update Project... инструмента с Update project configuration from pom.xml опции проверен:почему m2e плагин для затмения вставки дополнительного атрибута SRC и то, что он делает

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src"> 
     <attributes> 
      <attribute name="optional" value="true"/> 
      <attribute name="maven.pomderived" value="true"/> 
     </attributes> 
    </classpathentry> 
    ... 
</classpathentry> 

Атрибута, который сделал меня Подними мои брови больше всего: <attribute name="optional" value="true"/>.

Что делать? Он выглядит подозрительно подозрительным, поскольку я не нахожу ничего необязательного в своих исходных файлах Java в проекте.

+0

Я мало знаю о внутренней работе затмения, но вы можете иметь проекты Maven без папки src (например, родительские и агрегирующие проекты). Без «необязательного» конфигурация классов классов выше будет ломаться для таких проектов. – Cephalopod

+0

да, но проект проекта java проекта, и у него есть исходная папка. В этом нет ничего необязательного. –

+0

Зависит от вашего определения «необязательный». Без «src» он все равно будет действительным проектом maven. И нигде в помпе вы не указали, что папка не является необязательной (я подозреваю); поэтому, возможно, вам нужна папка, но она необязательна для всех задействованных инструментов. – Cephalopod

ответ

2

Это добавлено, потому что папка src является дополнительной папкой для maven. Проект не должен жаловаться, если отсутствует src. (Фактически по умолчанию это должно быть src/main/java и src/test/java). Это означает, что добавление или удаление src в качестве исходного файла не требует обновления конфигурации maven.

Этот атрибут не обязательно должен присутствовать в вашем случае, но он ясно показывает, что maven не заботится о том, существует ли исходная папка, пока все может быть скомпилировано (поэтому Eclipse тоже не заботится).

+0

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

+0

Независимо от того, считаете ли вы, что это лишнее, вот как реализуется m2e. :-) Я предполагаю, что причина этого решения в том, что если ваш проект изначально * не имел * папку src/main/java, и один был добавлен, это было бы выбрано maven и контролируется m2e. –