Подтвердить что ты не робот

Ошибка открытия иерархии зависимостей файлов 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 или вы можете установить его на свою рабочую станцию?

4b9b3361

Ответ 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)