Почему M2Eclipse жалуется на отсутствие артефакта, а в командной строке mvn - нет?

Я только что установил новую установку Eclipse Helios и настроил M2Eclipse для использования внешней (v 2.2.1) установки Maven.

Система отлично компилируется в командной строке, но внутри M2Eclipse несколько модулей моего проекта имеют ошибку:

Missing artifact javax.jms:jms:jar:1.1:test

Я могу обойти ошибку, исключив артефакт jms из зависимостей Atomikos. Но мой главный вопрос заключается в том, как они могут давать разные результаты!

Еще более странно то, что у меня есть другая установка Eclipse Helios, и все работает нормально.


person HDave    schedule 25.11.2010    source источник


Ответы (4)


Преобразователь зависимостей в m2eclipse не использует внешнюю установку Maven, он должен использовать встроенную версию Maven. Итак, я бы рекомендовал получить последнюю версию m2eclipse, а также версию Maven 3.x, чтобы минимизировать разницу в разрешении зависимостей.

person Eugene Kuleshov    schedule 25.11.2010
comment
Итак, M2Eclipse уже использует M3 для внутреннего использования? Кажется немного пугающим то, что M2 и M3 предоставляют разные разрешения зависимостей… хотя и только на одном артефакте из сотен. Спасибо за совет. - person HDave; 25.11.2010
comment
Проблема в том, что ядро ​​Maven 2.x на самом деле не встраивается. Maven 3.x включает множество изменений, позволяющих внутренним компонентам работать внутри IDE. - person Eugene Kuleshov; 25.11.2010
comment
Я столкнулся с той же проблемой, и мне удалось обойти ее, не установив последнюю версию maven. Вместо этого я перешел в «Настройки» -> «Maven» -> «Установки» и заполнил поле с пометкой «Глобальные настройки для встроенной установки» с помощью /Users/myName/.m2/settings.xml… это сработало для меня, потому что у меня есть локальный сервер Nexus, который обслуживает некоторые зависимости проекта, которые не доступны публично. - person pohl; 28.02.2012

Кроме того, возможно, что в файле maven 2.2.1 conf/settings.xml у вас были определенные альтернативные репозитории. Если вы используете встроенный maven3, они будут проигнорированы.

Вы также можете указать свою установку maven 2.2.1 в качестве установки maven для m2eclipse.

person mglauche    schedule 25.11.2010
comment
Как я упоминал в исходном посте, моя установка 2.2.1 настроена как внешняя установка для M2Eclipse. Проблема, по словам Кулешова выше, заключается в том, что M2Eclipse все равно использует свой внутренний Maven3 для разрешения зависимостей. - person HDave; 26.11.2010

Я задавал аналогичный вопрос и, наконец, нашел ответ. См. m2eclipse говорит, что отсутствует артефакт, но я могу построить из командной строки!
Вы можете найти другое решение по адресу http://getsatisfaction.com/sonatype/topics/_missing_artifact_from_m2eclipse_but_it_is_not_true

person Pino    schedule 07.04.2011

Та же проблема: я использую maven 2.2.1 в качестве установки для использования из eclipse, так как это тот, который работает в командной строке. Maven 3 не работает для этого конкретного проекта, жалуясь на некоторые отсутствующие зависимости, которые после долгих исследований в моем случае оказались из старых репозиториев maven 1 с устаревшей компоновкой. Maven 3 ненавидит их и разрыдается, когда находит их.

Таким образом, maven 2 отлично работает в командной строке, а maven 3 - нет. Проблема с eclipse заключается в том, что даже если вы укажете maven 2 в качестве установки для сборки своих проектов, она использует maven 3 (встроенную установку) для разрешения зависимостей, поэтому, если вам так не повезло, что вам нужен устаревший репозиторий, вы облажались (я имею в виду , затмение не поможет).

person Rafa    schedule 23.09.2011