1. Maven
Maven ist ein automatisiertes Build-Tool, das von der Apache Software Foundation verwaltet wird.Die ursprüngliche Bedeutung des Wortes Maven ist: Experte, Experte. Basierend auf dem Konzept des Projektobjektmodells ( Project Object Model , Abkürzung: POM ) kann Maven die Konstruktions-, Reporting- und Dokumentationsschritte eines Projekts mit einer zentralen Information verwalten.
Maven ist ein Projektmanagement-Tool, das Abhängigkeiten für Java-Projekte erstellen und verwalten kann
Offizielle Maven-Website Adresse der offiziellen Maven-Website
maven Zentrallager maven Zentrallager
1. Die Rolle von Maven
(1) Maven kann Verweise zwischen mehreren Projektmodulen integrieren und Projekte auch nach Geschäft und Funktionen aufteilen
(2) Maven kann JAR-Dateien und Quellcode automatisch herunterladen; JAR-Dateien und JAR-Versionen verwalten (automatische Versionskompatibilität)
(3) Verwalten Sie andere JAR-Pakete, von denen das JAR-Paket abhängt, laden Sie das Projekt automatisch herunter und importieren Sie es
(4) Kompilieren Sie das Programm, kompilieren Sie Java in die Klasse
(5) Testcode
(6) Dateien packen, um eine JAR-Datei (Java-Projekt) oder eine WAR-Datei (Webprojekt) zu bilden
(7) Bereitstellungsprojekt
2. Erstellen Sie das Projekt
(1) Cleanup: Löschen Sie frühere Kompilierungsergebnisse, um die Neukompilierung vorzubereiten
(2) Kompilierung: Kompilieren Sie das Java-Quellprogramm (.java-Datei) in eine Bytecode-Datei (.class-Datei)
(3) Test: Testen Sie die Schlüsselpunkte im Projekt, um die Korrektheit der Schlüsselpunkte im iterativen Entwicklungsprozess des Projekts sicherzustellen
(4) Bericht: Aufzeichnung und Anzeige der Testergebnisse in einem Standardformat nach jedem Test
(5) Packen: Packen Sie ein Projekt, das viele Dateien enthält, in eine komprimierte Datei für die Installation oder Bereitstellung. (Das Java-Projekt entspricht dem jar-Paket und das Web-Projekt dem war-Paket)
(6) Installation: In der Maven-Umgebung bezieht sich dies speziell auf die Installation des verpackten Ergebnisses – JAR-Paket oder Kriegspaket im lokalen Warehouse
(7) Bereitstellung: Bereitstellen des gepackten Ergebnisses im Remote-Warehouse oder Bereitstellen des Kriegspakets zum Ausführen auf dem Server
Zweitens, Maven-Installationsumgebung
1. Laden Sie die alte Version von der offiziellen Maven-Website herunter, Sie können das Dokument anzeigen, die entsprechende JDK-Version
Maven alte Version herunterladen
2. Legen Sie das heruntergeladene Maven-komprimierte Paket unter dem angegebenen Pfad ab und dekomprimieren Sie es (fügen Sie kein Chinesisch in den Pfad ein).
Es gibt hauptsächlich zwei Verzeichnisse wie folgt
bin : das Ausführungsprogramm, hauptsächlich mvn.cmd
conf : die Konfigurationsdatei settings.xml des Maven-Tools selbst
3. Konfigurieren Sie Maven-Umgebungsvariablen
(1) Erstellen Sie in den Umgebungsvariablen des Systems einen neuen Systemvariablennamen von M2_HOME, und der angegebene Wert ist das Installationsverzeichnis des Maven-Tools, das Verzeichnis vor bin
Beispiel: M2_HOME=D:\JDK\apache-maven-3.6.3
(2) Fügen Sie dann M2_HOME zum Pfad hinzu und fügen Sie %M2_HOME%\bin vor allen Pfaden hinzu;
Führen Sie in der neuen Befehlszeile den Befehl mvn -v aus
mvn -v
Der erste Lauf kann einen Fehler wie folgt melden:
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
(3) Erstellen Sie hier eine Systemvariable JAVA_HOME
Hinweis: JAVA_HOME muss konfiguriert werden, um den jdk-Pfad anzugeben
Wenn java.exe verwendet wird, wenn Maven ausgeführt wird, kann Maven nicht aufgerufen werden, wenn es nicht konfiguriert ist, aber wenn es konfiguriert ist, kann es aufgerufen werden
Schließen Sie zu diesem Zeitpunkt das DOS-Fenster, öffnen Sie es erneut und führen Sie den Befehl mvn -v erneut aus. Der folgende Inhalt wird angezeigt, Maven ist korrekt installiert und konfiguriert
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\JDK\apache-maven-3.6.3\bin\..
Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: D:\JDK\java
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
4. Führen Sie den Befehl mvn compile aus
Wenn der Befehl mvn compile zum ersten Mal ausgeführt wird, werden alle Java-Dateien im Verzeichnis src/main kompiliert
(1) Führen Sie den Download-Vorgang aus
Die vom Maven-Tool ausgeführten Operationen erfordern viele Plug-Ins (Java-Klassen – JAR-Dateien), um abgeschlossen zu werden
(2) Laden Sie das JAR-Paket herunter (Plugin)
(3) Der Speicherort des heruntergeladenen JAR-Pakets
Standard-Repository (natives Repository):
C:\Users\ (Benutzername für die Anmeldung am Betriebssystem) Administrator\.m2\repository
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom
https://repo.maven.apache.org : die Adresse des zentralen Warenlagers
Führen Sie mvn compile aus, das Ergebnis ist, dass das Zielverzeichnis (Ergebnisverzeichnis) im Stammverzeichnis des Projekts generiert wird, das von maven kompilierte Java-Programm und die endgültigen Klassendateien im Zielverzeichnis abgelegt werden
5. Legen Sie das Home-Verzeichnis der Maven-Installation, die Datei setting.xml und den lokalen Warehouse-Speicherort fest
(1) Legen Sie den Speicherort des Verzeichnisses fest, in dem Ressourcen auf diesem Computer gespeichert sind (legen Sie das lokale Warehouse fest).
Lagerort des Standardlagers (lokales Lager):
C:\Users\ (Benutzername für die Anmeldung am Betriebssystem) Administrator\.m2\repository
Es kann in den eingestellten Zielpfad kopiert werden, z. B. in den folgenden Pfad kopieren
D:\XXXX\maven-work\repository (Speicherort des PCs)
(2) Ändern Sie zuerst die Konfigurationsdatei von Maven, Maven-Installationsverzeichnis \conf\settings.xml (z. B.: D:\XXXX\apache-maven-3.6.3\conf\settings.xml (Speicherort des Personal Computers)). Sicherungseinstellungen .xml
(3) Bearbeiten Sie die Datei settings.xml, ändern Sie <localRepository>, um Ihr Verzeichnis anzugeben (verwenden Sie nicht das chinesische Verzeichnis).
D:\XXXX\maven-work\repository (Speicherort des PCs)
Öffnen Sie die Datei settings.xml und finden Sie in Zeile 53 die ursprüngliche Konfiguration wie folgt
Wir kopieren das Tag <localRepository> und ändern den Pfad im Tag in den Repository-Ordner, den wir vom Standardlaufwerk C kopiert haben
<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
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\JDK\maven-work\repository</localRepository>
3. Maven-Kern
1. Vereinbarte Verzeichnisstruktur
Das Maven-Projekt übernimmt das Prinzip " Konvention vor Konfiguration ", das Verzeichnis und der Dateispeicherort des Maven-Projekts sind alle festgelegt
Im Allgemeinen Konventionen > Konfiguration > Kodierung
Maven verwendet standardmäßig eine Reihe von Verzeichnisstrukturen. Nachdem ein Projekt über Maven erstellt wurde, wird die Verzeichnisstruktur des Projekts unter Verwendung dieser Verzeichnisstruktur als Vorlage erstellt. Obwohl Maven viele Vorlagen bereitstellt, ist die grundlegende Verzeichnisstruktur festgelegt
Es gibt drei Hauptdateien im Stammverzeichnis
src,Ziel,pom.xml
Hello 根目录(工程名)
|---src 源代码
|---|---main 主程序
|---|---|---java 主程序的 java 源码
|---|---|---resources 主程序的配置文件
|---|---|---webapp (web项目)该目录是web应用源代码目录,如html文件和web.xml等都在该目录下
|---|---|---filters 项目的资源过滤文件所在的目录
|---|---test 测试程序
|---|---|---java 测试程序的 java 源码
|---|---|---resources 测试程序的配置文件
|---|---|---filters 测试相关的资源过滤文件所在的目录
|---target 存放编译、打包后的输出文件
|---pom.xml Maven 工程的核心配置文件
Wir können das DOS-Befehlsfenster oder Windows PowerShell eingeben
tree 根目录文件名
Wie folgt, Baum Hallo
2.POM
POM ( Project Object Model, Projektobjektmodell ) ist die grundlegende Arbeitseinheit des Maven-Projekts. Es ist eine XML-Datei ( pom.xml ), die die grundlegenden Informationen des Projekts enthält und verwendet wird, um zu beschreiben, wie das Projekt aufgebaut ist. Projektabhängigkeiten deklarieren usw.
Beim Ausführen einer Aufgabe oder eines Ziels sucht Maven im aktuellen Verzeichnis nach einem POM. Es liest das POM, ruft die erforderlichen Konfigurationsinformationen ab und führt das Ziel aus. Maven verwendet ein Projekt als Modell. Steuern Sie den Prozess von Maven-Building-Projekten und verwalten Sie JAR-Abhängigkeiten
Zusatzetikett:
1. <scope>-Tag: abhängiger Bereich
Die Bereichswerte sind „compile“, „test“, „provided “ und der Standardwert ist „compile“.
(1) Bereichsabhängigkeit kompilieren :
ob es für das Hauptprogramm gilt: gültig
ob es für das Testprogramm gilt: gültig
ob es an der Verpackung teilnimmt: nimmt teil
ob es am Einsatz teilnimmt: nimmt teil
Typisches Beispiel: Federkern
(2) Der bereitgestellte Umfang hängt ab von:
Ob es für das Hauptprogramm gültig ist: gültig
Ob es für das Testprogramm gültig ist: gültig
Ob es an der Paketierung teilnehmen soll: nicht beteiligt
Ob es an der Bereitstellung teilnehmen soll: nicht beteiligt
Typisches Beispiel: server-api.jar
(3) Prüfumfang abhängig von:
Ob es für das Hauptprogramm gültig ist: ungültig
Ob es für das Testprogramm gültig ist: gültig
Ob es an der Paketierung teilnehmen soll: nicht beteiligt
Ob es an der Bereitstellung teilnehmen soll: nicht beteiligt
Typisches Beispiel: junit
wird hauptsächlich für das Web-Engineering bereitgestellt
Die Kompilierungs-, Test-, Paketierungs-, Installations- und Bereitstellungsprozesse (Phasen) von Maven-Build-Projekten funktionieren
Wie folgt, ist der Abhängigkeitsbereich von junit test
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
2. Tag <properties>: Attributeinstellung
[1] Gemeinsame Eigenschaftseinstellungen in maven
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目构建使用的编码,避免中文乱
码
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码
<maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本
<maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本
</properties>
[2] Globale Variablen setzen
In der pom.xml-Datei von Maven wird <properties> verwendet, um globale Variablen zu definieren
Der Wert der Variablen wird im POM in Form von ${property_name} referenziert und der Labelname setzt sich in der Regel aus Projektname + Feldversion zusammen
Ein einzelnes Wort kann direkt XX.Version genannt werden, und mehrere Wörter können durch eine horizontale Linie XX-XX-Version getrennt werden
globale Variablen definieren
<properties>
<dubbo.version>2.6.2</dubbo.version>
<spring-context-version>4.3.10.RELEASE</spring-context-version>
</properties>
beziehen sich auf globale Variablen
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-context-version}</version>
</dependency>
3. Tag <resource>: Ressource, Tag <build>: build
Alle *.java-Dateien in den Verzeichnissen src/main/java und src/test/java werden in der comile- bzw. test-comiple-Phase kompiliert, und die Kompilierungsergebnisse werden in target/classes und target/test-classes abgelegt Verzeichnisse, aber andere Dateien in diesen beiden Verzeichnissen werden ignoriert.Wenn Sie das Dateipaket im Verzeichnis src in das Verzeichnis target/classes legen müssen, wird es Teil der Ausgabe-JAR sein. Der Speicherort der Ressourcendatei muss angegeben werden. Fügen Sie den folgenden Inhalt in das <buid>-Tag ein
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
3. Koordinaten (gav)
Maven verwaltet jedes Plug-In als Projekt im Warehouse und verwendet einen Satz von (drei) Vektorkoordinaten, um die Koordinaten darzustellen. Ein Maven-Projekt kann sich eindeutig im Warehouse befinden
groupId: Organisationsname, normalerweise die umgekehrte Reihenfolge des Domänennamens des Unternehmens oder der Organisation + Projektname
artifactId: Modulname, normalerweise der Projektname
Version: Versionsnummer
Die Position des Projekts im Warehouse wird durch Koordinaten bestimmt: groupId, artifactId und version bestimmen den Pfad des Projekts im Warehouse, artifactId und version bestimmen den Namen des jar-Pakets
4. Abhängigkeitsmanagement (Abhängigkeit)
Verwalten Sie JAR-Dateien, die von Projekten verwendet werden können
Abhängigkeitsbereich: Kompilieren, Testen, Bereitstellen, Kompilieren wird standardmäßig verwendet
Notiz:
Alle im Projekt verwendeten Abhängigkeiten (JAR) müssen sich im lokalen Warehouse befinden; keine müssen über Maven heruntergeladen werden, einschließlich der bereitgestellten müssen heruntergeladen werden
5. Lagerverwaltung
Das Maven-Repository kann uns helfen, seine Dateien (hauptsächlich JAR) zu verwalten, wo alle JARs (WAR, ZIP, POM) abgelegt werden
1. Maven-Lagerhaltung
[1] Maven Plug-Ins, Plug-Ins sind auch einige Jars, diese Jars können bestimmte Funktionen vervollständigen
[2] Module unserer eigenen Entwicklungsprojekte
【3】Jar-Pakete von Frameworks oder Tools von Drittanbietern
2. Lagerklassifizierung
Lokales Lager: ein Ordner auf dem PC, in dem verschiedene Gläser gespeichert sind
Standardmäßig in ~\.m2\repository gespeichert
Remote Warehouse, ein Warenlager auf einem Internetserver, der nur über das Internet genutzt werden kann
[1] Central Warehouse, das maßgebendste, ein zentralisiertes Warehouse, das von allen Entwicklern gemeinsam genutzt wird
https://repo.maven.apache.org : die Adresse des zentralen Warenlagers
[2] Das Spiegelbild des Zentrallagers: Es ist das Backup des Zentrallagers Auf allen Kontinenten sind wichtige Städte Spiegelbilder
【3】Private Server werden innerhalb des Unternehmens und im lokalen Netzwerk verwendet, nicht für den externen Gebrauch.
6. Lebenszyklus
Der Prozess des Erstellens eines Projekts mit dem Maven-Tool ist der Lebenszyklus
Der Prozess, in dem Maven ein Projekt erstellt, bereinigt, kompiliert, getestet, gemeldet, gepackt, installiert und bereitgestellt wird
(1) mvn kompilieren
Kompilieren Sie Java im Verzeichnis main/java/ in eine Klassendatei, kopieren Sie die Klasse in das Verzeichnis target/classes
und kopieren Sie alle Dateien im Verzeichnis main/resources in das Verzeichnis target/classes(2) mvn testkompilieren
Kompilieren Sie das Testprogramm (im aktuellen Verzeichnis wird ein Zielverzeichnis erstellt, in dem die nach dem Kompilieren des Testprogramms generierten Bytecode-Dateien gespeichert werden)
(3) mvn-Test
Test (ein Verzeichnis todsichere Berichte wird generiert, um die Testergebnisse zu speichern)
(4) mvn-Paket
Packen des Hauptprogramms (kompilieren, kompilieren und testen, testen und packen Sie das Hauptprogramm, um ein JAR-Paket oder ein WAR-Paket gemäß der pom.xml-Konfiguration zu generieren)
(5) mvn installieren
Installieren Sie das Hauptprogramm (dieses Projekt wird gemäß den Koordinaten dieses Projekts im lokalen Lager gepackt und gespeichert)
(6) mvn bereitstellen
Bereitstellen des Hauptprogramms (dieses Projekt wird gepackt, gemäß den Koordinaten dieses Projekts in der lokalen Bibliothek gespeichert und auch im privaten Server-Warehouse gespeichert und automatisch im Webcontainer bereitgestellt)
(1) Nach dem Packen mit mvn-Paket wird ein Projektname-Version-JAR-Paket im Zielverzeichnis des Projektverzeichnisses generiert
(2) Kopieren Sie es in die von Ihnen selbst kopierte lokale Maven-Bibliothek, folgen Sie dem Projektpfad com.Unternehmensorganisationsname.Projektname
(3) Zeigen Sie die Koordinateninformationen (gav) unter der Datei pom.xml des aktuell gepackten Projekts an
(4) Kopieren Sie es in das Projekt, das auf Referenzen angewiesen ist
(5) Kompilieren Sie den Test und bestehen Sie ihn
7. Plugins
Wenn der maven-Befehl ausgeführt wird, ist es das Plug-in, das die Funktion tatsächlich vervollständigt. Das Plug-in besteht aus einigen JAR-Dateien und einigen Klassen
8. Erbschaft
9. Polymerisation