Проект Maven в eclipse - сборка сборки не работает

Извините за подробный...

У меня есть несколько существующих проектов maven. Я импортировал их в Eclipse, используя Maven → Импортировать существующие проекты Maven.

Это дало мне 6 отдельных проектов и один проект, в котором перечислены все 6 под ним. (Зонный проект имеет в нем 6 модулей, которые переведены в 6 проектов eclipse - так как я понимаю, как работает maven)

Один из проектов A требует двух других проектов B и C (во время компиляции и времени выполнения).

Путь сборки - На пути сборки A у меня есть одна из библиотек как зависимости Maven. И он строит отлично.

Развертывание сборки - В сборке развертывания A, однако, нет места для развертывания до web-inf/lib. Из-за этого, когда tomcat начинает, он не находит никаких необходимых банок или проектов B и C. Поэтому я добавил запись в сборку развертывания как: source-maven И установки зависимостей - web-inf/lib. Tomcat появляется, и появляется мой webapp для проекта A.

Это, однако, нарушает работу затмения - после сборки eclipse жалуется: "Неверный экспорт публикации пути к классам. Записи проекта не поддерживаются.

Это видно из-за того, что в пути сборки добавлена ​​новая запись, добавленная в web-inf/lib для публикации/экспорта под зависимостями maven. Удаление, которое удаляет запись maven из сборки развертывания.

Единственным обходным решением является то, что в сборке развертывания я указываю web-inf/lib под целевым объектом, сгенерированным maven, но который вызывает сбор старых экземпляров проектов B и C.

Почему мне нужен этот параметр, потому что, когда я вношу изменения в проекты B и C в Eclipse и создаю их в Eclipse, я хочу видеть изменения, когда я отлаживаю проект A. Я не хочу запускать сборки maven на B и C снова, так как он занимает много времени.

Любая помощь очень ценится.

Я попытался включить MAVEN2_CLASSPATH_CONTAINER, но всегда пуст, и когда tomcat работает, он не может найти необходимые библиотеки. (Кстати, какой vale является MAVEN2_CLASSPATH_CONTATINER установленным?)

Это на Eclipse Indigo Mac OSX.

Ответы

Ответ 1

Для всех, кто ищет это, кажется, что вы также можете вручную добавить следующее в файл .classpath

<classpathentry combineaccessrules="false" kind="src" path="/B"/>

Ответ 2

Вам нужно добавить соответствующие проекты на свою сборку развертывания.

Щелкните правой кнопкой мыши проект → Свойства → Установка развертывания → Добавить

Ответ 3

Я решил просто сделать это:

щелкните правой кнопкой мыши мой проект eclipse- > Maven → Обновить конфигурацию проекта...

Ответ 4

Выяснил это... но не полностью...

Итак, я добавил зависимость maven в сборке развертывания, как я упоминал ранее.

Maven dependency -> WEB-INF/lib

И дополнительно добавил проект B и C:

B -> WEB-INF/lib and C->WEB-INF/lib

Как-то так B и C не добавляются в публикацию/экспорт в пути сборки java. Я не знаю, как eclipse знает, не экспортировать B и C из maven repo, но экспортировать его из самого проекта B и C.

В любом случае, это на другой день. пока я счастлив:)

Ответ 5

У меня была эта проблема, но я считаю, что ни один из этих ответов не исправил проблему. Вместо этого они обрабатывают m2eclipse (который должен управлять классами и сборкой развертывания для вас). Для меня проблема в том, что я использовал m2eclipse без m2eclipse-wtp (отдельный плагин).

См. этот ответ SO для деталей подключаемого модуля.

Ответ 6

Вы можете добавить соответствующие проекты/или запись пути построения maven java, если вы используете maven для своей сборки развертывания (project → properties → Assembly Assembly)

Затем проверяет, соответствуют ли тезисы соответствующему проекту Facets. (проект → Границы проекта)

Ответ 7

Включая зависимости Maven, вы включаете зависимости для проекта B и проекта C. Оказывается, вам также необходимо включать проекты B и C вручную.

Точное исправление, которое работает. проект A → свойства → Развертывание сборки

Нажмите "Добавить", а затем "Проект". Выберите B и C. Проблема будет исправлена ​​после восстановления.

Ответ 8

Эта ошибка может возникнуть, если в вашем классе есть несколько записей одного и того же баннера. Поэтому вам нужно проверить свой путь к классам и удалить повторяющиеся записи.