web-dev-qa-db-fra.com

Maven: Impossible de lire le descripteur d'artefact

J'espère que quelqu'un pourra m'aider à résoudre un problème qui me pose problème.

Lorsque j'essaie de construire mon projet à partir du terminal, l'erreur suivante apparaît:

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

Le fichier jar common.test-data-utils est créé par un projet distinct et partagé entre ce projet et un autre projet (l'autre projet ne construit pas non plus, mais il s'agit d'un autre problème). 

Je suis capable de construire com.morrislgn.merchandising.common:test-data-utils sans problème, je peux voir l'entrée qu'il fait dans le référentiel local .m2 sur ma machine. J'ai également réindexé mon référentiel dans Eclipse. 

Le POM de mon projet a cette entrée:

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

Ce qui me semble correct: le POM ne signale aucune erreur non plus lorsqu’il est visualisé dans Eclipse.

Quelqu'un peut-il me dire ce qui me manque ou ce qui ne va pas?

193
Morrislgn

Vous pouvez toujours essayer mvn -U clean install

-U force la recherche de mises à jour et d'instantanés mis à jour sur des référentiels distants.

132
Gal Bracha

Ce problème peut se produire si certains projets enfants font référence à un pom parent et que vous n'avez pas été installé à partir du répertoire pom parent (exécutez mvn install à partir du répertoire parent). L'un des projets enfants peut dépendre d'un projet frère et lorsqu'il va lire le pom du frère, l'erreur mentionnée dans la question échouera sauf si vous avez installé le répertoire pom parent au moins une fois.

Je viens de rencontrer ce problème lors du déplacement d'un projet vers un nouvel ordinateur. J'avais l'habitude d'exécuter des commandes à partir du projet enfant et je n'ai pas exécuté l'installation sur le parent.

111
bzuillsmith

Avait le même problème avec IntelliJ IDEA et suivants a fonctionné. 

  • Aller à File
  • Sélectionnez Settings
  • Sélectionnez Build, Execution, Deployments
  • Sélectionnez Build Tools dans le menu déroulant
  • Sélectionnez Maven dans le menu déroulant
  • Cochez la case Always update snapshots

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

61
prime

Si vous utilisez Eclipse, cliquez avec le bouton droit de la souris sur projet -> propriétés -> Maven Et assurez-vous de ne pas cliquer sur " Résoudre les dépendances des projets de l'espace de travail ".

J'espère que cela t'aides. 

34
tharindu_DG

Si vous utilisez Eclipse, Cliquez à droite sur votre projet -> Maven -> Mettre à jour le projet. Cela ouvrira la boîte de dialogue Mettre à jour le projet Maven. 

Dans cette boîte de dialogue, cochez la case Forcer la mise à jour des instantanés/communiqués et cliquez sur OK. (S'il vous plaît se référer image ci-dessous)

 Update Maven Project Dialog Box

Cela a fonctionné pour moi! 

25
IamVickyAV

Je sais que je suis assez en retard pour la conversation, mais j'ai eu ce problème aussi. Je pense que le problème était le pare-feu de mon entreprise. Ma solution consistait à débrancher le réseau, à vous connecter à notre réseau sans fil ouvert, puis à forcer une mise à jour via Eclipse. Cela a tout résolu.

19
rrs

J'ai eu le même problème avec Eclipse où la ligne de commande Maven Build fonctionnait parfaitement, MAIS Essayez ceci

  • aller dans .m2/repository et effacer le répertoire associé
  • exécuter les dépendances maven de mise à jour dans Eclipse

L'erreur disparaît .... pourquoi ma ligne de commande mvn a fonctionné avec ces répertoires et Eclipse. Mon projet fonctionne à nouveau dans Eclipse. 

11
Dean Hiller

J'ai résolu ce problème en supprimant dans les dossiers du référentiel où cette erreur était affichée tout sauf les fichiers .jar et .pom.

9
17sprints

Les problèmes "Impossible de lire le descripteur d'artefact" indiquent généralement un problème lié au fichier pom de la dépendance dans le référentiel maven. Je vous suggérerais de vérifier si le nom du fichier pom est identique à celui attendu par maven et si le contenu du fichier pom est valide. 

6
eaykin

J'ai eu le même problème en utilisant IntelliJ. J'ai résolu avec un clic droit sur pom.xml> Maven> Réimporter

4
rlopezo

J'ai un projet 

 A/
 |--a1
 |--a2

Maintenant, il y a un autre projet dans notre org

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

(Chaque module a1, b1 etc. et les projets parents A, B ont leur propre pom.xml conformément aux règles maven standard de parent et enfant)

Les deux projets sont extraits sur mon Eclipse local (de SVN). Je travaille activement sur A. 

J'ai appris qu'il existait une bonne fonctionnalité commune (b4) développée en B et que je devais l'utiliser. 

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

Les développeurs de b4 ont déployé ce module b4 en tant qu'artefact dans le référentiel de notre organisation. J'ai inclus la dépendance au POM de mon module, à savoir le pom.xml de a2. Eclipse a téléchargé l'artefact reuqired du référentiel et j'ai pu importer les classes qu'il contient.

Maintenant, le problème commence .... Je devais vérifier le code source de b4 pour quelque raison que ce soit et comme je l'avais déjà fait sur mon Eclipse local, je l'ai mis à jour à partir de SVN et extrait le module b4. J'ai également exécuté pom.xml du module b4 avec des cibles telles que clean, package etc . Après avoir fini de coder, il me fallait créer un fichier JAR de mon module a2. J'ai couru "package" sur pom.xml et BAM de a2 !! erreurs n erreurs pour le module a2 .. Ces erreurs n'étaient pas très faciles à utiliser. La seule chose est qu'il y avait bien sûr le nom de b4 dans les journaux.

Solution: Après avoir essayé plusieurs solutions pendant de nombreuses heures, j’ai exécuté "mvn -U clean install" à partir de la console du répertoire de projet de mon compte B (c.-à-d. Dans ../codebase/B). Comme B est le parent, la commande d’installation propre a été exécutée pour tous les modules, y compris b4, et elle a fonctionné avec succès. Après cela, j'ai lancé "mvn -U clean install" pour mon projet parent qui est A. Et cela a fonctionné! Le module a2 a été compilé, installé (emballé plus tard) avec succès.

Le point important ici était que si b4 est dans votre espace de travail, n'installez pas seulement b4. Vous aurez besoin de nettoyer-installer complète B. Je suis venu à cette solution après avoir lu la réponse de Zuill

EDIT: Une dernière chose ici à noter que si je n'ai pas eu le projet B vérifié dans l'environnement local, ce problème ne se serait peut-être pas produit pour moi. J'ai tendance à penser que c'est ce qui s'est passé parce que B avait vérifié dans mon espace de travail local.

4
simpleDev

Vous mentionnez deux groupes différents, com.morrislgn.merchandising.common et com.johnlewis.jec.webpim.common. Peut-être que c'est le problème.

3
phlogratos

N'a pas eu de chance de mise à jour via Eclipse. J'ai dû utiliser mvn clean install -U (qui a tout résolu).

3
Toothless Seer

Référence Erreur Maven "Echec du transfert ..."

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

Pour moi, cela était lié au réglage du "User Setting.xml" à l'intérieur 

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

Pour moi, il semblerait que le problème avec le POM de dépendance ait posé problème.

J'ai résolu le problème en utilisant le référentiel virtuel jitpack, avec lequel vous pouvez inclure des référentiels github basés sur leur URL au lieu de leur propre POM (ce qui semble être une erreur dans mon cas).

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

J'ai eu le même problème pendant un certain temps et malgré mvn -U clean install, le problème n'était pas résolu!

J'ai finalement résolu le problème en supprimant tout le dossier .m2 puis en redémarrant mon IDE et le problème avait disparu!

Ainsi, le problème peut parfois survenir à cause d'incompatibilités ou de problèmes dans votre référentiel Maven local.

2
sakhoshdel

Dans notre cas, l'erreur est apparue à cause du renommage incorrect de groupId alors que certains projets de la configuration multi-module Maven faisaient référence à d'autres.

Nous avons eu un projet d'agrégation (billing-parent) avec deux modules (billing-api, billing):

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

Le projet billing dépend de billing-api. Donc, dans son pom.xml il y avait:

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

Nous avons décidé de renommer groupId de com.company.team à com.company.team.billing. Nous avons remplacé l'ancienne valeur dans les sections pom.xml et <parent> du parent des deux modules. Mais j'ai oublié de mettre à jour la dépendance ci-dessus. Nous avions donc une configuration dans laquelle le projet billing fait référence à l'ancien artefact billing-api. Finalement, il est question de la construction du module billing après un certain temps avec l’erreur suivante:

[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>  

malgré le fait que le module billing-api se construit sans erreur.

Solution 1: renommez groupId en dependency également.

Solution 2: remplacez groupId par la propriété ${project.groupId} comme ceci:

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

Conclusion. Donc, mon conseil au cas où vous auriez rencontré une erreur dans une configuration multi-module serait: vérifiez soigneusement groupId et artifactId des dépendances sur les modules voisins.

1
Lu55

J'avais un problème similaire. Dans mon cas, la version de testng dans mon dossier .m2/repositories était corrompue, mais lorsque je l'ai supprimée et que j'ai de nouveau effectué une mise à jour maven, tout a bien fonctionné.

1
William

accédez au chemin de votre espace de travail et accédez au dossier de votre projet.

lancer la commande suivante

mvn -U installation propre

si vous voyez une masse semblable à celle-ci:

Impossible de résoudre les dépendances pour le projet: war: 0.0.1-SNAPSHOT: Impossible de collecter les dépendances sur com.Sun.jersey: jersey-server: jar: 1.9

Puis donnez la commande suivante:

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

Puis encore donner la commande

mvn -U installation propre

Maintenant, vous pouvez voir que l'erreur est partie!

Maintenant, nettoyez et construisez le projet Maven.

0
Abhijeet Kale

Cette erreur indique en gros que maven ne pouvait pas lire une certaine dépendance à partir du référentiel local. Cela peut arriver parce qu'un fichier JAR n'a pas été téléchargé correctement. Allez donc dans votre référentiel local maven et assurez-vous qu'il n'y a pas de fichier d'extension .lastUpdated .

0
Sandoval0992

Je viens de commencer à utiliser STS Eclipse avec Maven pour la première fois. Le projet que j'ai configuré avait déjà son propre fichier settings.xml. Si tel est le cas, vous voudrez mettre à jour votre fichier settings.xml dans la configuration d'exécution.

  1. faites un clic droit sur pom.xml et "Run As" -> "Run Configurations ..."

  2. où il est indiqué "Paramètres utilisateur", cliquez sur le bouton Fichier et ajoutez le fichier settings.xml.

  3. Je pense que cela est spécifique à votre projet mais mes "objectifs" sont réglés sur "installation propre" et j'ai coché la case "Ignorer les tests".

0
Jose Peralez

J'ai eu ce problème dans Eclipse, mvn -U clean install ne fonctionnait pas, mais un clic droit sur le projet et la sélection de Maven-> Mettre à jour le projet l'ont corrigé.

0
gary69