Отсутствие зависимостей Maven в проекте Eclipse
У нас есть проект, созданный с maven для разрешения зависимостей. Обычно он работает нормально, но теперь я пытаюсь скомпилировать и запустить его на новом ПК, и у меня проблема с отсутствующими зависимостями в Eclipse.
Забавно, что если я запускаю "mvn package" в консоли или в eclipse, он отлично работает и даже производит войну, содержащую все необходимые банки. Только Eclipse жалуется на "Проект не был построен, так как его путь сборки неполный. Не удается найти файл класса для org.slf4j.Logger...". Если я сравниваю проект с каким-то другим компьютером (там, где работает проект отлично), я замечаю, что в разделе "Зависимости Maven" в Eclipse имеется немало библиотек. Несмотря на то, что они находятся в упакованной войне, их также можно найти в папке репозитория.
Итак, в jar-s есть только Eclipse, которые не будут перечислять их в разделе "Зависимости Maven". Что я могу сделать?
Компьютер работает в Windows 7 с 64-битной java и eclipse.
Ответы
Ответ 1
Проблема решена!
Я не знаю, что именно решило, но я сделал 4 вещи в Eclipse:
- Окно- > Настройки: Maven- > Установки: Глобальные настройки → открытый файл и жестко закодированный localRepository
- Project- > Clean
- щелкните правой кнопкой мыши по проекту: Maven- > Обновить зависимости
- щелкните правой кнопкой мыши по проекту: Maven- > Обновить конфигурацию проекта
Я предполагаю, что это были зависимости Update, поскольку сразу после первых двух изменений не было.
Ответ 2
Хорошо, я попробовал все, что было здесь, к сожалению, ничего не работает в моем случае. Поэтому, пытаясь разного рода комбинаций, я вышел с этой проблемой, которая решила мою проблему.
1) Откройте файл .classpath в корне вашего проекта eclipse.
2) Вставьте следующую запись в файл:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
Затем перестройте проект в eclipse (Project- > Clean-Build).
Теперь вы можете проверить на пути Java Build Path вашего проекта на вкладке "Библиотеки", в которую включены зависимости Maven:
![enter image description here]()
Ответ 3
Я также новичок в Eclipse, и у меня была аналогичная проблема, когда Eclipse просто не распознает оператор импорта, хотя все признаки указывают на успешную загрузку зависимостей.
Вы должны проверить, действительно ли ваш файл зависимостей загружен, перейдя в командную строку и набрав
mvn dependency:tree
Если вы видите свой пакет там, но Eclipse не признает его, то, что работает для меня (иногда), - это перейти к терминалу, cd в папку проекта и ввести
mvn eclipse:clean
тогда
mvn eclipse:eclipse
Наконец обновить проект в eclipse
Я не знаю, почему это работает, и иногда это не работает один раз, а затем повторное выполнение работы... так стоит попробовать!
Ответ 4
Мой проект был просто испорчен. Вот как я исправил его для Eclipse Indigo x64 (J2EE 3.7.3):
- Удалил мой POM файл (конечно, поддерживается).
- Контекстное меню проекта > Maven > Отключить природу Maven.
- Удалено проект (но не содержимое на диске).
- Повторно импортировано как Импорт > Общий > Существующий проект.
- Контекстное меню проекта > Настроить > Преобразовать в проект Maven....
- Принять настройки по умолчанию из мастера Maven.
- Перезаписать POM с помощью POM поддержки. (Теперь у вас есть папка Maven Dependencies).
- Обновление Maven/очистка для хорошей меры.
Надеюсь, что это поможет кому-то.:)
Ответ 5
У меня была эта проблема для зависимостей, созданных в других проектах. Загруженные зависимости thirdparty проявились в пути сборки, но не в библиотеке, которую я создал.
SOLUTION:
В проекте, который не строит правильно,
-
Щелкните правой кнопкой мыши проект и выберите "Свойства", а затем "Мейвен".
-
Снимите флажок " Разрешить зависимости из рабочей области
проекты "
-
Нажмите "Применить", а затем "ОК".
-
Щелкните правой кнопкой мыши по вашему проекту и сделайте Maven- > Update Snapshots
(или Зависимости обновления)
И ваши ошибки должны уходить, когда ваш проект перестраивается (автоматически, если включена автоматическая сборка).
Ответ 6
На всякий случай кто-то попробовал все остальные параметры, и вы все еще застряли, попробуйте щелкнуть правой кнопкой мыши по папке проекта, перейти к опции Maven и нажать кнопку "add dependency". По какой-то причине Eclipse не обновляет зависимости вручную из pom.xml при первой попытке.
![screen shot of menu selection]()
Ответ 7
Итак, я опаздываю на эту вечеринку на 4-5 лет, но у меня возникла эта проблема после выхода из нашего репо, и ни одно из других решений этой темы не было разработано в моем случае, чтобы избавиться от этих предупреждений/ошибок.
Это сработало для меня:
От Eclipse перейдите в Окно → Настройки → Maven (развернуть) → Ошибки/Предупреждения. Последняя опция гласит: "Выполнение плагинов не покрывается конфигурацией жизненного цикла" - используйте раскрывающееся меню для этой опции и переключите "Игнорировать", затем "Применить", затем "ОК". (В поле "Требуется обновление Maven Projects" введите "ОК" ).
Дополнительная информация:
Это может не обязательно "исправлять" основные проблемы и не может квалифицироваться как "лучшая практика" для некоторых, однако оно должно удалять/пресекать эти предупреждения от появления в Eclipse и позволять вам двигаться вперед как минимум. В частности, я работал с Eclipse Luna Service Release 1 (4.4.1) w/ Spring Dashboard и Spring IDE Core (3.6.3) и установленным m2e (1.5), работающим на Arch Linux и OpenJDK 1.7. Я импортировал свой проект в качестве существующего проекта maven и выбрал OK, когда был предупрежден о существующих предупреждениях/ошибках (для их решения позже).
![Suppress/Remove "Plugin Execution not covered..." warnings Eclipse-Maven]()
(Извините, я не дизайнер, но добавил ясность.)
Ответ 8
В следующем случае мы выполнили следующие шаги:
1 На затмении щелкните правой кнопкой мыши по желаемому проекту Maven → Disable Maven Nature
2 Щелкните правой кнопкой мыши еще раз, затем перейдите в Свойства. Удалите все доказательства внешней зависимости Maven, оставляя только Системную библиотеку JRE.
3 Щелкните правой кнопкой мыши еще раз на проекте, затем перейдите в Настроить → Преобразовать в проект Maven
Ответ 9
У меня была аналогичная проблема. Я решил это, выполнив Maven- > Update Project Configuration действие
Ответ 10
Ни одно из вышеперечисленных решений не работало для меня, поэтому этот ответ для кого-то еще в моей ситуации. В конце концов я сам нашел проблему и другое решение. Файл pom.xml содержал тег зависимости, который завербовал зависимости, и M2Eclipse не добавляет папку Maven Dependencies, когда она присутствовала. Итак, я удалил этот тег, затем выполнил решение, предлагаемое Ualter Jr., и Eclipse сразу же добавила недостающую папку!
Ответ 11
Для меня проблема заключалась в том, что maven не смог найти файл settings.xml, который находится в myMavenFolder\conf.
Что я сделал, чтобы исправить проблему, было выбрать правильное расположение файла settings.xml из eclipse:
Окно → Настройки → Maven → Настройки пользователя
Наконец, нажмите применить и обновить свой проект
Ответ 12
Хорошо, я попробовал все, что было здесь, к сожалению, ничего не работает в моем случае. Поэтому, пытаясь разного рода комбинаций, я вышел с этой проблемой, которая решила мою проблему.
1) Откройте файл .classpath в корне вашего проекта eclipse.
2) Вставьте следующую запись в файл:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
Затем перестройте проект в eclipse (Project- > Clean-Build).
Ответ 13
Если у вас есть ошибки "вложенных путей" после выполнения Maven → Обновить конфигурацию проекта (или в Juno это "Обновить конфигурацию..." ), то ваш путь сборки неверно сконфигурирован.
Щелкните правой кнопкой мыши проект → Путь сборки → Настроить путь сборки
Убедитесь, что включены только '/src' и каталоги на этом уровне. Если у вас есть, например, '/src', а также '/src/main/resources', это неверно. Второй ресурс ('/src/main/resources') является "вложенным" под первым ( "/src" ), который вызывает невозможность импорта ресурсов, поскольку он не позволяет eclipse видеть зависимости maven.
Ответ 14
Моя проблема звучит аналогично, поэтому я добавлю к обсуждению. Я отменил импорт существующего проекта maven в Eclipse, в результате чего ему не разрешили обновлять и не удалось бы закончить строительство рабочего пространства.
Что мне нужно было сделать, чтобы разрешить это, выберите Run As... -> Maven build...
и в разделе Goals I, введенный dependency:go-offline
, и запустил это.
Затем я щелкнул правой кнопкой мыши проект и выбрал Maven -> Update Project...
и обновил этот конкретный проект.
Это позволило создать исходные папки и завершить импорт.
Ответ 15
Я мог бы решить ошибку
1) Щелкните правой кнопкой мыши (ваш проект maven) → maven → maven install
После успешной установки
2) Щелкните правой кнопкой мыши (ваш проект maven) → maven → проект обновления. И вся ошибка maven была решена!
Ответ 16
Для меня достаточно было добавить buildCommand (org.eclipse.m2e.core.maven2Builder) и природу (org.eclipse.m2e.core.maven2Nature) в файле .project, например:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>iText</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
и я
![enter image description here]()
Ответ 17
Вот как я его решил
- Окно- > Настройки: Maven- > Настройки пользователя (нажмите "открыть файл" в появившемся окне или просто отредактируйте файл settings.xml с помощью внешнего текстового редактора, такого как Блокнот)
Убедитесь, что localRepository (который отображается в этом окне) правильный. У меня была опечатка в моем файле.
- После того как вы скорректировали settings.xml, нажмите "Параметры обновления", который находится на этом же экране "Настройки → Maven- > Настройки пользователя".
Теперь перестроим, и он установит последний JAR в правильном месте.
Ответ 18
У меня была аналогичная проблема, и я попытался ответить на все вопросы в этом сообщении. Ближе всего я пришел к решению этой проблемы, объединив решения Joseph Lust и Paul Crease. Я добавил резервный файл pom.xml после удаления и реимпорта проекта, и ничего не появилось до тех пор, пока я не удалю тег управления зависимостями в pom.xml, и, как волшебная, папка зависимостей была там.
Тем не менее, он разбил дочерний POM, так как им нужно, чтобы управление зависимостями родительского pom.xml функционировало, и в результате мой MVN не работал должным образом в проекте либо из Eclipse, либо из командной строки, давая сломанный pom. xml.
Последнее решение, если все не удается, - это вручную импортировать файлы .jar, необходимые вашему проекту. Щелкните правой кнопкой мыши проект "Свойства" → "Путь сборки Java" → "Библиотеки" и "Добавить внешний баннер".
Если MVN работает правильно из командной строки и вы успешно завершили проект, у вас будут все репозитории, необходимые в вашей папке .m2/repository. Добавьте все внешние банки, упомянутые в вашем теге зависимостей pom.xml, и вы увидите раздел справочной библиотеки в своем Eclipse, при этом все неприятные красные ошибки исчезли.
Это не оптимальное решение, но оно позволит вам работать в Eclipse без каких-либо ошибок отсутствующих зависимостей, а также позволяет создавать проект Maven как из Eclipse, так и из командной строки.
Ответ 19
Эта же проблема произошла со мной, и это произошло из-за ошибки при загрузке банки из-за проблем с репо, обозначенной красным флагом в pom.xml
.
Я добавил еще один репозиторий, так что красный флаг в pom.xml
исчез, а Eclipse снова загрузил pom, разрешил его проблему и перечислил зависимости maven в Project Explorer. это звучит просто и очевидно для решения видимых проблем, но поскольку Eclipse был очень счастлив запустить maven и успешно сработал, не было очевидно, что красный флаг и проблема репо были в корне из-за его нежелания разбирать pom и перечислить maven зависимости
Ответ 20
mvn eclipse:clean
то из затмения: "Проект обновления Maven" делает трюк!
Ответ 21
обновить .classpath ниже будет работать каждый раз.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Ответ 22
Это настолько удивительно, что эта одна проблема имеет так много разных причин и возможных решений. Я нашел еще другое решение, которое сработало для меня.
Ну, это не столько решение, сколько открытие: я вижу Maven Dependencies node в обозревателе пакетов, который по умолчанию используется для перспективы Java, но я не вижу его в перспективе Java EE, который по умолчанию использует Project Explorer. Оба этих исследователя выглядят очень похожими на быстрый взгляд, поэтому вы можете ожидать увидеть зависимости Maven в обоих.
Как я пытался понять это, я не осознавал эту разницу, поэтому в конце концов это не было проблемой для меня.
Ответ 23
весь проект выглядел странным в eclipse, папка зависимостей maven отсутствовала, он показывал некоторые типы как неизвестные, но я смог построить его успешно в maven. Исправлена проблема с добавлением папки gen в исходный путь на пути построения проекта.
Вероятно, это похоже на это Android/FBReaderJ/gen уже существует, но не является исходной папкой. Преобразуйте в исходную папку или переименуйте ее
Ответ 24
В Eclipse STS, если "Maven Dependencies" исчезнет, вы должны проверить и исправить свой pom.xml
. Я сделал это (дважды), и я решил это. Это была не проблема зависимостей, а строка, сгенерированная и перемещенная в случайном порядке в моем pom.xml
.
Ответ 25
В следующем случае мы выполнили следующие шаги:
1 На затмении щелкните правой кнопкой мыши по желаемому проекту Maven → Disable Maven Nature
2 Щелкните правой кнопкой мыши еще раз, затем перейдите в меню "Свойства". Удалите все доказательства внешней зависимости Maven, оставляя только Системную библиотеку JRE.
3 Щелкните правой кнопкой мыши еще раз на проекте, затем перейдите в меню "Настроить" → "Преобразовать в проект Maven"
он работал у меня также
Ответ 26
Мой ответ аналогичен тому, как @JerylCook: найдите другой файл .classpath
в рабочем проекте Maven, отредактируйте свои плохие как хорошие рабочие. Ключ состоит в том, чтобы добавить
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
в каждом <classpathentry>
типа con
и src
. Не забудьте изменить <classpathentry .... />
на <classpathentry ...>xxx</classpathentry>
.
Наконец, обновите проект maven и переустановите/перестройте в maven.
Ответ 27
Все вышеизложенное не со мной работало.
Исправлено только удаление папки репозитория в .m2, а затем обновление maven из eclipse.
Ответ 28
Сколько ответов. Понимаете, может быть много причин, почему это не работает, как и ожидалось.
В моем случае я также не осознавал тег вокруг моих зависимостей. Facepalm
Пример:
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
this only ОПРЕДЕЛИЕТ зависимость для этого и всех подпроектов с нужной версией! Это то, что это, например, должен выглядеть как в мастер-ПОМ. Чтобы действительно использовать lib в этом текущем проекте, вы также добавляете параметр следующим образом:
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
СЕЙЧАС он предоставит lib в этом текущем проекте.