Maven: не удалось прочитать дескриптор артефакта - PullRequest
224 голосов
/ 10 июля 2011

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

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

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

1006 * jar создается отдельным проектом и совместно используется этим и другим проектом (другой проект тоже не собирается, но это связано с другой проблемой).

Я могу собрать 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.

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

Ответы [ 24 ]

4 голосов
/ 06 августа 2013

Для меня это было связано с настройкой «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 . 
4 голосов
/ 13 марта 2014

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

 A/
 |--a1
 |--a2

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

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

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

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

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

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

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

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

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

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

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

3 голосов
/ 13 сентября 2016

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

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

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
3 голосов
/ 04 января 2016

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

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
3 голосов
/ 04 декабря 2012

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

3 голосов
/ 10 июля 2011

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

2 голосов
/ 08 июня 2018

В нашем случае ошибка возникла из-за неправильного переименования 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 зависимостей соседних модулей.

2 голосов
/ 27 января 2017

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

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

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

1 голос
/ 11 августа 2017

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

1 голос
/ 27 мая 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...