Проект Maven в eclipse - сборка развертывания завершается неудачно - PullRequest
14 голосов
/ 23 июля 2011

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

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

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

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

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

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

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

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

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

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

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

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

Это на Eclipse Indigo Mac OSX.

Ответы [ 8 ]

37 голосов
/ 26 июля 2011

Вам необходимо добавить соответствующий проект (ы) в вашу сборку развертывания.

Проект правой кнопкой мыши -> Свойства -> Сборка развертывания -> Добавить

7 голосов
/ 12 декабря 2013

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

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

5 голосов
/ 28 июля 2011

Разобрался ... но не полностью ...

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

Maven dependency -> WEB-INF/lib

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

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

Каким-то образом B и C не добавляются в публикацию / экспорт в пути сборки Java. Я не знаю, как Eclipse знает не экспортировать B и C из репозитория Maven, а экспортировать их из самого проекта B и C.

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

1 голос
/ 26 мая 2013

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

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

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

1 голос
/ 03 марта 2012

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

<classpathentry combineaccessrules="false" kind="src" path="/B"/>
0 голосов
/ 15 мая 2017

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

0 голосов
/ 23 мая 2013

Вы можете добавить соответствующие проекты / или запись пути сборки Java Java, если используете maven в сборку развертывания (проект -> свойства -> сборка развертывания)

Затем проверяет, совместимы ли эти проекты. (проект -> Аспекты проекта)

0 голосов
/ 08 марта 2013

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

См. этот SO-ответ для получения сведений о плагине.

...