3 Stimmen

Maven ohne (Remote)-Repository?

Ich habe ein Maven 2 Multi-Modul-Projekt und möchte sicherstellen, dass alles aus meiner lokalen ausgecheckten Quelle übernommen wird.

  • Ist es möglich, Maven zu sagen, dass es niemals etwas für die Module herunterladen soll, für die es die Quelle hat? Muss ich die Remote-Repositories deaktivieren?
  • Muss Maven immer den teuren Weg gehen, ein Modul in das lokale Repository zu installieren und es dann für jeden seiner Abhängigkeiten wieder zu extrahieren?
  • Kompiliert Maven automatisch zuerst Abhängigkeiten für ein Modul neu, wenn sich ihre lokale Quelle geändert hat, und kompiliert dann das Abhängige?

11voto

Aaron Digulla Punkte 308693

Ist es möglich, Maven zu sagen, dass es nie etwas für die Module herunterladen soll, für die es den Quellcode hat?

Nein. Maven 2 "sieht" nur das aktuelle Modul während des Builds. Positiv ist jedoch, dass Sie einen Teil des Baums erstellen können, indem Sie Maven in einem Modul ausführen.

Muss ich die Remote-Repositories deaktivieren?

Ja, verwenden Sie die Option "offline" -o oder -offline. Oder verwenden Sie die Datei settings.xml mit einem Proxy, der keine Dateien hat. Das ist jedoch nicht das, was Sie wollen.

Muss Maven immer den aufwändigen Weg gehen, ein Modul in das lokale Repository zu installieren und es dann wieder für jeden seiner Abhängigen zu extrahieren?

Ja, aber das ist nicht aufwändig. Während des Builds wird die Datei kopiert (das war vor zehn Jahren aufwändig). Wenn eine Abhängigkeit verwendet wird, fügt Maven einfach den Pfad zur Datei dem Java-Prozess hinzu. Die Datei wird also nicht erneut kopiert oder geändert. Maven geht davon aus, dass sich Dateien im lokalen Repository nicht ändern (oder sich nur einmal ändern, wenn ein Download/Installationsvorgang stattfindet).

Kompiliert Maven automatisch zuerst Abhängigkeiten für ein Modul neu, wenn sich ihr lokaler Quellcode geändert hat?

Nein. Es gab Pläne für Maven 3, aber ich kann keine Option finden, um so etwas zu aktivieren.

Um Ihre Probleme zu lösen, sollten Sie einen lokalen Proxy installieren (wie Nexus).

7voto

Nishant Punkte 51997
  1. Maven lädt Dinge (Abhängigkeiten) nur herunter, wenn sie nicht in Ihrem lokalen Repository verfügbar sind ($USER_HOME/.m2/repository). Wenn Sie nicht wollen, dass etwas heruntergeladen wird, verwenden Sie den Offline-Modus. Dies kann durch Verwendung des -o-Schalters erreicht werden. Zum Beispiel:

    mvn -o clean install
  2. Daran ist nichts teuer. Wenn Sie das komplette Elternprojekt erstellen, werden alle Module kompiliert und die Artefakte dann in Ihr lokales Repository kopiert. Wenn Sie dann ein Projekt erstellen, das von diesen Projekten abhängt, kopiert Maven sie einfach aus dem lokalen Repository auf Ihrer Festplatte in das Paket, das für das aktuelle Projekt erstellt wird.

  3. Nein. Ich wurde verbrannt. Maven kompiliert Abhängigkeiten nicht automatisch. Es gibt ein Plugin namens Maven Reactor Plug-in. Dieses Plugin ermöglicht es Ihnen, die Abhängigkeiten eines Projekts zu kompilieren, bevor das Projekt erstellt wird.

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