Wie kann man alte Abhängigkeiten von Maven-Repositories bereinigen?
Habe ich zu viele Dateien .m2 Ordner, in dem maven-stores heruntergeladen Abhängigkeiten. Gibt es eine Möglichkeit, reinigen Sie alle alten Abhängigkeiten? Zum Beispiel, wenn es eine Abhängigkeit mit 3 verschiedenen Versionen: 1, 2 und 3, nach der Reinigung muss es nur den 3. Platz. Wie kann ich es für alle Abhängigkeiten .m2 Ordner?
InformationsquelleAutor der Frage Cherry | 2013-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie unter Unix könnten Sie die Zugriffszeit auf die Dateien in es. Aktivieren Sie einfach die Zugriffszeit für das Dateisystem, dann führen Sie einen bereinigter build der alle Ihre Projekte, die Sie gerne behalten würden Abhängigkeiten für tun, und dann etwas so aus (UNGETESTET!):
Dieser findet alle *.pom-Dateien, die zuletzt zugegriffen wurde mehr als 5 Minuten (vorausgesetzt, Sie begann Ihr baut max 5 Minuten) und löschen Sie Ihre Verzeichnisse.
Hinzufügen "echo" vor dem " rm "dry-run'.
InformationsquelleAutor der Antwort Florian
Kurze Antwort -
Gelöscht .m2 Ordner in
{user.home}
. E. g. in windows 10 Benutzer-home istC:\Users\user1
. Re-erstellen Sie Ihr Projekt mitmvn clean package
. Nur die Abhängigkeiten bleiben würde, die die Projekte.Lange Antwort -
.m2 ist der Ordner wie ein normaler Ordner und der Inhalt des Ordners ist gebaut aus verschiedenen Projekten. Ich glaube, es gibt keinen Weg, um herauszufinden, automatisch, dass die Bibliothek "alte". In der Tat alt ist, ist ein vages Wort. Es könnte so viele Gründe, wenn Sie eine frühere version einer Bibliothek in einem Projekt verwendet wird, daher Bestimmung, welches unbenutzt ist, ist nicht möglich.
Alles, was Sie tun konnte, ist zu löschen .m2 Ordner und neu zu erstellen alle Ihre Projekte, und dann wird der Ordner automatisch erstellen mit allen benötigten Bibliothek.
Wenn Sie sind besorgt über nur eine bestimmte version einer Bibliothek eingesetzt werden in alle Projekte; es ist wichtig, dass die Projekt-pom sollten auch update auf die neueste version. d.h. wenn die verschiedenen POMs finden Sie verschiedene Versionen von der Bibliothek, alles wird heruntergeladen bekommen .m2.
InformationsquelleAutor der Antwort gyan
Gegeben, eine POM-Datei für ein maven-Projekt können Sie entfernen Sie alle Ihre Abhängigkeiten in das lokale repository (standardmäßig ~/.m2/Respository heruntergeladen) mit dem Apache Maven-Dependency-Plugin.
Es umfasst die dependency:purge-local-repository-Funktionalität entfernt werden, die project dependencies aus dem lokalen repository, und Optional wieder lösen.
Reinigen Sie die lokalen Abhängigkeiten-Sie müssen nur genutzt der optionale parameter Symptomen und setzen Sie ihn auf false, da es standardmäßig auf true gesetzt.
Diese Kommandozeilen-Aufruf funktionieren sollte:
mvn dependency:purge-local-repository -DreResolve=false
InformationsquelleAutor der Antwort Juanjo Marron
Download alle tatsächlichen Abhängigkeiten der Projekte
Bewegen Sie Ihren lokalen maven-repository zu temporären Speicherort
Benennen Sie alle Dateien maven-metadata-central.xml* aus den gespeicherten repository in maven-metadata.xml*
Setup die modifizierte Kopie des lokalen repositories wie ein Spiegel, erstellen Sie das Verzeichnis ~/.m2 und die Datei ~/.m2/settings.xml mit folgendem Inhalt (ersetzen Sie Benutzer mit Ihrem Benutzername):
Lösen Ihre Projekte Abhängigkeiten wieder:
Haben Sie jetzt den lokalen maven-repository, mit minimal notwendigen Artefakte. Entfernen Sie die lokale Spiegel aus der config-Datei und aus der Datei system.
InformationsquelleAutor der Antwort user2639353
Wollte ich entfernen von alten Abhängigkeiten aus meinem Maven-repository. Ich dachte darüber nach, nur mit Florians Antwort, aber ich wollte etwas, dass ich laufen konnte, über und über, ohne Erinnerung an eine lange linux-snippet, und ich wollte etwas mit ein wenig Konfigurierbarkeit -- mehr Programm, weniger eine Kette von unix-Befehlen, also nahm ich die Basis-Idee und machte es in einem (relativ kleinen) Ruby-Programm, das entfernt die alten Abhängigkeiten auf Basis Ihres letzten Zugriffs Zeit.
Es nicht entfernen "alten Versionen", aber da könnte man wirklich zwei verschiedene aktive Projekte mit zwei verschiedenen Versionen einer Abhängigkeit, die das nicht getan hätte, was ich wollte, sowieso. Statt, wie Florian die Antwort, es beseitigt Abhängigkeiten, die bisher noch nicht zugegriffen wurde vor kurzem.
Wenn Sie ausprobieren möchten, können Sie:
bin/mvnclean
Gibt es Optionen zum überschreiben der Standard-Maven-repository, Dateien ignorieren, die Schwelle Datum, aber Sie können Lesen, diese in der README auf GitHub.
Werde ich wahrscheinlich Paket als ein Ruby-gem an einem gewissen Punkt, nachdem ich getan habe, ein wenig mehr Arbeit auf Sie, die wird der Einfachheit halber (
gem install mvnclean; mvnclean
), wenn Sie bereits Ruby installiert und betriebsbereit ist.InformationsquelleAutor der Antwort Geoffrey Wiseman
Nur sauber, alle Inhalte, auf die unter .m2-->repository-Ordner.Wenn Sie build-Projekt alle Abhängigkeiten laden hier.
In Ihrem Fall, können Sie Ihr Projekt früher war mit der alten version einer Abhängigkeit und jetzt version aktualisiert wird.Also besser reinigen .m2 Ordner und erstellen Sie Ihr Projekt mit mvn clean install.
Nun Abhängigkeiten mit der neuesten version-Module heruntergeladen werden, die in diesem Ordner.
InformationsquelleAutor der Antwort Amandeep Singh Bhatia
Kam ich mit einem Dienstprogramm und gehostet auf GitHub zu reinigen alte Versionen von Bibliotheken in das lokale Maven-repository. Der nutzen, die auf seine Standard-Ausführung entfernt alle älteren Versionen der Artefakte, so dass nur die neusten haben. Optional, entfernen Sie alle snapshots, Quellen, javadocs, und auch Gruppen oder Artefakte gezwungen werden kann /ausgeschlossen in diesem Prozess. Diese cross-Plattform unterstützt auch Datum basierend Entfernung, basierend auf dem letzten Zugriff /download von Daten.
https://github.com/techpavan/mvn-repo-cleaner
InformationsquelleAutor der Antwort Pavan Kumar
Laufen Zu Validieren. Dann löschen Sie das Verzeichnis, nicht mehr auf der Projekt-build path, wie sich aus der Fehler-Log-Ansicht.
Zum Beispiel:
Problem:
...m2\repository\com\fasterxml\jackson\core\jackson-core\2.5.0\jackson-core-2.5.0.jar ist nicht auf seine Projekt-build path -
Lösung:
Navigieren Sie zu der .m2 reposistory und löschen Sie die fasterxml Ordner
InformationsquelleAutor der Antwort Itumeleng Tlali