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


124

Я хотел бы воспользоваться функциями, которые 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 управляет зависимостями?

Ответы:


116

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


2
m2eclipse не делает этого по умолчанию, если вы импортируете проект, созданный с помощью mvn eclipse: eclipse, поэтому кажется, что это всегда сбивает людей с толку.
matt b

28
Фактически он уже был включен для моего проекта. Может быть, потому что я решил добавить файл POM в существующий проект? Однако выполнение Maven> Обновить конфигурацию проекта, похоже, исправило это для меня. Кроме того, именно ваш ответ в конечном итоге привел меня к открытию той панели инструментов, на которой я мог исправить проект. Большое спасибо
Джеймс Гудвин

12
Что делать, если в контекстном меню нет опции «Maven», хотя кажется, что у меня установлен m2eclipse?
dfrankow

85
Ах, "Configure" => "Convert to Maven Project" - ваш друг!
dfrankow

2
@dfrankow что делать, если параметр «Настроить» => «Преобразовать в проект Maven» не существует ??
vasilakisfil

67

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

mvn eclipse:clean

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

mvn eclipse:eclipse

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


Обратите внимание, что это работает с использованием переменной пути к классам (M2_REPO) для ссылки на ваши зависимости, он не использует m2eclipse, и я не верю, что он улавливает и зависимости, которые вы добавляете, когда вы работаете над проектом, - но он отлично подходит для получения начальная настройка идёт
мэтт б

@matt b: вам нужно переделывать mvn eclipse: eclipse каждый раз, когда ваши зависимости меняются.
Buhb

Чтобы добавить к тому, что сказал Бухб, выполните mnv eclipse: eclipse в командной строке и обновляйте проект Eclipse каждый раз, когда вы добавляете новые deps в pom.xml.
Бинил Томас

5
При использовании плагина m2eclipse в этом нет необходимости.
Паскаль Тивент

3
Я использую плагин m2eclipse, и у меня возникла проблема после импорта существующего проекта maven в eclipse. Сделал mvn eclipse:cleanи mvn eclipse:eclipseфактически решил проблему для меня.
aioobe

29

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

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

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

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

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

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


2
Только что выяснил, что maven-eclipse-plugin был причиной моих странных неразрешенных ошибок зависимостей. Спасибо!
vaughan

1
Я просто использую EclipseNeon, загруженный с официального сайта. После того, как я создал стандартный java-проект, в меню нет опции Maven. Нужно ли нам устанавливать что-то отдельно или все уже загружено с Neon?
Ewoks,

@Pascal Thivent, я импортировал проект Maven. Я не могу найти решение для этого
Сайед

19

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

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

Спасибо


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

1
Спасибо за это решение. Это сработало для меня. Я случайно удалил файлы .project и .classpath. Это решение помогло мне добавить зависимости maven в путь к классам,
Тахир Мехмуд

Ярлык для автоматического создания вышеуказанного файла .classpath: Project -> Maven -> Update Project. В противном случае просто Alt + F5
Venkateswara Rao

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

14

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

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


правильный путь, если вы изначально не создавали проект mvn
Hannes Schneidermayer

10

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

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


5

В Eclipse (Марс) перейдите к:

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


Это не решило исходную проблему, однако это ДЕЙСТВИТЕЛЬНО решило другую неприятную проблему, с которой я сталкивался в течение нескольких недель - после отключения этой опции мой проект, который запускался только из командной строки maven, теперь снова запускается внутри eclipse! Спасибо!
Билл Хайлман

4

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

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


2

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

mvn eclipse:m2eclipse

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

mvn eclipse:eclipse

3
Внимание: начиная с версии 2.8 maven-eclipse-plugin больше не поддерживает "eclipse: m2eclipse" (не удалось найти причину / информацию почему)
Wolkenarchitekt

1

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


1

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


1

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

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

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


1

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


0

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

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


затмение: затмение плохо, добавляет все библиотеки, один за другими, свои зависимости , вместо того , чтобы полагаться на Maven
бритве

0

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

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


0

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

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

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

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


0

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.