Как работать с оверлеями Maven WAR в Eclipse? - PullRequest
16 голосов
/ 13 декабря 2011

У меня есть многомодульный проект Maven, в котором используются оверлеи WAR (стек их по 3 в глубину).В Maven все работает отлично, но я не могу запустить мою WAR из Eclipse, потому что он жалуется на то, что не находит различные файлы.

Как я могу настроить Eclipse (и модуль запуска), чтобы я мог запустить свою WAR изЗатмение без предварительной установки Maven?Я должен добавить, что мои проекты Eclipse WAR не являются динамическими веб-проектами ... это часть того, что мне нужно делать?

ПРИМЕЧАНИЕ. Следующий вопрос затрагивает эту тему, но ответ указывает, что вы должны всегдасначала выполните установку Maven, и я знаю, что это не может быть правильным, потому что есть люди, которые используют Eclipse без Maven.

Оверлеи Maven и Eclipse

Я такженашел это, что заставляет меня думать, что это невозможно через ванильный M2E:

http://jira.codehaus.org/browse/MNGECLIPSE-599

1 Ответ

18 голосов
/ 08 марта 2012

Мне удалось это сделать, и все прекрасно работает.Вот что нужно сделать:

Прежде всего вам необходим плагин M2E Eclipse, который необходим для того, чтобы Eclipse автоматически распознавал и обновлял зависимости Maven.Это также обеспечивает хороший графический редактор POM.По состоянию на конец 2011 года проект M2Eclipse был пожертвован фонду Eclipse компанией Sonatype и теперь называется просто M2E .Однако он все еще не поставляется с выпуском Eclipse Indigo для Java EE и должен устанавливаться отдельно через сайт обновлений

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

M2E имеет длинный список специальных соединителей, которые позволяют ему выполнять «правильную задачу» при вызове различных моджо (целей плагина Maven).Чтобы увидеть список доступных соединителей в Eclipse, перейдите в диалоговое окно «Параметры» и выберите «Maven» -> «Доставка» -> «Открыть каталог».Предполагается, что эти соединители устанавливаются автоматически при обнаружении в файле {{pom.xml}} во время импорта проекта.Однако для этого требуется правильная версия мастера импорта M2E Maven (которого у Indigo нет до SR2).

Кроме того, иногда эти разъемы содержат ошибки, и нам необходимо использовать сайты ночных или бета-обновлений для получения последних исправлений.Если у вас более старая или ошибочная версия, вам нужно удалить и повторно импортировать проекты после обновления.По этим причинам, по моему мнению, все разъемы M2E должны быть установлены вручную перед импортом вашего проекта в Eclipse.

Соединитель M2E-WTP - это тот, который необходим для работы наложений WAR в средствах запуска Eclipse для Eclipse «Серверы».Этот соединитель используется для интеграции Maven с WTP ... и, таким образом, обрабатывает наложения WAR, настройку контейнера сервлета, настройку Eclipse WTP, настройку корневого контекста и другие вещи, которые все делают для того, чтобы сделать веб-инструмент Eclipse "Just Work", когда модуль Maven WARимпортируется в Eclipse как проект.

Сайт обновления для коннектора m2e-wtp: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

Добавьте этот сайт M2E-WTP и установите коннектор.Однако обратите внимание, что ни M2E, ни соединитель M2E-WTP не будут помещать зависимости накладываемой WAR в окончательную WAR.Вы должны сделать это, добавив необходимые зависимости в окончательный WAR pom.xml.Я не знаю, почему инструменты не делают этого, но они этого не делают, так что просто преодолейте это.; -)

На этом этапе я бы также порекомендовал сделать полное обновление через {{Help-> Check for Updates}}.После этого вы сможете просто добавить сервер Eclipse, щелкнуть ваш проект (не оверлейный, а обычный) и выбрать «Выполнить на сервере ...».

Произведенные изменениялибо WAR, либо наложенная WAR будет автоматически опубликована на вашем сервере.Изменения Javascript публикуются без перезапуска сервера ... все, что вам нужно сделать, это нажать обновить в браузере, чтобы увидеть, как работает новый код.

Второе обновление : ошибка (https://issues.sonatype.org/browse/MECLIPSEWTP-174) в M2E, что может привести к тому, что каталог WEB-INF / lib случайно потеряет все свои JAR-файлы. Когда это произойдет, приложение сервлета, очевидно, не запустится. Обходной путь - очистить сервер, щелкнув правой кнопкой мыши на сервере.и выберите «очистить». Обратите внимание, что очистка рабочего каталога сама по себе не восстановит эти отсутствующие JAR.

...