Як налаштувати шлях побудови 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, тому це завжди, здається, привертає людей.
мат б

28
Це було фактично включено вже для мого проекту. Може тому, що я вирішив додати файл POM до вже існуючого проекту? Однак налаштування проекту Maven> Update оновило для мене виправлене. Крім того, саме ця відповідь зрештою привела мене до відкриття тієї панелі інструментів, де я міг би виправити проект. Велике спасибі
Джеймс Гудвін

12
Що робити, якщо в меню правої кнопки миші немає опції "Maven", хоча, здається, у мене встановлено m2eclipse?
dfrankow

85
Ах, "Налаштувати" => "Перетворити в проект Maven" - твій друг!
dfrankow

2
@dfrankow, що якщо опція "Налаштувати" => "Перетворити на проект Maven" не існує ??
vasilakisfil

67

якщо ви стратите

mvn eclipse:clean

слідом за ним

mvn eclipse:eclipse

якщо підготує .classpathфайл затемнення для вас. Тобто ці команди виконуються проти Maven з командного рядка, тобто поза eclipse.


Зауважте, що це працює, використовуючи змінну classpath (M2_REPO) для позначення ваших залежностей, вона не використовує m2eclipse, і я не вірю, що вона підбирає та залежності, які ви додаєте під час роботи над проектом - але це чудово для отримання Початкова установка відбувається
мат b

@matt b: Вам потрібно повторити mvn eclipse: eclipse щоразу, коли ваші залежності змінюються.
Бух

Щоб додати те, що сказав Буб, зробіть mnv eclipse: eclipse в командному рядку та оновлюйте проект Eclipse щоразу, коли ви додаєте більше deps до pom.xml.
Бініл Томас

5
У цьому немає необхідності при використанні плагіна m2eclipse.
Паскаль Thivent

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

29

Я припускаю, що ви використовуєте m2eclipse, як ви це згадали. Однак не ясно, створили ви проект під Eclipse чи ні, тому я спробую висвітлити всі випадки.

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

  2. Якщо ви створили "Maven Project" під Eclipse (Ctrl + N> Maven Project), то він повинен бути вже "Maven готовий".

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

Тепер, щоб додати залежність, клацніть правою кнопкою миші проект і виберіть Maven> Add Dependency ) або відредагуйте пом.

PS: не використовуйте плагін maven-eclipse, якщо ви використовуєте m2eclipse. У цьому абсолютно немає потреби, це буде заплутано, це породжує певний безлад. Ні, насправді, не використовуйте його, якщо ви дійсно не знаєте, що робите.


2
Щойно з'ясував, що плагін maven-eclipse став причиною моїх дивних невирішених помилок залежності. Дякую!
воган

1
Я просто використовую EclipseNeon, завантажений з офіційного сайту. Немає можливості Maven в меню після того, як я створив стандартний проект java. Чи потрібно нам щось встановлювати окремо або все вже завантажено з Neon?
Евокс

@Pascal Thivent, я імпортував проект Maven. Я не в змозі знайти рішення для цього
Syed

19

Додати це у файл .classpath ..

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

Дякую


1
так, мені потрібно додати це вручну скрізь протягом останніх декількох років .... чому б вони не уникнути плагінів затемнення, щоб автоматично відновлювати залежності Maven ??
бритва

1
Дякую за це рішення. Це працювало для мене. Я випадково видалив файли .project та .classpath. Це рішення спрацювало для мене, щоб додати залежність до рівня класу,
Тахір Мехмуд,

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

Працював і для мене. Вирішено більшість моїх відсутніх залежностей, але все-таки є кілька проблем, тому мені цікаво, чи більш зручні рішення не працюють, оскільки десь є невелика помилка (але така поведінка не допомагає налагоджувати проблему ...)
ксеноїд

14

Клацніть правою кнопкою миші на проект Налаштувати> перетворити на проект Maven

Тоді ви можете побачити все пов'язане з Maven меню для вашого проекту.


правильний шлях, якщо ви не створили проект mvn в першу чергу
Hannes Schneidermayer

10

Мені це подобалося ..

Клацніть правою кнопкою миші на проекті -> налаштування -> перетворити на проект maven. Клацніть правою кнопкою миші на проект -> maven -> додайте залежності.


5

У Eclipse (Марс) перейдіть до:

Властивості проекту -> Maven. Переконайтесь, що "Вирішити залежності від проектів робочої області" вимкнено .


Це не вирішило первісну проблему, проте він вирішив ще одну неприємну проблему, яку я мав протягом тижнів - після відключення цього варіанту мій проект, який працював лише з командного рядка Maven, тепер знову запускається всередині затемнення! Дякую!
Білл Хілеман

4

Я не знайшов меню maven або налаштувати, але знайшов таку кнопку, яка вирішила мою проблему:

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


2

Коли m2eclipse встановлений належним чином, він повинен додавати залежності автоматично. Однак слід створити файли проекту затемнення, ввівши:

mvn eclipse:m2eclipse

або, якщо ви не використовуєте m2eclipse:

mvn eclipse:eclipse

3
Увага: оскільки версія 2.8 maven-eclipse-плагін більше не підтримує "eclipse: m2eclipse" (не вдалося знайти причину / інформацію чому)
Wolkenarchitekt

1

У мене були незначні зміни, які спричинили деякі проблеми - кілька підпроектів в рамках одного проекту. У цьому випадку мені потрібно було зайти в кожну окрему папку, яка містила POM, виконати команду mvn eclipse: eclipse і потім вручну скопіювати / об'єднати записи classpath у мій файл classpath проекту.


1

Для новіших версій Eclipse (> = Mars) клацніть правою кнопкою миші на проект> налаштувати> перетворити на проект Maven


1

Додавання моїх відповідей з кількох причин:

  • Якось жодна із перерахованих відповідей не вирішила мою проблему.
  • Не вдалося знайти "Увімкнути управління залежностями" під Maven. Я використовую збірку Eclipse 4.4.2 в середу, 4 лютого 2015 року.

Що мені допомогло, це інший варіант у Maven під назвою "Оновити проект", і тоді, коли я натискаю на нього, відкриється це вікно, у якому є прапорець "Примусове оновлення знімка / релізи". Я знаю справжню мету цього прапорця, але якимось чином вирішив проблему залежностей. введіть тут опис зображення


1

Ніщо з цього не вирішило моєї проблеми. але що я зробив, якщо натиснути на pom.xml, внизу є вкладка, яка називається залежності. на цій вкладці він розділений на 2 розділи, один називається залежностями і один називається управління залежностями. виберіть кожну річ у розділі залежності та натисніть кнопку Додати, щоб опинитися під контролем управління залежністю. закрийте і знову відкрийте свій проект.


0

Можливо, ви можете заглянути в плагін maven-eclipse замість M2Eclipse.

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


затемнення: затемнення погано, додає всі бібліотеки, по одній, до ваших залежностей, замість того, щоб покладатися на Мейвен
бритву

0

Переконайтесь, що ваш POM дотримується конвенції про іменування, а в малих літерах названо як pom.xmlта НЕ POM.xml.

У моєму випадку все було в порядку, але Eclipse все-таки скаржився, намагаючись натиснути правою кнопкою миші і Update project configuration- сказав мені, що POM не можна прочитати. Змінено ім'я на малі - pom.xmlз POM.xml- і воно спрацювало.


0

Я також зустрічався з цим питанням. Коли я додаю залежності в pom.xml, я перевірив локальну папку, /Users/xyz/.m2/і банки вже завантажуються туди, але не можу додати контур збирання затемнення.

Моя версія затемнення: Mars.2 Release (4.5.2)

клацніть правою кнопкою миші проект > Maven > Увімкнути дозвіл робочої області

І це вирішило мою проблему.


0

Як правило, ви можете скопіювати файл .classpath з робочого проекту, оскільки тут немає нічого конкретного проекту, якщо ви структуруєте як стандартний проект Maven.


0

Це працювало для мене в Eclipse Oxygen (4.7.0):

Клацніть правою кнопкою миші Проект -> Maven -> Виберіть Maven Profiles ..., потім встановіть прапорець проксі-сховища, натисніть OK.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.