Maven-Einführung – Herunterladen – Installieren – Verwenden – Grundkenntnisse
Die erweiterte Verwendung von Maven kann in diesem Artikel eingesehen werden:
Erweiterte Nutzung des Maven Sub-Module-Inheritance-Aggregation-Private Servers
Artikelverzeichnis
01. Maven
1.1 Maven zum ersten Mal kennenlernen
1.1.1 Was ist Maven?
Maven ist ein Open-Source-Projekt unter Apache und ein Tool zum Verwalten und Erstellen von Java-Projekten.
Offizielle Website: https://maven.apache.org/
Die im Juli 1999 gegründete Apache Software Foundation ist derzeit die größte und beliebteste Open-Source-Software-Stiftung der Welt und außerdem eine gemeinnützige Organisation, die sich der Unterstützung von Open-Source-Projekten widmet.
Open-Source-Projekte: https://www.apache.org/index.html#projects-list
1.1.2 Die Rolle von Maven
Was kann man mit Maven machen?
- Abhängigkeitsmanagement
- Einheitliche Projektstruktur
- Projektaufbau
Abhängigkeitsmanagement :
- Bequeme und schnelle Verwaltung der Ressourcen (JAR-Pakete), von denen das Projekt abhängt, wodurch Versionskonflikte vermieden werden
Wenn Sie Maven für die Verwaltung von Projektabhängigkeiten (JAR-Paketen) verwenden, ist es sehr praktisch, dieses Problem zu lösen. Wir müssen lediglich eine Konfiguration wie in der Abbildung unten gezeigt in der Datei pom.xml des Maven-Projekts hinzufügen.
**Einheitliche Projektstruktur: **
- Bietet eine standardmäßige, einheitliche Projektstruktur
Wenn Sie in der Projektentwicklung verschiedene Entwicklungstools (z. B. Eclipse, Idea) verwenden, um ein Projektprojekt zu erstellen:
Wenn wir ein Maven-Projekt erstellen, kann es uns dabei helfen, automatisch eine einheitliche und standardmäßige Projektverzeichnisstruktur zu generieren:
Die spezifische einheitliche Struktur ist wie folgt:
Verzeichnisbeschreibung:
- src/main/java: Java-Quellcodeverzeichnis
- src/main/resources: Informationen zur Konfigurationsdatei
- src/test/java: Testcode
- src/test/resources: Informationen zur Testkonfigurationsdatei
Projektaufbau:
- Maven bietet eine standardmäßige, plattformübergreifende (Linux, Windows, MacOS) automatisierte Projektkonstruktionsmethode
Wie in der Abbildung oben gezeigt, haben wir ein System entwickelt. Der Code muss kompiliert, getestet, gepackt und freigegeben werden. Wenn diese Vorgänge wiederholt werden müssen, ist dies besonders problematisch. Maven stellt eine Reihe einfacher Befehle zur Verfügung, die ausgeführt werden müssen der Projektaufbau.
Zusammenfassend lässt sich ein Fazit ziehen: Maven ist ein Tool zum Verwalten und Erstellen von Java-Projekten
02. Überblick über Maven
2.1 Einführung in Maven
Apache Maven ist ein Projektmanagement- und Konstruktionstool, das auf dem Konzept des Projektobjektmodells (Project Object Model, kurz: POM) basiert und die Konstruktion, Berichterstattung und Dokumentation des Projekts durch eine kleine Beschreibung verwaltet Information.
Offizielle Website: https://maven.apache.org/
Die Rolle von Maven:
- Bequemes Abhängigkeitsmanagement
- Einheitliche Projektstruktur
- Standard-Projekterstellungsprozess
2.2 Maven-Modell
- Projektobjektmodell
- Abhängigkeitsmanagementmodell (Abhängigkeit)
- Lebenszyklus und Phasen erstellen
1) Lebenszyklus/Phasen erstellen (Lebenszyklus und Phasen erstellen)
Der in der obigen Abbildung lila umrahmte Teil dient der Vervollständigung des standardisierten Bauprozesses. Wenn wir kompilieren müssen, stellt Maven ein Kompilierungs-Plugin zur Verfügung, das wir verwenden können; wenn wir packen müssen, stellt Maven ein Verpackungs-Plugin zur Verfügung, das wir verwenden können usw.
2) Projektobjektmodell
Der in der obigen Abbildung lila umrahmte Teil gehört zum Projektobjektmodell, das dazu dient, unser eigenes Projekt in ein Objektmodell mit eigenen exklusiven Koordinaten zu abstrahieren. Wie in der folgenden Abbildung gezeigt, handelt es sich um ein Maven-Projekt:
Die Koordinaten sind die eindeutige Kennung der Ressource (JAR-Paket), über die der Standort der benötigten Ressource (JAR-Paket) lokalisiert werden kann
3) Abhängigkeitsmanagementmodell (Abhängigkeit)
Der in der obigen Abbildung lila umrahmte Teil gehört zum Abhängigkeitsverwaltungsmodell, das mithilfe von Koordinaten beschreibt, von welchen JAR-Paketen Dritter das aktuelle Projekt abhängt
Wenn wir zuvor in unserem Projekt ein JAR-Paket benötigten, haben wir das JAR-Paket direkt in das lib-Verzeichnis unter dem Projekt kopiert. Wie können wir nun die gewünschte JAR-Paketdatei mit den in der Datei pom.xml geschriebenen Koordinaten finden?
Antwort: Maven-Repository
2.3 Maven-Repository
Lager: Wird zum Speichern von Ressourcen und zum Verwalten verschiedener JAR-Pakete verwendet
Das Wesentliche eines Lagers ist ein Verzeichnis (Ordner), in dem alle Abhängigkeiten (d. h. JAR-Pakete) und Plug-Ins in der Entwicklung gespeichert werden
Das Maven-Lager ist unterteilt in:
- Lokales Lager: ein Verzeichnis auf Ihrem eigenen Computer (zum Speichern von JAR-Paketen)
- Zentrales Lager: das einzige auf der Welt, das vom Maven-Team verwaltet wird. Lageradresse: https://repo1.maven.org/maven2/
- Remote-Lager (privater Server): Im Allgemeinen ein privates Lager, das von einem Unternehmensteam erstellt wurde
Wenn die Koordinaten im Projekt zum Importieren des entsprechenden abhängigen JAR-Pakets verwendet werden, wird zunächst geprüft, ob im lokalen Lager ein entsprechendes JAR-Paket vorhanden ist
-
Wenn ja, wird im Projekt direkt darauf verwiesen
-
Wenn nicht, gehen Sie zum Zentrallager, um das entsprechende JAR-Paket in das lokale Lager herunterzuladen
Wenn Sie auch ein Remote-Warehouse (privater Server) erstellen können, lautet die Suchreihenfolge des JAR-Pakets in Zukunft wie folgt: Lokales Warehouse -> Remote-Warehouse -> Zentrales Warehouse
2.4 Maven-Installation
Maven-Download-Installation und ihre Konfiguration
03. IDEA integriert Maven
Wenn wir Maven in IDEA für die Projektkonstruktion verwenden möchten, müssen wir Maven in IDEA integrieren
3.1 Konfigurieren Sie die Maven-Umgebung
3.1.1 Aktuelle Projekteinstellungen
1. Verwenden Sie IDEA中 File => Settings => Build,Execution,Deployment => Build Tools => Maven
Maven-Download-Installation und ihre Konfiguration
3. Die kompilierte Version des Konfigurationsprojekts ist 11
- Die von Maven standardmäßig verwendete kompilierte Version ist 5 (die Version ist zu niedrig).
Die oben konfigurierte Maven-Umgebung gilt nur für das aktuelle Projekt. Wenn wir ein anderes Projekt erstellen, wird die Standardkonfiguration wiederhergestellt. Um dieses Problem zu lösen, müssen wir die globale Maven-Umgebung konfigurieren.
3.1.2 Globale Einstellungen
Gehen Sie zu dieser Seite, um denselben Vorgang abzuschließen [klicken Sie auf die Datei, schließen Sie das Projekt auf dieser Seite]
3.2 Maven-Projekt
3.2.1 Erstellen Sie ein Maven-Projekt
1. Erstellen Sie ein leeres Projekt
2. Erstellen Sie ein Modul, wählen Sie Maven aus und klicken Sie auf Weiter
3. Geben Sie den Modulnamen und die Koordinateninformationen ein und klicken Sie auf „Fertig stellen“. Die Erstellung ist abgeschlossen
4. Erstellen Sie unter dem Maven-Projekt eine HelloWorld-Klasse
Die Verzeichnisstruktur des Maven-Projekts:
maven-project01
|— src (Quellcode-Verzeichnis und Testcode-Verzeichnis)
|— main (Quellcode-Verzeichnis)
|— Java (Quellcode-Java-Dateiverzeichnis)
|— resources (Quellcode-Konfigurationsdateiverzeichnis)
|— test (Testcode-Verzeichnis). )
| – Java (Testcode-Java-Verzeichnis)
| – Ressourcen (Testcode-Konfigurationsdateiverzeichnis)
| – Ziel (Speicherverzeichnis für kompilierte und paketgenerierte Dateien)
5. Schreiben Sie HelloWorld und führen Sie es aus
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello Maven ...");
}
}
3.2.2 Detaillierte Erläuterung der POM-Konfiguration
POM (Project Object Model): Bezieht sich auf das Projektobjektmodell, das zur Beschreibung des aktuellen Maven-Projekts verwendet wird.
- Verwenden Sie dazu die Datei pom.xml
pom.xml-Datei:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- POM模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 当前项目坐标 -->
<groupId>com.itheima</groupId>
<artifactId>maven_project1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 -->
<packaging>jar</packaging>
</project>
Detaillierte POM-Datei:
- Projekt: Das Stammetikett der POM-Datei, das das aktuelle Maven-Projekt angibt
- modelVersion: Deklariert, welcher POM-Modellversion die Projektbeschreibung folgt
- Obwohl sich die Version des Modells selbst selten ändert, ist sie dennoch wichtig. Die aktuelle POM-Modellversion ist 4.0.0
- Koordinaten: Gruppen-ID, Artefakt-ID, Version
- Suchen Sie die Position des Artikels im lokalen Lager, und eine Koordinate setzt sich aus den oben genannten drei Tags zusammen
- Verpackung: Die Verpackungsmethode des Maven-Projekts, normalerweise auf jar oder war eingestellt (Standard: jar)
3.2.3 Detaillierte Erläuterung der Maven-Koordinaten
Was sind Koordinaten?
- Die Koordinaten in Maven sindEine eindeutige Kennung für die Ressource, kann der Ressourcenstandort anhand dieser Koordinate eindeutig lokalisiert werden
- Verwenden Sie Koordinaten, um das Projekt zu definieren oder im Projekt erforderliche Abhängigkeiten einzuführen
Die Hauptkomponenten der Maven-Koordinaten
- groupId: Definieren Sie den Namen der Organisation, zu der das aktuelle Maven-Projekt gehört (normalerweise ist der Domänenname umgekehrt, zum Beispiel: com.itheima)
- artefaktId: Definiert den aktuellen Maven-Projektnamen (normalerweise den Modulnamen, z. B. order-service, waren-service)
- Version: Definiert die aktuelle Projektversionsnummer
In der folgenden Abbildung werden Koordinaten zur Darstellung eines Elements verwendet:
Notiz:
- Die oben genannten Ressourcen können Plug-Ins, Abhängigkeiten und das aktuelle Projekt sein.
- Wenn unser Projekt von anderen Projekten abhängig ist, benötigt es auch Koordinaten zum Importieren.
3.3 Maven-Projekt importieren
- Methode 1: Verwenden Sie das Maven-Bedienfeld, um Projekte schnell zu importieren
Öffnen Sie IDEA, wählen Sie rechts das Maven-Bedienfeld aus, klicken Sie auf das +-Zeichen, wählen Sie die pom.xml-Datei des entsprechenden Projekts aus und doppelklicken Sie darauf
Hinweis: Wenn kein Maven-Bedienfeld vorhanden ist, wählen Sie Ansicht => Darstellung => Werkzeugfensterleisten
- Methode 2: Verwenden Sie die Idee, um das Modulprojekt zu importieren
Datei => Projektstruktur => Module => + => Modul importieren
Suchen Sie die pom.xml, um das Projekt zu importieren
04. Abhängigkeitsmanagement
4.1 Abhängigkeitskonfiguration
Abhängigkeit: Bezieht sich auf die JAR-Pakete, die für die Ausführung des aktuellen Projekts erforderlich sind. In ein Projekt können mehrere Abhängigkeiten eingeführt werden:
Beispiel: Im aktuellen Projekt müssen wir Logback zum Aufzeichnen von Protokollen verwenden. Zu diesem Zeitpunkt können wir die Abhängigkeit von Logback in die Datei pom.xml des Maven-Projekts einführen. Konkrete Schritte sind wie folgt:
-
Schreiben Sie das Tag dependencies in pom.xml
-
Verwenden Sie die Abhängigkeit, um Koordinaten in das Abhängigkeits-Tag einzuführen
-
Definieren Sie die Gruppen-ID, die Artefakt-ID und die Version der Koordinaten
<dependencies>
<!-- 第1个依赖 : logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
<!-- 第2个依赖 : junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
- Klicken Sie auf die Schaltfläche „Aktualisieren“, um die neu hinzugefügten Koordinaten zu importieren
- Abhängigkeiten aktualisieren: Stellen Sie sicher, dass die neuesten Koordinaten jedes Mal hinzugefügt werden können, wenn eine neue Abhängigkeit eingeführt oder eine vorhandene Abhängigkeitskonfiguration geändert wird
Vorsichtsmaßnahmen:
- Wenn die importierte Abhängigkeit nicht im lokalen Lager vorhanden ist, wird eine Verbindung zum Remote-Lager/Zentrallager hergestellt und dann die Abhängigkeiten heruntergeladen (dieser Vorgang ist zeitaufwändig, bitte warten Sie geduldig).
- Wenn Sie die abhängigen Koordinateninformationen nicht kennen, können Sie im Zentrallager von mvn suchen (https://mvnrepository.com/).
Es gibt mehrere Möglichkeiten, Abhängigkeiten hinzuzufügen:
- Nutzen Sie abhängige Koordinaten für die zentrale Repository-Suche
-
Verwenden Sie IDEA-Tools, um nach Abhängigkeiten zu suchen
[thief slow –]
-
Nachdem Sie sich kompetent an Maven gewöhnt haben, importieren Sie schnell Abhängigkeiten
4.2 Abhängigkeitslieferung
4.2.1 Abhängigkeit ist transitiv
Als wir Maven in den frühen Tagen nicht verwendeten, erforderte das Hinzufügen abhängiger JAR-Pakete zum Projekt das Kopieren aller JAR-Pakete in das Projektprojekt. Wie in der folgenden Abbildung gezeigt, müssen alle drei JAR-Pakete in das Projektprojekt kopiert werden, wenn Logback-Classic erforderlich ist, da Logback-Classic von Logback-Core und SLF4J abhängt
Wir verwenden jetzt Maven. Wenn Sie Logback-Classic im Projekt verwenden müssen, müssen Sie nur die Abhängigkeitskoordinaten von Logback-Classic in der Konfigurationsdatei pom.xml hinzufügen.
In der Datei pom.xml wird nur die logback-classic-Abhängigkeit hinzugefügt. Da die Abhängigkeit von Maven jedoch transitiv ist, werden automatisch andere abhängige JAR-Pakete importiert.
Die Abhängigkeitsübertragung kann unterteilt werden in:
-
Direkte Abhängigkeiten: Abhängigkeiten, die durch die Abhängigkeitskonfiguration im aktuellen Projekt erstellt wurden
-
Indirekte Abhängigkeit: Wenn die abhängige Ressource von anderen Ressourcen abhängt, hängt das aktuelle Projekt indirekt von anderen Ressourcen ab
Zum Beispiel im Bild oben:
- ProjektA hängt von ProjektB ab. Für ProjektA ist ProjektB eine direkte Abhängigkeit.
- Und projectB hängt von projectC und anderen JAR-Paketen ab. Zu diesem Zeitpunkt werden dann auch die Abhängigkeiten von ProjektC an ProjektA weitergegeben. Für ProjektA ist ProjektC eine indirekte Abhängigkeit.
4.2.2 Abhängigkeiten ausschließen
Frage: Vorhin haben wir gesagt, dass Abhängigkeiten transitiv sind. Dann hängt A von B ab und B hängt von C ab. Wenn A nicht von C abhängig sein möchte, ist das möglich?
Antwort: In einem Maven-Projekt können wir dies erreichen, indem wir Abhängigkeiten ausschließen.
Was ist eine Ausschlussabhängigkeit?
- Abhängigkeiten ausschließen: Bezieht sich auf das aktive Trennen abhängiger Ressourcen. (Ausgeschlossene Ressourcen müssen keine Version angeben)
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖, 主动断开依赖的资源-->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
Beispiel für einen Abhängigkeitsausschluss:
-
maven-projectA hängt von maven-projectB ab, und maven-projectB hängt von Junit ab. Aufgrund der Transitivität von Abhängigkeiten ist Maven-ProjectA auch von Junit abhängig
-
Nach der Verwendung von Abhängigkeiten ausschließen
4.3 Abhängigkeitsbereich
Nach dem Import des abhängigen JAR-Pakets in das Projekt kann es standardmäßig überall verwendet werden.
Wenn Sie den Anwendungsbereich von Abhängigkeiten einschränken möchten, können Sie den Umfang über das Scope-Tag festlegen.
Wirkungsbereich:
-
Es gilt der Geltungsbereich des Hauptprogramms (im Geltungsbereich des Hauptordners)
-
Der Testprogrammumfang ist gültig (im Rahmen des Testordners)
-
Ob am Paketbetrieb teilgenommen werden soll (im Rahmen der Paketanweisung)
Geben Sie, wie in der Abbildung oben gezeigt, den Abhängigkeitsbereich für die Junit-Abhängigkeit über das Scope-Tag an. Dann kann diese Abhängigkeit nur in der Testumgebung und nicht in anderen Umgebungen verwendet werden.
Der Wertebereich des Scope-Tags:
Bereichswert _ | Hauptprogramm | Testprogramm | Paket (ausführen) | Beispiel |
---|---|---|---|---|
kompilieren (Standard) | Y | Y | Y | log4j |
prüfen | - | Y | - | junit |
bereitgestellt | Y | Y | - | Servlet-API |
Laufzeit | - | Y | Y | JDBC-Treiber |
4.4 Lebenszyklus
4.4.1 Einführung
Der Lebenszyklus von Maven besteht darin, alle Konstruktionsprozesse zu abstrahieren und zu vereinheitlichen. Beschreibt den Aufbau eines Projekts und die einzelnen Phasen, die es durchläuft.
Vor dem Aufkommen von Maven existierte der Lebenszyklus der Projektkonstruktion bereits, und Softwareentwickler bereinigten, kompilierten, testeten und stellten Projekte jeden Tag bereit. Obwohl jeder ununterbrochen Bauarbeiten durchführt, verwenden Unternehmen und Unternehmen, Projekte und Projekte oft unterschiedliche Methoden, um ähnliche Arbeiten auszuführen.
Maven lernt und reflektiert aus einer großen Anzahl von Projekten und Bauwerkzeugen und fasst dann eine Reihe höchst perfekter und einfach zu erweiternder Projektbaulebenszyklen zusammen. Dieser Lebenszyklus umfasst Bereinigung, Initialisierung, Kompilierung, Tests, Verpackung, Integrationstests, Verifizierung, Bereitstellung und Site-Generierung des Projekts sowie fast alle Bauschritte.
Maven unterteilt den Lebenszyklus der Projektkonstruktion in drei Gruppen (unabhängig voneinander):
-
clean: Aufräumarbeiten.
-
Standard: Kernjob. Zum Beispiel: Kompilierung, Test, Verpackung, Installation, Bereitstellung usw.
-
Website: Berichte erstellen, Websites veröffentlichen usw.
Welche spezifischen Phasen sind in den drei Sätzen von Lebenszyklen enthalten? Schauen wir uns das folgende Bild an:
Wir haben diese drei Sätze von Lebenszyklen gesehen, es gibt viele, viele Phasen darin, so viele Lebenszyklusphasen, tatsächlich verwenden wir nicht viele häufig verwendete, sondern konzentrieren uns hauptsächlich auf Folgendes:
• clean: Vom vorherigen Build generierte Dateien entfernen
• kompilieren: Kompilieren Sie den Quellcode des Projekts
• Test: Führen Sie Tests mit einem geeigneten Unit-Testing-Framework (Junit) durch.
• Paket: Packen Sie die kompilierten Dateien, z. B.: jar, war usw.
• install: Installiert das Projekt im lokalen Repository
Der Lebenszyklus von Maven ist abstrakt, was bedeutet, dass der Lebenszyklus selbst keine wirkliche Arbeit leistet. Im Design von Maven werden die eigentlichen Aufgaben (z. B. die Kompilierung des Quellcodes) von Plugins erledigt.
Um Programmierern die Nutzung des Maven-Lebenszyklus zu erleichtern, hat das IDEA-Tool in der Maven-Symbolleiste rechts einen Schnellzugriffskanal bereitgestellt
Die Reihenfolge des Lebenszyklus ist: Bereinigen -> Validieren -> Kompilieren -> Test -> Paket -> Verifizieren -> Installieren -> Site -> Bereitstellen
Worauf wir uns konzentrieren müssen, ist: Bereinigen -> Kompilieren -> Testen -> Paket -> Installieren
Erläuterung: Wenn wir im selben Lebenszyklus den späteren Lebenszyklus ausführen, wird der vorherige Lebenszyklus ausgeführt.
Denken Sie: Werden beim Ausführen des Paketlebenszyklus die Lebenszyklen zum Bereinigen und Kompilieren ausgeführt?
Clean wird nicht ausgeführt, Compile wird ausgeführt. Denn Kompilieren und Verpacken gehören zum selben Lebenszyklus, Bereinigung und Verpacken jedoch nicht zum selben Lebenszyklus.
4.4.2 Ausführung
Wenn wir in der täglichen Entwicklung den angegebenen Lebenszyklus ausführen möchten, gibt es zwei Ausführungsmethoden:
- Wählen Sie in der Maven-Symbolleiste auf der rechten Seite des Ideentools den entsprechenden Lebenszyklus aus und doppelklicken Sie, um ihn auszuführen
- Führen Sie in der DOS-Befehlszeile den Maven-Befehl aus
Methode 1: Führen Sie den Lebenszyklus in der Idee aus
- Wählen Sie den entsprechenden Lebenszyklus aus und doppelklicken Sie, um ihn auszuführen
kompilieren:
prüfen:
Paket:
Installieren:
sauber:
Methode 2: Führen Sie den Lebenszyklus in der Befehlszeile aus
- Gehen Sie zur DOS-Befehlszeile