it-swarm.com.ru

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

JAR-файл 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.

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

193
Morrislgn

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

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

132
Gal Bracha

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

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

111
bzuillsmith

Была такая же проблема с 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)

61
prime

Если вы используете Eclipse, щелкните правой кнопкой мыши на проекте -> свойства -> Maven И убедитесь, что « Разрешить зависимости от проектов рабочей области » не нажата.

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

34
tharindu_DG

Если вы используете Eclipse, щелкните правой кнопкой мыши свой проект -> Maven -> Обновить проект. Откроется диалоговое окно «Обновить проект Maven». 

В этом диалоговом окне установите флажок Force Update Snapshots/Releases и нажмите OK. (Пожалуйста, обратитесь к изображению ниже)

 Update Maven Project Dialog Box

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

25
IamVickyAV

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

19
rrs

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

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

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

11
Dean Hiller

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

9
17sprints

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

6
eaykin

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

4
rlopezo

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

 A/
 |--a1
 |--a2

Сейчас в нашей организации есть еще один проект

 B/
 |--b1
 |--b2
 |--b3

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

Оба проекта проверены на моем локальном Eclipse (из SVN). Я активно работаю над А. 

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

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

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

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

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

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

Правка: Еще одна вещь здесь, чтобы отметить, что если бы я не был проверен проект B в локальной среде, то эта проблема, возможно, не возникла бы для меня. Я склонен думать, что это произошло, потому что я проверил B в моей локальной рабочей области.

4
simpleDev

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

3
phlogratos

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

3
Toothless Seer

Ссылка Maven ошибка «Ошибка передачи ...»

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
3
Maverick

Для меня это было связано с настройкой «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 . 
3
Roshan Khandelwal

Для меня, кажется, на самом деле была проблема с зависимостью POM.

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

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
2
Phil Rykoff

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

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

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

2
sakhoshdel

В нашем случае ошибка возникла из-за неправильного переименования 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 на свойство ${project.groupId} следующим образом:

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

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

1
Lu55

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

1
William

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

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

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 проект.

0
Abhijeet Kale

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

0
Sandoval0992

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

  1. щелкните правой кнопкой мыши файл pom.xml и «Запуск от имени» -> «Выполнить настройки ...»

  2. где написано «Настройки пользователя», нажмите кнопку «Файл» и добавьте файл settings.xml.

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

0
Jose Peralez

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

0
gary69