Как настроить путь сборки Eclipse для использования зависимостей Maven?

Я хотел бы воспользоваться функциями, которые Maven предоставляет для управления зависимостями в проекте. Мое краткое понимание того, как работает Maven, заключается в том, что он получит необходимые JAR-файлы, а затем построит проект с этими библиотеками.

В настоящее время у меня есть простой файл POM, настроенный как тест:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jamesgoodwin.test</groupId>
  <artifactId>com.jamesgoodwin.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Для управления зависимостями я обычно добавляю проект или JAR в путь сборки, и тогда я смогу построить свой проект.

Но при использовании M2Eclipse зависимости не добавляются автоматически в путь сборки. Есть ли какая-либо конфигурация, позволяющая Eclipse знать, что Maven управляет зависимостями?


person James Goodwin    schedule 10.01.2010    source источник


Ответы (18)


Если вы щелкните свой проект правой кнопкой мыши, в разделе «maven» должна быть опция «включить управление зависимостями». Вот и все.

person Buhb    schedule 10.01.2010
comment
m2eclipse не делает этого по умолчанию, если вы импортируете проект, созданный с помощью mvn eclipse: eclipse, поэтому кажется, что это всегда сбивает людей с толку. - person matt b; 10.01.2010
comment
Фактически он уже был включен для моего проекта. Может быть, потому что я решил добавить файл POM в существующий проект? Однако выполнение Maven ›Обновить конфигурацию проекта, похоже, устранило это для меня. Кроме того, именно ваш ответ в конечном итоге привел меня к тому, что я обнаружил ту панель инструментов, на которой я мог исправить проект. Большое спасибо - person James Goodwin; 10.01.2010
comment
Что делать, если в контекстном меню нет опции Maven, хотя у меня, кажется, установлен m2eclipse? - person dfrankow; 21.04.2012
comment
Ах, Configure = ›Convert to Maven Project - ваш друг! - person dfrankow; 21.04.2012
comment
Путь Джеймса - это то, что нужно сделать, если вы добавили POM в проект, который не был построен как проект Maven. - person Vivek; 26.09.2012
comment
@dfrankow, что если Configure = ›Преобразовать в проект Maven не существует ?? - person vasilakisfil; 21.01.2013
comment
@Filippos Понятия не имею. Другая версия Eclipse? Другой или отсутствующий плагин Maven? - person dfrankow; 22.01.2013
comment
Если это не удается с сообщением об ошибке в eclipse, взгляните на scandio.de/2012/10/, где описан обходной путь. - person s.Daniel; 04.04.2014
comment
Для Eclipse Mars (v4.5) исправление состоит в том, чтобы щелкнуть правой кнопкой мыши и выбрать Maven = ›Включить разрешение рабочей области. - person Saheed; 08.10.2015
comment
@Saheed Для Eclipse Mars включение разрешения рабочего пространства у меня не сработало. Все мои зависимости maven по-прежнему не находятся на пути сборки. Я пробовал все другие рекомендуемые решения ... все равно не повезло. - person user1491636; 28.01.2016
comment
@ user1491636 - Нормально ли создается проект maven из командной строки или возникают ошибки, например, при выполнении mvn compile install? - person Saheed; 28.01.2016
comment
@Saheed Он отлично работает с maven. Eclipse по-прежнему помечает большинство классов ошибками, потому что ни одна из зависимостей не отображается в пути сборки. - person user1491636; 28.01.2016
comment
@Saheed Итак, я понял, что если я вручную добавлю следующий classpathentry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER в файл .classpath, тогда будут добавлены некоторые зависимости maven. Однако это только те зависимости от моего родительского pom, а не от моего модуля (дочернего) pom. - person user1491636; 28.01.2016
comment
Я использую STS, путь к классам есть, и нет такой опции, как включить управление зависимостями :( - person Shilan; 09.11.2016

если вы выполните

mvn eclipse:clean

с последующим

mvn eclipse:eclipse

if подготовит для вас файл eclipse .classpath. То есть эти команды запускаются против maven из командной строки, то есть вне eclipse.

person davek    schedule 10.01.2010
comment
Обратите внимание, что это работает с использованием переменной пути к классам (M2_REPO) для ссылки на ваши зависимости, он не использует m2eclipse, и я не верю, что он улавливает и зависимости, которые вы добавляете, когда вы работаете над проектом, - но он отлично подходит для получения начальная настройка идет - person matt b; 10.01.2010
comment
@matt b: вам нужно повторять mvn eclipse: eclipse каждый раз, когда ваши зависимости меняются. - person Buhb; 10.01.2010
comment
Чтобы добавить к тому, что сказал Буб, выполните mnv eclipse: eclipse в командной строке и обновляйте проект Eclipse каждый раз, когда вы добавляете новые deps в pom.xml. - person Binil Thomas; 10.01.2010
comment
При использовании плагина m2eclipse в этом нет необходимости. - person Pascal Thivent; 10.01.2010
comment
Я использую плагин m2eclipse, и у меня возникла проблема после импорта существующего проекта maven в eclipse. Выполнение mvn eclipse:clean и mvn eclipse:eclipse фактически устранило проблему для меня. - person aioobe; 10.07.2012
comment
Отличное решение, если вы не используете плагин m2eclipse. - person Nile; 02.08.2014
comment
Эти команды у меня не работали. Они запустились и преуспели, но в моей папке lib не было новых jar-файлов. Обязательно ли мне использовать Eclipse EE? Я не вижу m2eclipse на рынке, но у меня есть интеграция Maven для Eclipse (Luna и новее) 1.5. У меня Luna 64bit, но нет EE. Я, наверное, должен начать с EE. - person Skychan; 15.01.2016

Я предполагаю, что вы используете m2eclipse, как вы это упомянули. Однако неясно, создавали ли вы свой проект в Eclipse или нет, поэтому я постараюсь охватить все случаи.

  1. Если вы создали проект «Java» в Eclipse (Ctrl + N> Проект Java), то щелкните проект правой кнопкой мыши в представлении Проводник пакетов и перейдите к Maven> Включить управление зависимостями (в зависимости от исходной структуры проекта вы можете изменить ее, чтобы она соответствовала структуре maven, например, добавив src/java в исходные папки на пути сборки).

  2. Если вы создали «Maven Project» в Eclipse (Ctrl + N> Maven Project), он должен быть уже «Maven готов».

  3. Если вы создали проект Maven вне Eclipse (вручную или с использованием архетипа), просто импортируйте его в Eclipse (щелкните правой кнопкой мыши по проводнику пакетов view и выберите Импорт ...> Maven Projects), и он будет "Maven ready".

Теперь, чтобы добавить зависимость, либо щелкните правой кнопкой мыши проект и выберите Maven> Добавить зависимость) или отредактируйте pom вручную.

PS: избегайте использования maven-eclipse-plugin, если вы используете m2eclipse. В этом нет абсолютно никакой необходимости, это будет сбивать с толку, создаст путаницу. Нет, правда, не используйте его, если вы действительно не знаете, что делаете.

person Pascal Thivent    schedule 10.01.2010
comment
Только что выяснил, что maven-eclipse-plugin был причиной моих странных неразрешенных ошибок зависимостей. Спасибо! - person vaughan; 27.06.2011
comment
Я просто использую EclipseNeon, загруженный с официального сайта. После того, как я создал стандартный java-проект, в меню нет опции Maven. Нужно ли нам что-то устанавливать отдельно или все уже загружено с Neon? - person Ewoks; 22.02.2016
comment
@Pascal Thivent, я импортировал проект Maven. Я не могу найти решение для этого - person Syed; 15.06.2016

Добавьте это в файл .classpath ..

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

Спасибо

person Apurva Singh    schedule 08.08.2016
comment
да, мне нужно добавить это вручную повсюду в течение последних нескольких лет .... почему они не внедряют плагины eclipse для автоматического распознавания зависимостей maven ?? - person razor; 04.05.2017
comment
Спасибо за это решение. Это сработало для меня. Я случайно удалил файлы .project и .classpath. Это решение помогло мне добавить зависимости maven в путь к классам, - person Tahir Mehmood; 23.04.2018
comment
Ярлык для автоматического создания вышеуказанного файла .classpath: Project - ›Maven -› Обновить проект. В противном случае просто Alt + F5. - person Venkateswara Rao; 09.01.2019
comment
У меня тоже сработало. Решено большинство моих недостающих зависимостей, но все еще есть пара проблем, поэтому мне интересно, не работают ли более удобные для пользователя решения, потому что где-то есть небольшая ошибка (но такое поведение не помогает отладить проблему ...) - person xenoid; 31.01.2019

Щелкните правой кнопкой мыши проект "Настроить"> "преобразовать в проект Maven".

Затем вы можете увидеть все меню, связанное с Maven для вашего проекта.

person DevJav    schedule 09.11.2011
comment
правильный путь, если вы изначально не создавали проект mvn - person Hannes Schneidermayer; 06.06.2018

Мне это понравилось ..

Щелкните правой кнопкой мыши проект -> настроить -> преобразовать в проект maven. Щелкните правой кнопкой мыши проект -> maven -> добавить зависимости.

person madhu_karnati    schedule 11.09.2013

В Затмении (Марс) перейдите к:

Свойства проекта -> Maven. Убедитесь, что параметр «Устранение зависимостей из проектов рабочей области» отключен.

person Thomas Beer    schedule 10.09.2015
comment
Это не решило исходную проблему, однако это ДЕЙСТВИТЕЛЬНО решило другую неприятную проблему, с которой я сталкивался в течение нескольких недель - после отключения этой опции мой проект, который запускался только из командной строки maven, теперь снова запускается внутри eclipse! Спасибо! - person Bill Hileman; 20.04.2018

Я не нашел maven или меню настройки, но нашел следующую кнопку, которая решила мою проблему:

введите описание изображения здесь

person borjab    schedule 19.06.2014

Когда m2eclipse установлен правильно, он должен автоматически добавлять зависимости. Однако вы должны сгенерировать файлы проекта eclipse, введя:

mvn eclipse:m2eclipse

или, в качестве альтернативы, если вы не используете m2eclipse:

mvn eclipse:eclipse
person EJB    schedule 10.01.2010
comment
Внимание: начиная с версии 2.8 maven-eclipse-plugin больше не поддерживает eclipse: m2eclipse (не удалось найти причину / информацию почему) - person Wolkenarchitekt; 13.08.2010

У меня была небольшая вариация, которая вызвала некоторые проблемы - несколько подпроектов в одном проекте. В этом случае мне нужно было зайти в каждую отдельную папку, содержащую POM, выполнить команду mvn eclipse: eclipse, а затем вручную скопировать / объединить записи пути к классам в мой файл пути к классам проекта.

person Mearde    schedule 03.02.2011

Для более новых версий Eclipse (> = Mars) щелкните правой кнопкой мыши проект> настроить> преобразовать в проект Maven

person JBoy    schedule 23.08.2016

Добавляю свои ответы по нескольким причинам:

  • Каким-то образом ни один из перечисленных ответов напрямую не решил мою проблему.
  • Я не смог найти «Включить управление зависимостями» в Maven. Я использую сборку Eclipse 4.4.2 в среду, 4 февраля 2015 г.

Мне помогла еще одна опция в Maven под названием «Обновить проект», а затем, когда я щелкаю по ней, открывается это окно, в котором есть флажок с надписью «Принудительное обновление снимков / выпусков». Настоящая цель этого флажка отличается, я знаю, но каким-то образом он решил проблему с зависимостями. введите здесь описание изображения

person Saurabh Patil    schedule 18.05.2017

Ничего из этого не решило мою проблему. но я сделал следующее: если щелкнуть pom.xml, внизу будет вкладка с именем dependencies. на этой вкладке он разделен на 2 раздела: один называется зависимостями, а второй - управлением зависимостями. выберите все элементы в разделе зависимостей и нажмите кнопку «Добавить», чтобы перейти под контроль управления зависимостями. закройте и снова откройте свой проект.

person amralieg    schedule 15.02.2018

Возможно, вы могли бы изучить maven-eclipse-plugin вместо M2Eclipse.

Там вы в основном добавляете конфигурацию maven-eclipse-plugin в свой pom.xml, а затем выполняете mvn eclipse:eclipse, который генерирует необходимые файлы .project и .classpath для Eclipse. Тогда у вас будет правильный путь сборки в Eclipse.

person Juha Syrjälä    schedule 10.01.2010
comment
eclipse: eclipse плохой, добавляет все библиотеки одну за другой к вашим зависимостям вместо того, чтобы полагаться на Maven - person razor; 04.05.2017

Убедитесь, что ваш POM соответствует соглашению об именах и назван строчными буквами как pom.xml, а НЕ POM.xml.

В моем случае все было правильно, но Eclipse все еще жаловался при попытке щелкнуть правой кнопкой мыши и Update project configuration - сказал мне, что POM не может быть прочитан. Изменил имя на строчные - pom.xml с POM.xml - и все заработало.

person Karun    schedule 27.02.2017

Я тоже столкнулся с этой проблемой. Когда я добавляю зависимости в pom.xml, я проверил локальную папку /Users/xyz/.m2/, и банки уже загружены туда, но не могу добавить путь сборки eclipse.

Моя версия eclipse: Mars.2 Release (4.5.2)

щелкните правой кнопкой мыши проект> Maven> Включить разрешение рабочего пространства

И это решило мою проблему.

person Eddy    schedule 21.06.2017

Как правило, вы можете скопировать файл .classpath из рабочего проекта, поскольку здесь нет ничего конкретного, если вы структурированы как стандартный проект Maven.

person Puneet Lamba    schedule 25.09.2017

Это сработало для меня в Eclipse Oxygen (4.7.0):

Щелкните правой кнопкой мыши Project -> Maven -> Select Maven Profiles ... затем установите флажок Repository Proxy, нажмите OK.

person r590    schedule 13.10.2017