Распространяется ли настройка в Eclipse на Maven?

Я импортировал проект Maven в Eclipse, но я все еще не уверен, как Maven и Eclipse действительно работают вместе.

Например, Eclipse только что изменил мой файл .classpath, когда я скопировал и вставил исходную папку из одного модуля в другой, пытаясь решить Могут ли модули Google App Engine делиться исходным кодом так же, как модули Maven?:

Eclipse добавил это в .classpath, когда я скопировал/вставил исходный код, который я хочу дублировать в модулях/проектах:

<classpathentry kind="src" path="/nbsocialmetrics-backend"/>

Однако Eclipse не внес никаких изменений в мои файлы POM.xml. Eclipse, кажется, доволен изменением .classpath, которое он сделал для меня, у меня нет никаких предупреждений о компиляции для любого из связанных проектов/модулей. Но mvn clean install на верхнем уровне моего проекта жалуется на множество отсутствующих зависимостей.

Правильно ли я предполагаю, что команда Maven из командной строки, такая как mvn clean install, не будет просматривать файл Eclipse .classpath?

Разве Maven не полагается только на следующее?

  1. Файлы POM.xml
  2. Репозитории, такие как репозиторий Maven Central
  3. Аргументы командной строки, переданные в mvn
  4. Исходный код/ресурсы/и т.д. (материал, который вы хотите создать, а не метаданные, такие как .classpath)

Если я правильно понимаю это, почему Eclipse позволяет мне вносить изменения, которые неверны для проекта Maven, который я импортировал? Какие типы изменений в Eclipse на самом деле безопасно вносить — другими словами, какие типы изменений, которые я делаю в Eclipse, будут отражены, когда я выполню mvn clean install в командной строке?

В качестве другого примера я пытаюсь использовать редактор WindowBuilder Eclipse для некоторого GWT в одном из моих модулей (J2EE/Maven в смысле «модуль», а не GWT в смысле «модуль»). Поскольку я хочу убедиться, что у меня есть правильная версия WindowsBuilder для разрешения Ошибка. Не найден модуль GWT для проекта Maven, импортированного в Eclipse. Должен ли я смотреть на настройки плагина Eclipse или настройки Maven POM.xml? Затмение, в данном случае, верно?

Спасибо, что помогли мне понять.


person Michael Osofsky    schedule 09.12.2014    source источник


Ответы (2)


Правильно ли я предполагаю, что команда Maven из командной строки, такая как mvn clean install, не будет просматривать файл Eclipse .classpath?

Да, Maven не использует этот файл. Этот файл используется Eclipse только для сохранения информации о проекте, а именно исходных каталогов и соответствующих им классов или выходных каталогов, а также записей пути к классам.

Maven полагается на упомянутые вами ресурсы: файл POM, репозитории и т. д.

почему Eclipse позволяет мне вносить изменения, которые не подходят для импортированного проекта Maven?

Даже если проект является проектом Maven, Eclipse по-прежнему позволяет пользователю изменять параметры сборки проекта способом, который может не соответствовать стандартным соглашениям Maven. Например, источник по умолчанию в модуле находится под src/main/java, но ничто не мешает вам щелкнуть правой кнопкой мыши модуль и добавить исходную папку в настройках пути сборки, которая не соответствует этому стандарту (излишне говорить, что это не будет хорошее дело).

Проект Maven в Eclipse — это просто проект, настроенный для использования подключаемого модуля Maven, который позволяет управлять зависимостями с помощью Maven (например, это также может быть проект Groovy).

какие типы изменений, которые я делаю в Eclipse, будут фактически отражены в то время, когда я выполню mvn clean install в командной строке?

Что касается Maven, вся информация присутствует в POM. Следовательно, только изменения, внесенные в POM (добавление зависимости или плагина), должны влиять на поведение Maven при использовании из командной строки.

Поскольку я хочу убедиться, что у меня есть правильная версия WindowsBuilder для устранения ошибки «Модуль GWT не найден» для проекта Maven, импортированного в Eclipse, должен ли я смотреть на настройки плагина Eclipse или настройки Maven POM.xml? Затмение, в данном случае, да?

Да, это должно быть Eclipse, а не Maven. Плагин Maven не имеет ничего общего с функцией WindowBuilder. Проект может быть проектом Maven и в то же время быть настроенным как проект GWT.

person M A    schedule 09.12.2014

Вы должны выбрать ту или иную стратегию, Eclipse не будет писать в ваш POM-файл в большинстве ситуаций, вам следует полагаться только на ваш POM-файл, поскольку таким образом ваш проект будет почти IDE Free, если вы выбрали Maven для управления сборками и зависимостями, используй это.

Вы правы, выполнение mvn clean install не будет заботиться о ваших файлах пути к классам.

Я некоторое время не работал с Eclipse (я рекомендую вам IntelliJ IDEA), но я думаю, что один из способов решить вашу проблему - добавить зависимости в ваш файл POM, а затем добавить эти изменения в ваш путь к классам, а не наоборот.

person Ringo    schedule 09.12.2014