1. Was ist Maven?
Maven ist ein in Java entwickeltes Projektbauwerkzeug. Es kann die Zusammenstellung, Testen, Veröffentlichungen und Dokumente während des Projektkonstruktionsprozesses automatisieren und die Bereitstellungsbelastung der Programmierer erheblich verringern.
2. Installieren Sie Maven
Die Installation von Maven ist sehr einfach. Besuchen Sie die offizielle Maven -Seite zum Herunterladen: http://maven.apache.org/download.cgi
Konfigurieren Sie nach dem Herunterladen die Umgebungsvariable M2_HOME und führen Sie dann die MVN -Verssion im Terminal aus. Wenn Sie die richtige Ausgabeaufforderung sehen, ist Maven installiert.
3. Grundlegende Konzepte von Maven
Die Kernidee von Maven ist POM, dh Projektobjektmodell. POM -Dateien beschreiben die Ressourcen (Quellcode, Abhängigkeiten, Tests usw.), die von einem Maven -Projekt in Form einer XML -Datei verwendet werden. Die folgende Abbildung beschreibt die Struktur der POM -Datei und wie Maven die POM -Datei aufruft.
Wenn ein Maven -Befehl ausgeführt wird, wird eine POM -Datei übergeben, und Maven wird in der im POM beschriebenen Ressource ausgeführt
POM -Datei:
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- The Basics --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!-- Build Settings --> <build>...</build> <reporting>...</reporting> <!-- More Project Information --> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- Environment Settings --> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <voraussetzungen> ... </Voraussetzungen> ... </Repositories> <Repositories> ... </Repositories> <PluginRepositories> ... </pluginRepositories> <Ververtretung> ... </DistributionManagement> <Profies> ... </Profiles> </Project> </Project> </Project> </Project> </Project> </Project>
Modellversion ist die POM -Modellversion, 4.0.0, unterstützt Maven2 und 3
Maven -Koordinaten (Maven -Koordinaten)
(1) GroupID: Es ist die eindeutige ID einer Organisation oder eines Projekts. In den meisten Fällen verwendet es den Stammnamen des Java -Pakets des Projekts als GroupID, wie z. B. com.pastqing
(2) Artefaktid: Es ist der Name des Projekts, das beispielsweise ein Zahlungssystem-Artefaktid erstellt wird. Artefactid ist der Name des Unterverzeichnisses im Rahmen des GroupID -Verzeichnisses im Maven -Repository
(3) Version: Wie der Name impliziert, die Versionsnummer der Projektausgabe
Die obigen drei Elemente sind Teil des Namens des Build -Ergebniss. Nachdem das Projekt erstellt wurde, wird ein JAR -Paket generiert. Der Pfad im Maven-Repository ist maven_repo/com/pastQing/web-pay/1.0/web-pay-1.0.jar
4. Ein Hello World Java -Projekt, das mit Maven gebaut wurde
Erstellen Sie ein Projekt mit dem Maven -Plugin -Archetyp:
Öffnen Sie das Arbeitsverzeichnis im Terminal und führen Sie den Befehl aus:
MVN -Archetyp: Erzeugen
Das erste Mal ist langsamer, da Sie den zugehörigen Projektprototyp zum ersten Mal aus dem Maven Central Repository herunterladen müssen. Nach dem Herunterladen wird das Projektmodell ausgewählt und GroupID, ArtefactId, Version usw. wird eingegeben. Nach Abschluss des Baus wird es eine Erfolgsaufforderung geben.
Verpackung des Projekts: Wechseln Sie zum Projekt Root -Verzeichnis und führen Sie das MVN -Paket aus. Nachdem das Paket erfolgreich ist, generiert das Projekt einen Zielordner mit generierten JAR -Dateien und Klassendateien.
Führen Sie die JAR -Datei aus:
java -cp target/helloWorld-1.0-snapshot.jar com.pastqing.app
Zu diesem Zeitpunkt wurde ein einfachste von Maven erbaute Java -Projekt abgeschlossen.
5. Ein Java-Web-Projekt, das mit Maven gebaut wurde
Das Generieren eines Webprojekts ähnelt im Wesentlichen dem Generieren eines Java -Projekts, das verwendete Modell ist jedoch unterschiedlich. Ich werde es hier nicht erklären. Lassen Sie uns darüber sprechen, wie Sie Tomcat oder Jetty Plug-In verwenden, um ein Webprojekt auszuführen. Hier nehmen wir Tomcat als Beispiel.
Maven Tomcat Plug-In-Installation: http://tomcat.apache.org/maven-plugin-2.2/
Wir fügen der POM-Datei im Webprojekt die folgenden Plug-in-Informationen hinzu
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.2</version></plugin><plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version> 2.2 </Version> </plugin>
Auf diese Weise integrieren wir das Maven-Plug-In von Tomcat und benötigen nur einen Befehl zum Bereitstellen und Starten des Dienstes. Der Befehl lautet wie folgt:
MVN Tomcat: Lauf
(Tomcat6)
MVN Tomcat7: Lauf
(Tomcat7)
Automatische Bereitstellung für externe Tomcat mit Tomcat Maven -Plugin
Die obige automatische Bereitstellung verwendet Tomcat, die in Maven eingebettet sind. Als nächstes ändern wir die POM -Datei so, dass das Projekt an externem Tomcat bereitgestellt wird.
Ändern Sie die Projekt -POM -Datei und fügen Sie Serverkonfigurationsinformationen hinzu
<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration> <url>http://localhost:8080/manager/text</url> <server>tomcat7</server> <username>admin</username> <Kennwort> admin </password> </configuration> </plugin>
Die Werte von Server, Benutzername und Kennwort entsprechen einzeln für Server, Benutzername und Kennwort in Setting.xml in %maven_home.
Starten Sie den externen Tomcat und führen Sie den Befehl MVN Tomcat7: Neueinstellung aus
6. Wie man ein Multi-Modul-Projekt mit Maven erstellt
1. Elternpom
Alle Maven POM -Dateien werden von einem übergeordneten POM geerbt. Wenn kein übergeordneter POM angegeben ist, wird die POM -Datei aus dem Stammpom geerbt. Die Integrationsbeziehung von POM -Dateien ist in der folgenden Abbildung dargestellt:
Sie können eine POM -Datei erstellen, die eine andere POM -Datei explizit erben. Auf diese Weise können die Einstellungen aller untergeordneten POM -Dateien geändert werden, indem die Einstellungen der öffentlichen Eltern -POM -Datei geändert werden. Hier verwenden wir das übergeordnete Tag, um den übergeordneten Pom zu definieren. Lassen Sie uns ein Multi-Modul-Mavne-Projekt erstellen
2. Erstellen Sie die Projektverzeichnisstruktur
Wir erstellen ein Maven-Web-Projekt namens EducationCloud. Als nächstes erstellen wir mehrere Ordner im Projektverzeichnis, um unsere Module zu teilen. Sie sind Bildungspersonal (Elternmodul), Education-Core (Business), Education-Enity (Entity), Education-Web (Web Service)
Die Verzeichnisabteilung kann entsprechend den Bedürfnissen geteilt werden, meine Abteilung ist wie oben
A. Ändern Sie die POM -Datei
Wir verwenden Modul -Tags, um Module zu teilen. Öffnen Sie die POM -Datei im Stammverzeichnis und fügen Sie das Moule -Tag hinzu.
<? 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> </gruppe-com. <version> 1.0-Snapshot </Version> <Pakete> pom </packaging> <module> <module> Education-Parent </modul> <modul> Education-Core </modul> <modul> Education-Intity </modul> <modul> Education-Web </Modul> </modules> </name> </name> </name> </name> </name> </project> </modul> </modules> </name> </name> </name> </name> </project> </project> </modules> </name> </name> </name> </projekt>
Hier sprechen wir über das Verpackungs -Tag: Am häufigsten ist es, es als Glas, Krieg zu verpacken. Jedes Maven -Projekt muss das verpackte Element in der POM -Datei definieren. Wenn das Element nicht deklariert wird, wird es standardmäßig als Glas verpackt. Wenn der Definitionswert Krieg ist, wird er als Kriegspaket verpackt. Wenn der Wert POM ist, wird kein Paket erzeugt (normalerweise im übergeordneten Modul verwendet).
Fügen Sie jedem Modul übergeordnete Tags hinzu:
Das übergeordnete Tag wird verwendet, um die Koordinatenposition des übergeordneten POM zu definieren und wie folgt definiert:
<Eltern> <gruppe> com.educationCloud </Groupid> <artifactId> EducationCloud-Parent </artifactId> <version> 1.0-Snapshot </Version> <relativpaths> </relativePath> </parent>
GroupID, Aritfactid, Version sind Elemente, die die Standortinformationen des übergeordneten POM repräsentieren. Relativpath ist der relative Pfad, der den Ort des übergeordneten Poms darstellt. Die Standardeinstellung ist ../pom.xml. Es ist hier zu beachten, dass GroupID, Aritfactid, Version der übergeordneten POM -Datei entsprechen muss.
Verwenden Sie Abhängigkeitsmanagement, um alle Abhängigkeiten im Projekt zu verwalten. Um Abhängigkeiten einheitlich zu verwalten, verwenden wir das Abhängigkeitsmanagement in der POM -Datei des übergeordneten Projektmoduls, um alle Abhängigkeiten im Projekt zu deklarieren. Auf diese Weise kann die Versionsnummer ausgelassen werden, wenn sie sich auf Abhängigkeiten in anderen Unterprojekten bezieht, und sie ist auch einfach zu ändern.
Schreiben Sie die POM-Datei des übergeordneten Projektmoduls ** EducationCloud-Parent und fügen Sie sie wie folgt hinzu:
Verwenden Sie Pluginmanagement, um Maven -Plugins im Projekt zu verwalten, um Maven -Plugins im Projekt gleichmäßig zu verwalten, z. Auf diese Weise werden Plugins, auf die in allen Submodules verwiesen wird, einheitlich verarbeitet, und das Folgende wird hinzugefügt:
<PluginManagement> <Plugins> <!-Complile Plugin-Konfiguration-> <plugin> <GroupId> org.apache.maven.plugins </GroupId> <artifactID> Maven-Complinier-Plugin </artifactID> <version> 3.3 </Version> <Configuration> </scoding> 1,7 </scorts> </scrite> </sacting> </target> </target> </target> </target> </target> </target> </target> </target> </configuration> <plugin> </plugins> </pluginmanagement>
Oben haben wir die Konfiguration des Maven Compilation-Plug-Ins hinzugefügt, die mit JDK1.7 zusammengestellt wurden. Nach dem Speichern können wir die entsprechenden Modifikationen im effektiven POM jedes Submoduls sehen.
Verwenden Sie Eigenschaften -Tags, um Konstanten zu definieren:
Wir definieren die Versionsnummern jeder Abhängigkeit als unterschiedliche Konstanten, damit sie für zukünftige Änderungen geeignet ist:
<Porperties> <jdkversion> 1.7 </jdkversion> <servletversion> 3.1.0 </servletversion> <mysqlversion> 5.1.34 </mysqlversion> <JuniTversion> 4.12 </junitversion> <defaultEnteCoding> utf-8 </defaultEncoding> </properties>
Verwenden Sie beim Zitieren einfach die Form von $ {jdkversion}.
Beachten Sie, dass alle oben genannten Vorgänge in der IDE betrieben werden können, was es bequemer und einfacher macht.