Ошибка открытия иерархии зависимостей файлов Maven POM в Eclipse - "Ошибка чтения проекта"
Когда я открываю файл POM и нажимаю на вкладку "Иерархия зависимостей" внизу, он дает мне ошибку "Ошибка чтения проекта". Он работает с другими проектами в одном и том же рабочем пространстве, просто не с этим. Любые идеи?
![enter image description here]()
ИЗМЕНИТЬ
В ответ на ответ @Yhn.
- Запуск фаз компиляции и пакета вне Eclipse из командной строки, как и ожидалось. Он компилирует приложение и создает окончательный файл WAR.
- Eclipse действительно указывает на местоположение по умолчанию файла настроек Maven settings.xml, поэтому он должен знать о настраиваемых репозиториях, которые определены в нем (у моей компании есть собственный репозиторий Maven).
- Я могу открыть и отредактировать POM файл из Eclipse, поэтому он должен иметь права на чтение/запись в файл.
- Проект не настроен в Eclipse как проект Maven, поэтому я не могу запустить фазу пакета из Eclipse (я могу запустить его только из командной строки).
Интересно, связано ли это с тем, что мне не удалось создать проект с помощью Maven 3, потому что, по-видимому, некоторые из транзитивных зависимостей настроены для Maven 1, который Maven 3 не поддерживает (в любом случае это моя теория, основанная на некоторых сообщениях об ошибках). Я могу создать проект с Maven 2, но я все равно получаю такие сообщения, как:
Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2)
Он должен уметь находить эти зависимости, потому что он загрузил JAR только отлично и может создать приложение. Похоже, проблема заключается в том, что в зависимостях нет связанных с ними файлов POM, поэтому возможно, что они не могут использоваться с Maven 3. Это также может быть связано с тем, что я не могу просмотреть иерархию зависимостей в Eclipse.
РЕДАКТИРОВАТЬ 2
Я преобразовал проект в проект Maven, перейдя в "Настроить > Преобразовать в проект Maven". Когда я открываю файл POM, я вижу ошибку:
ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)
(woodstox: wst - другая транзитная зависимость проекта). В представлении "Маркеры" появляется ошибка в отношении кажущейся зависимости и переходной зависимости в моем проекте. Тем не менее, я могу успешно построить проект, выполнив "Запуск As > Maven build". ( Изменить: Возможно, это связано с тем, что в этом проекте нет исходного кода Java, но JARs зависимостей правильно отображаются в последней WAR.) Иерархия зависимостей по-прежнему дает ту же ошибку - "Ошибка чтения проекта".
О сообщениях "Невозможно найти ресурс" - но это появляется только для нескольких транзитивных зависимостей. Проект имеет гораздо больше транзитивных зависимостей, но эти сообщения не появляются для них. Похоже, поскольку в зависимостях нет файлов POM, Maven пытается их искать каждый раз, когда проект построен. Это нормально, чтобы не иметь POMs?
Как я могу получить репо-менеджера? Это что-то, что нужно было бы установить в репозитории компании Maven или вы можете установить его на свою рабочую станцию?
Ответы
Ответ 1
У меня была эта проблема с некоторыми банками, отличными от maven, которые мне нужно было включить в мой проект maven. Я помещал банки в свой локальный репозиторий, используя эту команду maven:
mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2
Затем я назвал их зависимыми в моем pom.xml:
<dependency>
<groupId>gov.nist</groupId>
<artifactId>xccdf</artifactId>
<version>1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Это немного сработало, но я должен кое-что обновить в eclipse, и я начал получать описанную вами ошибку.
Исправление состоит в том, чтобы вынуть их из локального репозитория и повторить установочный файл с запросом maven для создания pom для вас:
mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2
Команда заставит pom быть сгенерирована в том же каталоге (в вашем локальном репо), где размещена банка.
В последних версиях поддержки eclipse maven сборка maven по-прежнему выполняется с помощью maven 2 (если вы щелкните правой кнопкой мыши свой pom.xml, выберите команду выполнить как mvn-пакет, например). Анализ зависимостей теперь выполняется с помощью встроенного плагина maven 3, который не похож на зависимость, у которой нет pom.xml.
Ответ 2
У меня была та же проблема. Если вы сделали проект проектом maven, вы должны запустить:
- Правая мышь Нажмите на проект | Maven | Зависимости обновления или
- Правая мышь Нажмите на проект | Maven | Обновить конфигурацию проекта
Это сработало для меня.
Ответ 3
Учитывая информацию через комментарии:
mvn compile/mvn пакет работает через консоль (я предполагаю вне eclipse). Исходя из этого, файл POM должен быть правильным, и зависимости могут быть разрешены.
Тем не менее; возможно, что настройки затмения неверны. Например, если eclipse имеет некоторые собственные свойства maven (вместо файла ~/.m2/settings.xml по умолчанию); Я могу представить, что он не смог разрешить зависимости, настроенные в файле settings.xml, используемом самим maven. Настройки для этого должны быть в настройках Eclipse Preferences @Maven > User Settings.
Также убедитесь, что Eclipse может действительно прочитать файл (не заблокирован, прав и т.д.).
Если это кажется правильным; можете ли вы попытаться выполнить компиляцию цели mvn из eclipse? Вы можете сделать это, щелкнув правой кнопкой мыши проект и выбрав run as > maven package
. Таким образом, он должен запустить maven с теми же настройками, что и eclipse, и может показать дополнительные ошибки в его конфигурации.
-
В ответ на дополнительную информацию:
В основном это говорит вам - при использовании Maven 2 - что он не может найти ресурс зависимостей (в данном случае bcprov-jdk14) в данном репозитории (codehaus/mule). Когда я ищу этот модуль maven (bcprov-jdk14), я нахожу его в центральном репо Maven (через нашу локальную связь) @repo1.maven.org/maven2. Возможно, это вызывает ошибку, с которой вы сталкиваетесь с Maven2?
И как говорит доктрина Maven 3; для Maven 1.x repo; вы должны проксировать их через репо-менеджер, который может служить ему в качестве репозитория maven 2 (я считаю, что мы делаем это тоже для некоторого репо через Sonatype Nexus OSS)
ps: Включение управления зависимостями maven в eclipse должно быть достаточно, чтобы иметь возможность использовать цели запуска maven; если вы хотите протестировать его.
-
Звучит так, что это может быть несколько проблем... учитывая, что нормальная сборка maven работает нормально, можно подумать, что maven может по крайней мере получить артефакты, от которых он зависит, и их зависимости... Тем не менее, затмение не кажется быть в состоянии.
Двойная проверка правильности настроек вашего интернет-соединения Eclipse? Поскольку вы говорили о репо компании, я предполагаю, что, вероятно, также будет прокси (мне пришлось настроить Eclipse, чтобы использовать его, хотя для плагинов (см. Следующий пункт)).
Другая возможность, по опыту, может быть блоком прокси на основе правил на запросах url *.pom(наш прокси здесь блокирует использование принудительного использования локального менеджера репо, как зло и раздражает это:(). попробуйте открыть файл .pom, который он пытается загрузить вручную в вашем браузере, чтобы убедиться, что это так (я не могу, например...).
Чтобы настроить репо, вам, вероятно, придется попросить ответственного за репозиторий добавить его в качестве прокси-сервера maven2.
По крайней мере, похоже, что у Eclipse возникают проблемы с получением зависимостей (которые необходимы для построения дерева зависимостей) из Интернета. Вы всегда можете попытаться спросить кого-то из ИКТ (если они достаточно...) об этом в вашей компании, возможно, у них есть полезные подсказки.
Ответ 4
У меня была такая же проблема, когда я добавил новую зависимость к pom.xml без сетевого подключения. После этого у меня было так много проблем, как "Отсутствующие артефакты", "Отсутствующий дескриптор" или "Ошибка чтения проекта". Я решил это
- удалить плохую зависимость, только что добавленную из локального репозитория.
- восстановить локальный индекс.
- повторно добавить зависимость
Ответ 5
<properties>
<!-- ********************** -->
<!-- Plugin properties -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
эта настройка pom работала для меня
Ответ 6
Обычно это происходит, если в помпе есть опечатка, которую Maven не может понять, а затем она бросает Project read error
. Как и в моем случае, я скопировал фрагмент зависимостей maven и меня, передав версию. Вместо того, чтобы вводить фактическую версию #, он получал ее динамически ${asciidoctorj.version}
, и мой pom не имел этого в разделе свойств. Поэтому я получил эту ошибку. Как только я удалил это и поместил номер версии, он начал работать.
Ответ 7
У меня было это после копирования папки локального репозитория с другого компьютера. Исправление заключалось в том, чтобы перейти в папку репозитория, которую я скопировал и удалил
_remote.repositories вместе с файлами LastUpdated, затем обновите зависимости Maven в Eclipse (Alt + F5)