Maven: Не удалось прочитать дескриптор артефакта

Я надеюсь, что кто-то может помочь мне с проблемой, с которой я борюсь.

Когда я пытаюсь построить свой проект с терминала, я получаю эту ошибку:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

Консоль common.test-data-utils создается отдельным проектом и делится между этим и другим проектом (другой проект тоже не строится, но это связано с другой проблемой).

Я могу создать com.morrislgn.merchandising.common:test-data-utils без проблем, я могу увидеть запись, которую он делает в локальном репозитории .m2 на моей машине. Я также переиндексировал мой репозиторий в Eclipse.

POM для моего проекта имеет эту запись:

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

Что мне кажется правильным, POM не сообщает об ошибках ни при просмотре в Eclipse.

Может кто-нибудь сказать мне, что мне здесь не хватает или что-то не так?

Ответ 1

Вы всегда можете попробовать mvn -U clean install

-U проверяет наличие обновленных выпусков и снимков в удаленных репозиториях.

Ответ 2

Эта проблема может возникнуть, если у вас есть дочерние проекты, относящиеся к родительскому pom, и вы не установили их из родительского каталога pom (запустите mvn install из родительского каталога). Один из дочерних проектов может зависеть от проекта sibling, и когда он отправится читать pom брата, он будет терпеть неудачу с ошибкой, упомянутой в вопросе, если вы не установили из родительского каталога pom хотя бы один раз.

Я просто столкнулся с этой проблемой при перемещении проекта на новый компьютер. У меня была привычка запускать команды из дочернего проекта и не запускала установку родителя.

Ответ 3

Имел ту же проблему с IntelliJ IDEA и после работал.

  • Перейти к File
  • Выберите Settings
  • Выберите " Build, Execution, Deployments
  • Выберите " Build Tools из раскрывающегося списка
  • Выберите Maven из раскрывающегося списка
  • Установите флажок Always update snapshots

screen shot of IntelliJ 2017.2 > Preferences/Settings > Build, Execution, Deployment > Build Tools > Maven > Always update snapshots (checkbox)

Ответ 4

Если вы используете eclipse, щелкните правой кнопкой мыши по проекту → свойства → Maven и убедитесь, что " Решить зависимости от проектов рабочей области" не нажата.

Надеюсь, это поможет.

Ответ 5

Если вы используете Eclipse, Щелкните правой кнопкой мыши по проекту Maven Обновить проект. Он откроет диалоговое окно "Обновление проекта Maven".

В этом диалоговом окне установите флажок Принудительное обновление снимков/выпусков и нажмите ОК. (См. Рисунок ниже)

Обновить диалоговое окно проекта Maven

Это сработало для меня!

Ответ 6

Я знаю, что довольно поздно разговаривать, но у меня тоже была эта проблема. Я думаю, что проблема была в моем брандмауэре. Моим решением было отключить сеть от сети, подключиться к нашей открытой беспроводной сети, а затем принудительно обновить ее через Eclipse. Это разрешило все.

Ответ 7

У меня была такая же проблема с eclipse, где командная строка maven build работала просто отлично, НО попробуйте это

  • зайдите в .m2/репозиторий и уничтожьте связанный каталог
  • выполнить обновление maven-зависимостей в eclipse

Ошибка уходит.... почему моя командная строка mvn работала с этими каталогами, а eclipse.m2eclipse не мог, я понятия не имею, и это отчасти отстойно. Мой проект теперь снова работает в eclipse.

Ответ 8

Я решил эту проблему, удалив в папках репозитория, где эта ошибка была показана всем, кроме файлов .jar и .pom.

Ответ 9

У меня была такая же проблема с использованием IntelliJ. Я решил щелкнуть правой кнопкой мыши на pom.xml> Maven> Reimport

Ответ 10

"Не удалось прочитать дескриптор артефактов" проблемы обычно указывают на проблему с файлом pOM зависимости в репозитории maven. Я бы предложил вам дважды проверить, совпадает ли имя файла pom с именем maven, а также проверить, действительно ли содержимое файла pom является допустимым.

Ответ 11

У меня есть проект

 A/
 |--a1
 |--a2

Теперь в нашем org

есть еще один проект,
 B/
 |--b1
 |--b2
 |--b3

(Каждый модуль a1, b1 и т.д. и родительские проекты A, B имеют свой собственный pom.xml в соответствии со стандартными правилами maven родительского и дочернего)

Оба проекта проверяются на моем локальном затмении (из SVN). Я активно работаю над A.

Я понял, что существует хорошая общая функциональность (b4), разработанная в B, и мне нужно было ее использовать.

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

Разработчик b4 развернул этот модуль b4 как артефакт в нашем репозитории org. Я включил зависимость от моего модуля POM, то есть a2 pom.xml. Eclipse загрузил reuqired артефакт из репо, и я мог импортировать в него классы.

Теперь начинается выпуск... Мне нужно было проверить исходный код b4 для какой-то цели, и поскольку я уже проверил B на своем локальном затмении, я обновил его из SVN и проверил модуль b4. Я также выполнил pom.xml модуля b4 с целями, такими как чистый, пакет и т.д. Через некоторое время, когда я закончил свою кодировку, мне нужно было создать JAR моего модуля a2. Я запускал "пакет" на a2 pom.xml и BAM!! ошибки n ошибок для модуля a2. Эти ошибки также не очень удобны для пользователя. Единственное, что в журналах было имя b4.

Решение: Пробыв множество решений в течение многих часов, я запускал "mvn -U clean install" из консоли в моей главной директиве B (т.е. В.. /codebase/B ). Поскольку B является родительским, чистая команда установки запускается для всех модулей, включая b4, и она успешно выполняется. После этого я запускал "mvn -U clean install" для моего родительского проекта, который является A. И это сработало! Модуль a2 скомпилирован, установлен, (упакован позже) успешно.

Здесь важный момент: если b4 находится в вашей рабочей области, не только установите b4. Вам нужно будет очистить комплект B. Я подошел к этому решению после прочтения ответа от Zuill

РЕДАКТИРОВАТЬ: Еще одна вещь здесь, чтобы отметить, что если бы я не выполнил проект B в локальной среде, то эта проблема могла не произойти для меня. Я склонен думать, что это произошло потому, что я проверил B в моей локальной рабочей области.

Ответ 12

Вы указываете два разных идентификатора группы, com.morrislgn.merchandising.common и com.johnlewis.jec.webpim.common. Возможно, это проблема.

Ответ 13

Не удалось обновить через eclipse. Придется использовать mvn clean install -U (который разрешил все).

Ответ 14

Для меня это было связано с установкой "User Setting.xml" внутри

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

Ответ 16

Для меня это, по-видимому, было проблемой с POM зависимости.

Я работал вокруг него, используя виртуальный репозиторий jitpack, с помощью которого вы можете включать репозитории github на основе своего URL вместо своего собственного POM (что, кажется, было ошибочным в моем случае).

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

Ответ 17

У меня была такая же проблема некоторое время, и, несмотря на выполнение mvn -U clean install, проблема не решалась!

Я, наконец, решил проблему, удалив всю папку .m2, а затем перезапустил мою среду IDE, и проблема исчезла!

Поэтому иногда проблема поднималась из-за некоторых несовместимостей или проблем в вашем локальном репозитории maven.

Ответ 18

У меня была аналогичная проблема. В моем случае версия testng в моей папке .m2/repositories была повреждена, но когда я удалил ее и снова обновил maven, все сработало нормально.

Ответ 19

В нашем случае ошибка возникла из-за неправильного переименования groupId, в то время как некоторые из проектов в мультимодульной конфигурации Maven ссылаются на другие.

У нас был проект агрегатора (billing-parent) с двумя модулями (billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

billing проекта зависит от billing-api. Таким образом, в pom.xml он имел:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Мы решили переименовать groupId из com.company.team в com.company.team.billing. Мы заменили старое значение в родительском pom.xml и в <parent> разделах обоих модулей. Но забыл обновить зависимость выше. Таким образом, у нас была конфигурация, в которой проект billing ссылается на старый billing-api. В конце концов, он заработает модуль billing через некоторое время с ошибкой, подобной

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

несмотря на то, что модуль billing-api строит без ошибок.

Решение 1: переименовать groupId в dependency также.

Решение 2: замените groupId на groupId ${project.groupId} следующим образом:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Вывод. Поэтому мой совет в случае, если вы столкнулись с ошибкой в многомодульной конфигурации, должны быть: тщательно проверить groupId и artifactId зависимостей на соседних модулях.

Ответ 20

У меня была эта проблема в eclipse, mvn -U clean install не работал, но щелкнул правой кнопкой мыши проект и выбрав Maven- > Update Project, исправил его.

Ответ 21

Я только начал использовать STS Eclipse с первого раза, используя Maven. У проекта я setup уже есть свой собственный settings.xml. Если это так, вам нужно обновить файл settings.xml в конфигурации запуска.

  • щелкните правой кнопкой мыши pom.xml и "Запустить как" → "Запустить конфигурации..."

  • где он говорит "Пользовательские настройки", нажмите кнопку "Файл" и добавьте параметр settings.xml.

  • Я думаю, что это специфично для вашего проекта, но мои "Цели" настроены на "чистую установку", и я проверил "Пропустить тесты".

Ответ 22

Эта ошибка в основном говорит о том, что maven не смог прочитать определенную зависимость от локального репозитория. Это может случиться, потому что файл jar не загрузился правильно. Итак, перейдите в свой локальный репозиторий maven и убедитесь, что нет файла расширения .lastUpdated.

Ответ 23

перейдите в путь к рабочей области и войдите в папку вашего проекта

выполнить следующую команду

mvn -U чистая установка

если вы видите massege похожие на:

Не удалось разрешить зависимости для проекта: war: 0.0.1-SNAPSHOT: не удалось собрать зависимости на com.sun.jersey: jersey-server: jar: 1.9

Затем дайте следующую команду:

export MAVEN_OPTS = -Dhttps.protocols = TLSv1, TLSv1.1, TLSv1.2

Потом опять дай команду

mvn -U чистая установка

Теперь вы можете видеть, что ошибка исчезла !!

Теперь очистите и постройте maven проект.

Ответ 24

Я решил эту проблему, изменив maven setting.xml и репозиторий