M2Eclipse не может найти зависимости, когда они являются проектами в одной рабочей области - PullRequest
1 голос
/ 15 декабря 2010

Я знаю, что существуют различные известные проблемы с плагином M2eclipse, и я думаю, что это только одна из них. Надеюсь, кто-то знает о решении или обходном пути.

В нашем рабочем пространстве около 30 проектов, но для ясности предположим, что их всего 2: A en B.

B включает A в качестве зависимости в pom.xml of B. Проблема в том, что в Eclipse классы A не могут быть найдены, поэтому вы получаете ошибки компиляции. Однако, если вы установили mvn для развертывания в локальном репозитории и закрытия проекта A, все в порядке; нет ошибок компиляции. Таким образом, если A существует в проекте, M2Eclipse, похоже, не сможет правильно установить путь к классу в eclipse.

Чтобы сделать вещи более странными, у нас также есть проект C, который также зависит (точно так же, как B) от проекта A, но здесь у нас нет ошибок компиляции. Мы не можем выявить ничего значимого различия между проектом B или C; как сказано, они включают A таким же образом.

спасибо за вашу помощь, Стейн

P.S. Я использую плагин версии 0.10.2.20100623

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

РАЗРЕШЕНО

наконец, после мучительных часов я нашел причину.Я сосредоточился на файлах .classpath и .settings, но проблема была в файле .project.В этом файле в проекте A отсутствовала следующая запись в теге natures:

<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

Добавление этой проблемы решило проблему.

2 голосов
/ 15 декабря 2010

Я уже сталкивался с таким поведением раньше, и это происходило со мной в прошлом, когда я импортировал или извлекал проекты maven отдельно.

Предварительное условие: убедитесь, что у вас установлен m2extras, прежде чем проверять мультимодульный проект Maven: сайт обновления

Первое, что нужно попробовать: щелкните правой кнопкой мыши каждый проект и выберите Maven -> обновить конфигурацию проекта. Плагин может быть достаточно умным, чтобы обнаружить, что он может создавать ссылки на проекты между проектами.

Второе, что нужно попробовать (если все ваши 30 проектов - это субмодули одного корня): это будет проще всего, потому что вы можете использовать SCM-интеграцию m2eclipse, чтобы выполнить «Checkout as Maven Project ...» на корневом модуле , M2eclipse создаст проект для суперпома и для каждого подмодуля, с соответствующими ссылками на проект.

Третья попытка: я бы попытался вручную создать ссылки проекта в настройках проекта каждого проекта, чтобы отразить их взаимозависимости. Это было бы много работы, и если вы не включите в свой затмение .project / .settings (eww), это нужно будет сделать индивидуально для каждой рабочей копии.

...