it-swarm.com.de

Maven kann kein lokales Artefakt finden

Maven beschwert sich gelegentlich, dass eine bestimmte Abhängigkeit, die lokal erstellt und verpackt wird, im lokalen Repository nicht gefunden werden kann, während ein anderes Projekt erstellt wird, das es als Abhängigkeit hat. Wir erhalten einen Fehler wie:

Ziel für Projekt X konnte nicht ausgeführt werden: Abhängigkeiten für Projekt X konnten nicht aufgelöst werden: Fehler beim Finden von Y in [archiva repository] wurde im lokalen Repository zwischengespeichert. Die Auflösung wird erst dann erneut versucht, wenn das Aktualisierungsintervall von internal abgelaufen ist oder Updates erzwungen werden >

Wobei X das Projekt ist und Y das angeblich fehlende Artefakt ist. Wenn Sie in das lokale Repository schauen, ist das Artefakt vorhanden. Dieses Artefakt wird nie in unserem Archivarchiv installiert, daher liegt das Problem ausschließlich im lokalen Repository.

Wir haben verschiedene Profile in settings.xml ausprobiert und natürlich "mvn -U". Weder nützen noch etwas, auch nicht, weil dieses Artefakt niemals weiter geht als das lokale Repository.

Die einzigen zwei Dinge, die anscheinend funktionieren, sind, sehr lange zu warten, bis Maven klug ist, oder das lokale Repository vollständig zu löschen. Vermutlich hängt die Warteoption mit dem vorgenannten Aktualisierungsintervall zusammen.

Dieses Problem ist bei Maven 3.0.2 und 3.0.3 aufgetreten. Wir verwenden Archiva 1.0.3 (dies sollte jedoch ebenfalls kein Faktor sein). Jede Hilfe wäre sehr dankbar.

69
user1686620

Das lokale Repository von Maven verfolgt, wo die Artefakte ursprünglich von einer Datei namens "_maven.repositories" im Artefaktverzeichnis stammten. Nach dem Entfernen funktionierte der Build. Diese Antwort das Problem für mich behoben.

53
jhanson

Da die Optionen hier nicht für mich funktionierten, erzähle ich, wie ich sie gelöst habe:

Mein Projekt verfügt über ein übergeordnetes Projekt (mit einer eigenen pom.xml), das viele untergeordnete Module enthält, von denen eines (A) eine Abhängigkeit zu einem anderen Kind (B) hat. Als ich mvn package in A ausprobierte, funktionierte es nicht, da B nicht aufgelöst werden konnte.

mvn install im übergeordneten Verzeichnis ausführen erledigte den Job. Danach könnte ich mvn package innerhalb von A machen und erst dann könnte es B finden.

20

Selbst im Offline-Modus überprüft maven entfernte Repositorys, wenn für die Abhängigkeit ein Marker _remote.repositories vorhanden ist. Wenn Sie im Offline-Modus arbeiten müssen, müssen Sie diese Dateien möglicherweise löschen.

Der einfache Shell-Befehl unten löscht diese Markierungsdateien. Dies ist sicher, wenn Sie nur den Offline-Modus für die Maschine verwenden. Ich würde dies NICHT auf einer Maschine tun, die Dateien aus dem Web herunterziehen muss.

Ich habe diese Strategie auf einem Build-Server angewendet, der nicht mit dem Web verbunden ist. Wir müssen das Repository dorthin übertragen, die Markierungsdateien löschen und dann im Offline-Modus ausführen.

Unter Linux/Unix können Sie die entfernten Repository-Markierungsdateien auf folgende Weise löschen:

cd ~/.m2
find . -name "_remote.repositories" -type f -delete
9
Jon

Maven erinnert sich, als er nichts gefunden hat. Der Schlüssel ist "Auflösung wird nicht erneut versucht, bis das Aktualisierungsintervall von internen abgelaufen ist oder Updates erzwungen werden ->"

Die schnelle Lösung besteht darin, das lokale "Repository" -Unterverzeichnis für das Problemartefakt zu löschen - vorausgesetzt, Sie haben das Problem damit gelöst. :)

mvn -U erzwingt die Aktualisierung aus dem entfernten Repository - erneut, vorausgesetzt, Sie haben das entfernte Artefakt jetzt in die Ferne gesetzt.

7
Andre

Als mir dies passierte, lag es daran, dass ich meine settings.xml blind aus einer Vorlage kopiert hatte und immer noch das leere <localRepository/>-Element hatte. Dies bedeutet, dass beim Auflösen von Abhängigkeiten kein lokales Repository verwendet wird (obwohl Ihre installierten Artefakte immer noch am Standardspeicherort abgelegt werden). Als ich das durch <localRepository>${user.home}\.m2\repository</localRepository> ersetzt hatte, fing es an zu arbeiten.

Für * nix wäre das <localRepository>${user.home}/.m2/repository</localRepository>, denke ich.

6
Paul Hicks

Einer der Fehler, die ich in Maven gefunden habe, ist, dass ich meine Datei settings.xml im falschen Verzeichnis abgelegt habe. Es muss sich im .m2-Ordner unter Ihrem Benutzer-Home-Verzeichnis befinden. Vergewissern Sie sich, dass sich der richtige Ort befindet (zusammen mit der Datei settings-security.xml, falls Sie diese verwenden).

0
Ashik Uzzaman

Ich habe ein ähnliches Problem, wenn mein neues Projekt von Oracle Jdbc jar abhängt (das ich in meinem lokalen Repository installiert habe und für andere Projekte gut funktioniert). Ich habe die Option -U ausprobiert, die .lastupdate-Datei oder das gesamte Verzeichnis gelöscht und erneut heruntergeladen, aber es hat nicht funktioniert. Schließlich habe ich das Verzeichnis gelöscht und lokal erneut installiert, es funktioniert.

0
yuxh

Ich hatte DependencyResolutionException in Ubuntu Linux, wenn ich lokale Artefakte über ein Shell-Skript installierte. Die Lösung bestand darin, die lokalen Artefakte zu löschen und "manuell" erneut zu installieren, indem mvn install:install-file über das Terminal aufgerufen wurde.

0
naXa

Sogar ich habe mich diesem Problem gestellt und es auf zwei Arten gelöst:

1) Wählen Sie in Ihrem IDE Projekt aus und bereinigen Sie alle Projekte. Installieren Sie dann alle Maven-Abhängigkeiten, indem Sie mit der rechten Maustaste auf Projekt klicken.> Gehen Sie zu Maven und Projektabhängigkeiten aktualisieren, und wählen Sie alle Projekte gleichzeitig aus, um dieselben zu installieren. Sobald dies erledigt ist, führen Sie das jeweilige Projekt aus

2) Sonst können Sie in der pom.xml nach den Abhängigkeiten suchen, für die Sie eine Fehlermeldung erhalten, und "mvn clean install" diese abhängigproject first und die install maven-Abhängigkeiten des aktuellen Projekts, in dem Sie Probleme haben. Auf diese Weise werden die Abhängigkeiten des lokalen Projekts erstellt und Gläser erstellt.

0
Neha Tawar

Fang alles. Wenn die hier genannten Lösungen nicht funktionieren (in meinem Fall), löschen Sie einfach alle Inhalte aus dem Ordner/Verzeichnis '.m2' und führen Sie mvn clean install aus.

0
lupchiazoem