English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Maven-Repository

In der Maven-Sprache ist ein Depot ein Ort (place).

Maven-Depots sind Drittanbieter-Bibliotheken, die im Projekt abhängen, und der Ort der Bibliothek wird als Depot bezeichnet.

In der Maven-Sprache kann jeder Abhängigkeit, Plugin oder Projektbuild-Ausgang als Bauteil bezeichnet werden.

Maven-Depots helfen uns, Bauteile (hauptsächlich JAR) zu verwalten, das ist der Ort, an dem alle JAR-Dateien (WAR, ZIP, POM usw.) gespeichert werden.

Maven-Depots gibt es drei Typen:

  • Lokal (local)

  • Central (central)

  • Remote (remote)

Lokaldepot

Das lokale Maven-Depot wird nach der Installation von Maven nicht erstellt, es wird erst beim ersten Ausführen des Maven-Befehls erstellt.

Wenn Maven ausgeführt wird, werden alle erforderlichen Komponenten direkt aus dem lokalen Depot abgerufen. Wenn das lokale Depot dies nicht enthält, versucht es zuerst, die Komponenten von einem Remote-Depot herunterzuladen und dann die Komponenten aus dem lokalen Depot zu verwenden.

Standardmäßig hat jeder Benutzer unter Linux und Windows einen Pfad namens .m2/respository/ Verzeichnis.

Der Maven-Lokaldepot wird standardmäßig im Verzeichnis %USER_HOME% erstellt. Um den Standardort zu ändern, geben Sie in %M2HOME%\conf Verzeichnis enthält die Maven settings.xml-Datei, in der eine weitere Pfad definiert ist.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

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

Zentraldepot

Der Maven-Zentraldepot wird von der Maven-Gemeinschaft bereitgestellt und enthält eine Vielzahl häufig verwendeter Bibliotheken.

Das zentrale Repository enthält die meisten populären Open-Source-Java-Komponenten sowie Quellcode, Autoreninformationen, SCM, Informationen, Lizenzinformationen usw. Im Allgemeinen können alle Komponenten, die ein einfaches Java-Projekt benötigt, hier heruntergeladen werden.

Schlüsselkonzepte des zentralen Repositories:

  • Dieses Repository wird von der Maven-Community verwaltet.

  • Keine Konfiguration erforderlich.

  • Der Zugriff ist über das Netzwerk erforderlich.

Um den Inhalt des zentralen Repositories zu durchsuchen, bietet die Maven-Community eine URL an:http://search.maven.org/#browse.Mit diesem Repository können Entwickler alle verfügbaren Codebibliotheken durchsuchen.

Remote-Repository

Falls Maven auch im zentralen Repository die abhängigen Dateien nicht findet, stoppt der Bauvorgang und gibt eine Fehlermeldung auf die Konsole aus. Um dies zu vermeiden, bietet Maven das Konzept des Remote-Repositories an, das ein von Entwicklern selbst angepasstes Repository ist und die erforderlichen Codebibliotheken oder Jar-Dateien anderer Projekte enthält.

Beispiel: Verwenden Sie das folgende pom.xml, Maven lädt die in diesem pom.xml deklarierten abhängigen (im zentralen Repository nicht verfügbaren) Dateien aus dem Remote-Repository herunter.

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Reihenfolge der Maven-Abhängigkeitssuche

Wenn wir den Maven-Build-Befehl ausführen, beginnt Maven, die Abhängigkeiten nach folgender Reihenfolge zu suchen:

  • Schritt 1 Suchen Sie im lokalen Repository, wenn Sie es nicht finden, führen Sie die Schritte aus 2Wenn eine finden, führen Sie andere Aktionen aus.

  • Schritt 2 - Sucht im zentralen Repository, wenn nicht gefunden und es sind ein oder mehrere Remote-Repositorys konfiguriert, dann führt Schritt aus. 4,wenn sie gefunden werden, werden sie in das lokale Repository heruntergeladen, um zukünftige Referenzen vorzubereiten.

  • Schritt 3 - Wenn das Remote-Repository nicht konfiguriert ist, wird Maven einfach den Prozess anhalten und einen Fehler auswerfen (Kann die Abhängigkeitsdatei nicht finden).

  • Schritt 4 - Sucht in einem oder mehreren Remote-Repositorys nach Abhängigkeitsdateien. Wenn diese gefunden werden, werden sie in den lokalen Repositorys heruntergeladen, um zukünftige Referenzen vorzubereiten. Wenn nicht, wird Maven den Prozess stoppen und einen Fehler auswerfen (Kann die Abhängigkeitsdatei nicht finden).

Maven-Aliyun(Aliyun)-Repository

Maven-Repository sind standardmäßig im Ausland, daher kann die Nutzung in China sehr langsam sein. Wir können sie durch den Aliyun-Repository ersetzen.

Bearbeiten Sie die Datei settings.xml im Ordner conf im Maven-Root-Verzeichnis und fügen Sie im Abschnitt mirrors den folgenden Inhalt hinzu:

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>

Schritt 2: Fügen Sie in die Datei pom.xml im Ordner conf im Maven-Root-Verzeichnis Folgendes hinzu:

<repositories>  
        <repository>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
</repositories>