Maven-Repository

In der Maven-Terminologie ist ein Repository ein Ort.

Ein Maven-Repository enthält die Bibliotheken von Drittanbietern, von denen ein Projekt abhängt; der Ort, an dem diese Bibliotheken gespeichert sind, wird als Repository bezeichnet.

In Maven kann jede Abhängigkeit, jedes Plugin oder jede Ausgabe eines Projekt-Builds als Artefakt bezeichnet werden.

Maven-Repositories helfen uns, Artefakte (hauptsächlich JARs) zu verwalten; sie sind der Ort, an dem alle JAR-Dateien (WAR, ZIP, POM usw.) gespeichert werden.

Maven-Repository-Typen:

Repository-TypSpeicherortZweckZugriffspriorität
Lokales RepositoryUnter dem Home-Verzeichnis des Benutzers.m2/repositoryVon Remote-Repositories heruntergeladene Abhängigkeiten zwischenspeichern1
Remote-RepositoryNetzwerkserverZentralen Speicher für Abhängigkeiten und Plugins bereitstellen2
- Zentrales Repositoryrepo.maven.apache.orgDas vom Maven-Team gepflegte Standard-Repository2.1
- Privates Server-RepositoryWird innerhalb eines Unternehmens eingerichtet (z. B. Nexus)Private Abhängigkeiten hosten und Builds beschleunigen2.2
- Andere öffentliche RepositoriesWie z. B. Aliyun, JCenter usw.Das Central Repository spiegeln oder ergänzen2.3

Lokales Repository

Das lokale Repository von Maven wird nicht nach der Installation von Maven erstellt; es wird erstellt, wenn der erste Maven-Befehl ausgeführt wird.

Beim Ausführen von Maven werden alle Artefakte, die Maven benötigt, direkt aus dem lokalen Repository abgerufen. Wenn das lokale Repository sie nicht enthält, wird zuerst versucht, die Artefakte von einem Remote-Repository in das lokale Repository herunterzuladen, und dann werden die Artefakte aus dem lokalen Repository verwendet.

Standardmäßig hat jeder Benutzer, ob unter Linux oder Windows, ein Repository-Verzeichnis namens .m2/repository/ in seinem Home-Verzeichnis.

  • Windows: C:\Users\<用户名>\.m2\repository

  • Linux/macOS: ~/.m2/repository

Das lokale Maven-Repository wird standardmäßig unter %USER_HOME% erstellt. Um den Standardspeicherort zu ändern, definieren Sie einen anderen Pfad in der Datei settings.xml im Verzeichnis %M2_HOME%\conf.

<settings> <localRepository>C:/MyLocalRepository</localRepository> </settings>

Wenn Sie einen Maven-Befehl ausführen, lädt Maven die Abhängigkeitsdateien in den von Ihnen angegebenen Pfad herunter.

Lokales Repository bereinigen:

mvn dependency:purge-local-repository
# 或手动删除~/.m2/repository目录

Zentrales Repository

Das Maven Central Repository ist ein von der Maven-Community bereitgestelltes Repository und enthält eine große Anzahl häufig verwendeter Bibliotheken.

Das zentrale Repository enthält die beliebtesten Open-Source-Java-Artefakte sowie Quellcode, Autoreninformationen, SCM-Informationen, Lizenzinformationen usw. Im Allgemeinen können hier Artefakte heruntergeladen werden, von denen einfache Java-Projekte abhängen.

Wichtige Konzepte des zentralen Repositorys:

  • Dieses Repository wird von der Maven-Community verwaltet.
  • Es ist keine Konfiguration erforderlich.
  • Der Zugriff muss über das Netzwerk erfolgen.

Standardadresse des zentralen Repositorys (keine explizite Konfiguration erforderlich):https://repo.maven.apache.org/maven2/


Remote-Repository

Benutzerdefinierte Repository-Konfiguration

Wenn Maven die Abhängigkeitsdateien im zentralen Repository nicht finden kann, stoppt Maven den Build-Prozess und gibt eine Fehlermeldung auf der Konsole aus. Um dies zu vermeiden, bietet Maven das Konzept der Remote-Repositorys, bei denen es sich um benutzerdefinierte Repositorys handelt, die von Entwicklern definiert werden und die erforderlichen Codebibliotheken oder JAR-Dateien enthalten, die in anderen Projekten verwendet werden.

Zum Beispiel lädt Maven mit der folgenden pom.xml die in der pom.xml deklarierten Abhängigkeitsdateien (die im Central Repository nicht verfügbar sind) von einem Remote-Repository herunter.

Beispiel

<repositories>
    <repository>
        <id>aliyun</id>
        <name>Aliyun Maven</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled> <!-- SNAPSHOT-Versionen deaktivieren -->
        </snapshots>
    </repository>
</repositories>

Mirror-Repository (Empfohlen)

In settings.xml konfigurieren:

Beispiel

<mirrors>
    <mirror>
        <id>aliyun</id>
        <name>Aliyun-Spiegel</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf> <!-- Überschreibe das zentrale Repository -->
    </mirror>
</mirrors>

Maven Aliyun-Repository

Das standardmäßige Maven-Repository befindet sich im Ausland, daher ist es in China zwangsläufig langsam. Wir können zum Repository von Aliyun wechseln.

Ändern Sie die Datei settings.xml im Ordner conf unter dem Maven-Stammverzeichnis und fügen Sie den folgenden Inhalt zum mirrors-Knoten hinzu:

<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>Öffentliches Aliyun-Repository</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>

Wenn Sie andere Proxy-Repositories verwenden möchten, können Sie<repositories></repositories>die entsprechenden Repository-URLs im <repositories>-Knoten hinzufügen. Nehmen Sie das Spring-Proxy-Repository als Beispiel:

<repository> <id>spring</id> <url>https://maven.aliyun.com/repository/spring</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository>

In Ihrer pom.xml-Datei können Sie<denpendencies></denpendencies>die Dateiinformationen hinzufügen, auf die Sie im <dependencies>-Knoten verweisen möchten:

<dependency> <groupId>[GROUP_ID]</groupId> <artifactId>[ARTIFACT_ID]</artifactId> <version>[VERSION]</version> </dependency>

Führen Sie den Abrufbefehl aus:

mvn install

Gradle-Konfigurationsanleitung

Fügen Sie den folgenden Code zur build.gradle-Datei hinzu:

allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } mavenLocal() mavenCentral() } }

Wenn Sie andere Proxy-Repositories verwenden möchten, nehmen Sie das Spring-Repository als Beispiel; der Code lautet wie folgt:

allProjects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } maven { url 'https://maven.aliyun.com/repository/spring/' } mavenLocal() mavenCentral() } }

Fügen Sie die Dateiinformationen hinzu, auf die Sie verweisen möchten:

dependencies { compile '[GROUP_ID]:[ARTIFACT_ID]:[VERSION]' }

Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren:

gradle dependencies 
oder  
./gradlew dependencies 

Privates Server-Repository

Repository-Typen:

Repository-TypZweck
gehostetPrivate Artefakte speichern
proxyProxy-Remote-Repositories
groupMehrere Repositories zusammenfassen

Auf privatem Server veröffentlichen

In pom.xml konfigurieren:

<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://your-nexus/repository/maven-releases</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>http://your-nexus/repository/maven-snapshots</url>
    </snapshotRepository>
</distributionManagement>

Authentifizierung in settings.xml konfigurieren:

<servers>
    <server>
        <id>nexus-releases</id>
        <username>deploy-user</username>
        <password>deploy-pwd</password>
    </server>
</servers>

Veröffentlichungsbefehl:

mvn deploy

Suchreihenfolge für Maven-Abhängigkeiten

Wenn wir einen Maven-Build-Befehl ausführen, sucht Maven Abhängigkeitsbibliotheken in der folgenden Reihenfolge:

  • Schritt 1- Das lokale Repository durchsuchen. Wenn nicht gefunden, zu Schritt 2 gehen; wenn gefunden, mit anderen Vorgängen fortfahren.
  • Schritt 2- Das zentrale Repository durchsuchen. Wenn es nicht gefunden wird und ein oder mehrere Remote-Repositories konfiguriert wurden, fahren Sie mit Schritt 4 fort; wenn es gefunden wird, laden Sie es zur späteren Verwendung in das lokale Repository herunter.
  • Schritt 3- Wenn keine Remote-Repositories konfiguriert sind, stoppt Maven die Verarbeitung einfach und wirft einen Fehler aus (Abhängigkeitsdateien können nicht gefunden werden).
  • Schritt 4- Suchen Sie nach den Abhängigkeitsdateien in einem oder mehreren Remote-Repositories. Wenn sie gefunden werden, laden Sie sie zur späteren Verwendung in das lokale Repository herunter; andernfalls stoppt Maven die Verarbeitung und wirft einen Fehler aus (Abhängigkeitsdateien können nicht gefunden werden).

Häufige Befehle

BefehlZweck
mvn dependency:resolveAbhängigkeiten auflösen
mvn dependency:treeAbhängigkeitsbaum anzeigen
mvn dependency:purge-local-repositoryLokales Repository bereinigen
mvn deployIn ein Remote-Repository veröffentlichen

Häufige Probleme und Lösungen

1. Symptom: Fehler beim Herunterladen von Abhängigkeiten:Artefakt konnte nicht übertragen werden...

Lösung:
  • Netzwerkverbindung prüfen
  • Überprüfen, ob die Repository-URL korrekt ist
  • Firewall vorübergehend deaktivieren, um zu testen

2. Symptom: Authentifizierungsfehler:401 Unauthorized

Lösung:

  • Die <server>-Konfiguration in settings.xml überprüfen
  • Bestätigen, ob der Benutzername/das Passwort über Repository-Zugriffsberechtigungen verfügt

3. Abhängigkeitskonflikte

Fehlerbehebung:

mvn dependency:tree -Dverbose

Lösung: Version in <dependencyManagement> vereinheitlichen

Andere Erweiterungen