330 Stimmen

Maven: Fehler beim Lesen des Artefakt-Deskriptors

Ich hoffe, dass mir jemand bei einem Problem helfen kann, mit dem ich zu kämpfen habe.

Wenn ich versuche, mein Projekt aus dem Terminal zu erstellen, erhalte ich diesen Fehler:

Fehler beim Lesen des Artefakt-Deskriptors für com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Konnte das Artefakt com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT nicht finden

Das common.test-data-utils Jar wird von einem separaten Projekt erstellt und zwischen diesem und einem anderen Projekt geteilt (das andere Projekt wird auch nicht kompiliert, aber das liegt an einem anderen Problem).

Ich kann com.morrislgn.merchandising.common:test-data-utils ohne Probleme erstellen, ich sehe den Eintrag, den es im .m2 lokalen Repository auf meinem Rechner macht. Ich habe auch mein Repository in Eclipse neu indiziert.

Das POM für mein Projekt hat diesen Eintrag:

    com.morrislgn.merchandising.common
    test-data-utils
    0.3b-SNAPSHOT

Was für mich korrekt aussieht - das POM meldet auch keine Fehler, wenn es in Eclipse angezeigt wird.

Kann mir jemand sagen, was ich hier übersehe oder falsch mache?

5 Stimmen

Wenn jemand (wie ich) aufgrund eines HTTP-Repository-Fehlers in Maven> 3.8.1 auf ein Problem stößt, ähnlich wie maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: , siehe hier: stackoverflow.com/q/67001968/6346531

0 Stimmen

@aksh1618 Danke. Das war die Lösung für mein Problem.

8voto

eaykin Punkte 3543

"Fehler beim Lesen der Artefaktbeschreibung" Probleme deuten in der Regel auf ein Problem mit der POM-Datei der Abhängigkeit im Maven-Repository hin. Ich würde vorschlagen, dass Sie überprüfen, ob der Name der POM-Datei mit dem von Maven erwarteten Namen übereinstimmt, und auch überprüfen, ob der Inhalt der POM-Datei gültig ist.

1 Stimmen

Die Überprüfung der pom.xml war nützlich. Ich habe festgestellt, dass ich dieselbe Abhängigkeit zweimal hatte (Fehler beim Kopieren und Einfügen). Nach dem Aufräumen war alles in Ordnung.

8voto

Abhijeet Kale Punkte 311

Navigieren Sie über die Shell in Ihrem Projektordner und führen Sie den folgenden Befehl aus:

mvn -U clean install

Normalerweise sollte dies bereits Ihr Problem lösen.

Wenn Sie eine Meldung wie diese sehen:

Abhängigkeiten für Projekt: :war:0.0.1-SNAPSHOT konnten nicht aufgelöst werden: Das Sammeln von Abhängigkeiten bei com.sun.jersey:jersey-server:jar:1.9 ist fehlgeschlagen

Führen Sie dann aus:

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

gefolgt von:

mvn -U clean install

erneut, um letztendlich Ihre Abhängigkeiten zu aktualisieren.

Führen Sie anschließend eine saubere Maven-Build aus:

maven clean install

7voto

Kanad Punkte 896

Ich habe ein Projekt

 A/
 |--a1
 |--a2

Jetzt gibt es ein weiteres Projekt in unserer Organisation

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

(Jedes Modul a1, b1 usw. und die übergeordneten Projekte A, B haben jeweils ihre eigene pom.xml gemäß den Standard-Mavenregeln für Eltern und Kinder)

Beide Projekte sind lokal in meinem Eclipse (von SVN) ausgecheckt. Ich arbeite aktiv an A.

Ich habe erfahren, dass in B eine gute gemeinsame Funktionalität (b4) entwickelt wurde und ich sie benötigte.

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

Der Entwickler von b4 hat dieses b4-Modul als Artefakt in unserem Organisationsrepository bereitgestellt. Ich habe die Abhängigkeit in die POM meines Moduls aufgenommen, d.h. in die pom.xml von a2. Eclipse hat das erforderliche Artefakt aus dem Repository heruntergeladen und ich konnte die darin enthaltenen Klassen importieren.

Jetzt fängt das Problem an... Ich musste den Quellcode von b4 aus irgendeinem Grund überprüfen, und da ich bereits B in meinem lokalen Eclipse ausgecheckt hatte, habe ich es von SVN aktualisiert und das Modul b4 ausgecheckt. Ich habe auch die pom.xml des Moduls b4 mit Zielen wie "clean", "package" usw. ausgeführt. Nach einiger Zeit, als ich mit meinem Codieren fertig war, musste ich ein JAR meines Moduls a2 erstellen. Ich habe "package" auf a2's pom.xml ausgeführt und BAM!! Fehler für das a2-Modul... Diese Fehler waren auch nicht sehr benutzerfreundlich. Das einzige, was sicher war, war der Name von b4 in den Protokollen.

Lösung: Nachdem ich stundenlang nach Lösungen gesucht habe, habe ich "mvn -U clean install" von der Konsole in meinem B-Projektverzeichnis (d.h. in ../codebase/B) ausgeführt. Da B das übergeordnete Projekt ist, wurde der Befehl clean install für alle Module aus, einschließlich b4, erfolgreich ausgeführt. Danach habe ich "mvn -U clean install" für mein übergeordnetes Projekt A ausgeführt. Und das hat funktioniert! Das a2-Modul wurde erfolgreich kompiliert, installiert (später gepackt).

Ein wichtiger Punkt hier war, dass, wenn b4 in Ihrem Workspace ist, nicht nur b4 installiert wird. Sie müssen B komplett clean installieren. Ich bin zu dieser Lösung gekommen, nachdem ich eine Antwort von Zuill gelesen hatte

EDIT: Noch eine Sache hier zu beachten ist, dass, wenn ich B-Projekt nicht in der lokalen Umgebung ausgecheckt hätte, hätte dieses Problem für mich möglicherweise nicht aufgetreten. Ich neige dazu zu glauben, dass dies passiert ist, weil ich B in meinem lokalen Workspace ausgecheckt hatte.

0 Stimmen

Vielen Dank für deine Hilfe. Ich habe das gleiche Problem, Projekt A fügt eine Abhängigkeit aus dem Untermodule B-IDL von Projekt B hinzu. Ich sollte das gesamte B-Projekt mit "mvn deploy" bereitstellen, nicht nur das Untermodule B-IDL.

5voto

phlogratos Punkte 12429

Sie erwähnen zwei verschiedene GroupIds, com.morrislgn.merchandising.common und com.johnlewis.jec.webpim.common. Vielleicht ist das das Problem.

0 Stimmen

Guter Ort - nein, leider ist es das nicht. Ich habe das falsche Tag aus der POM XML kopiert, das war das über dem Tag, den ich brauchte, und habe nicht bemerkt, was ich getan habe. Ups! Ich habe die Frage bearbeitet, um meine Dummheit zu beheben!

5voto

Phil Rykoff Punkte 11691

Für mich schien es tatsächlich ein Problem mit dem Abhängigkeits-POM gewesen zu sein.

Ich habe es umgangen, indem ich das JitPack-Virtual Repository verwendet habe, mit dem Sie Github-Repositories anhand ihrer URL anstelle ihres eigenen POMs einbeziehen können (was in meinem Fall fehlerhaft zu sein scheint).

        jitpack.io
        https://jitpack.io

0 Stimmen

Dies hat für mich funktioniert. Der Repository-Abschnitt der pom.xml-Datei sollte ordnungsgemäß aktualisiert werden und das -Tag sollte der Name des Repositorys sein. Hat mir viel Zeit gespart!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X