Vielleicht war ich nicht talentiert und als ich Maven zum ersten Mal traf, war ich von verschiedenen unbekannten Tutorials verwirrt. In meiner späteren Verwendung stellte ich fest, dass die meisten Funktionen von Maven nicht so schwierig waren, wie ich es mir vorgestellt hatte.
Dieser Artikel richtet sich an Anfänger von Maven, in der Hoffnung, dass er Maven so schnell wie möglich verstehen und die Reihe von Vorteilen genießen kann, die es mit sich bringt.
[Eine einfache Frage]
Bevor Sie eine Erklärung geben, stellen Sie eine einfache Frage.
Wenn Sie zwei Java -Projekte unter Eclipse entwickeln und sie A und B nennen, wie einige Funktionen in Projekt A von bestimmten Klassen in Projekt B abhängen, wie kann diese Abhängigkeit beibehalten?
Ich habe dies vor der Verwendung von Maven, Packaged Project B als Glas verwendet und die JAR -Datei von B unter der Bibliothek von Projekt A importiert.
Dies hat offensichtliche Nachteile:
1. Wenn während des Entwicklungsprozesses ein Fehler in B gefunden wird, muss B für Projekt A umgestellt und neu kompiliert werden.
2. Wenn Sie an der Entwicklung von Projekt A zusammenarbeiten, um sicherzustellen, dass es normal ausgeführt werden kann, wählen Sie entweder B in A oder die Veröffentlichung von B wie B veröffentlichen und den Entwickler darüber informieren, wie es verwendet wird. Offensichtlich sind beide Methoden nicht sehr gut. Ersteres kann Ressourcenverschwendung verursachen (zum Beispiel kann der Entwickler andere Projekte entwickeln, die sich auf B verlassen, die lokal gespeichert wurden), während letztere Risiken für den normalen Betrieb des Projekts einbringen (wenn die Arbeit an manuelle Arbeiten übergeben wird, ist es dazu bestimmt, eine bestimmte Fehlerrate zu erzielen).
Daher ist es offensichtlich ein „schlechter“ Ansatz, die Abhängigkeiten zwischen Projekten manuell zu kontrollieren.
[Einführung in Maven]
Nach Ansicht des Autors besteht Mavens Kernfunktion darin, die Abhängigkeiten zwischen Projekten vernünftig zu beschreiben.
Alle Maven -Projekte enthalten eine Datei namens pom.xml, die ihre eigene <gruppe> <artifactid> <version> und andere Felder aufzeichnet. Diese Felder sind beim Erstellen eines Maven -Projekts ausgefüllt, und Maven wird das darauf basierende Projekt lokalisieren.
Ein weiteres Schlüssel -Tag in einem POM ist <abhängigkeiten>, das mehrere <Depopenty> -Tags enthalten kann, und unter <Depopenty> sind die Abhängigkeitsfelder wie <gruppe> <artifactid> <version> oben eingeführt, die eine eindeutige Projektversion bestimmen.
Ein typischer pom.xml [aus dem Projekt luajava]:
<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> <groupId>org.keplerproject</groupId> <artifactId>luajava</artifactId> <version>1.1</version> <packaging>jar</packaging> <name> luajava </name> <URL> http://maven.apache.org </url> <properties> <projekt.build.sourceencoding> utf-8 </project.build.sourceencoding> </probus> <plugingInins> <gruppen> <Groupins> <Groupins> <GroupIns> <GroupIns> <GroupIns> <gruppen> <GroupIns> <GroupIns> <gruppen> <gruppe- org.apache.maven.maven.plugins <Groupins> <gruppen> <gruppe> <gruppe> <gruppe> <gruppen- org. <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 3.8.1 </version> <scope> test </scope> </abhängig> </project>
[Maven Library]
Wenn Sie gerade die A- und B -Projekte nehmen, schreiben Sie in der POM -Datei von Project A <De voran, und Maven findet das B -Projekt im Arbeitsbereich und erstellt Abhängigkeiten. Zu diesem Zeitpunkt kann Project A direkt auf die Klassenressourcen in Projekt B zugreifen, und der in Projekt B festgelegte Haltepunkt wird beim Debuggen von A. weiterhin getroffen werden.
Zusätzlich zur Arbeitsbereichsabhängigkeitsvereinigung kann Maven Projekte auch in einem Remote -Image in Verbindung bringen. Wenn im Arbeitsbereich kein entsprechender Projektdatensatz vorliegt, stellt Maven eine Verbindung zum zentralen Repository her, um nachzuschlagen. Wenn es gefunden wird, wird das Projekt in die lokale Bibliothek heruntergeladen (die lokale Bibliothek in Windows befindet sich im .m2 -Verzeichnis des Benutzerdokuments) und setzt den Verband automatisch fest. Dies ist eine sehr bequeme Funktion. Wenn wir zusätzliche JAR -Paketunterstützung benötigen, müssen wir sie nicht mehr manuell herunterladen und vorstellen. Wir müssen nur die Abhängigkeitsfelder einfügen, die dem Projekt entsprechen, an den entsprechenden Standort des POMs, und überlassen den Rest Maven, um sie zu vervollständigen.
[Ein Beispiel]
Woher kennen wir also die Felder wie Groupid des erforderlichen Projekts?
Wenn das offizielle Projekt Maven unterstützt, gibt es im Allgemeinen ein Abhängigkeitsfeld auf seiner Seite zum Kopieren, aber es gibt auch eine Situation, in der Maven unterstützt wird, aber es werden keine abhängigen Felder angegeben. Die Maven -Merkmale anderer Projekte werden von Dritten beibehalten, und es ist schwierig, Maven von offiziellen Kanälen zu unterstützen.
Daher besteht die bevorzugte Lösung für die Abfrage von Abhängigkeitsfeldern darin, den Maven -Suchdienst zur Suche zu verwenden.
Hier empfehle ich eine Adresse: mvnrepository.com
Das Folgende ist ein Beispiel für die Verwendung von Eclipse, um den MySQLJDBC -Treiber zu assoziieren. Bitte bestätigen Sie bitte, dass es Maven in Help-> über E-Eclipse unterstützt:
In der offiziellen neuen Version von Eclipse ist die Unterstützung für Maven bereits eingebaut. Wenn die Version älter ist, können Sie das Maven-Plug-In installieren.
Erstellen wir zunächst ein neues Maven-Projekt, New-> Project-> mavenproject-> CreateasimpleProject (SkiparchetypeSelection).
Das Folgende ist der wichtigste Schritt. Füllen Sie die Abhängigkeitsfelder wie GroupID dieses Projekts aus. Die hier ausgefüllten Felder werden verwendet, wenn andere Projekte von ihnen abhängen. Die nicht gefüllten Teile sind optional:
Danach suchten wir unter mvnrepository.com nach "MySQL JDBC"
Bald fanden wir das Ergebnis und klickten, um die detaillierten Versionsinformationen anzuzeigen:
Hier finden Sie die Liste mehrerer Versionen und Verwendung von MySQL JDBC. Hier wählen wir eine zweite neue Version 5.1.34:
Kopieren Sie die Inhalte in der Maven -Box und schreiben Sie sie in die <abhängigen des Poms>:
<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> <groupId>com.test</groupId> <artifactId>maventest</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactid> mysql-connector-java </artifactid> <version> 5.1.34 </Version> </abhängig> </abhängig> </project>
Nachdem die Progress -Lese -Bar beendet ist, können Sie feststellen, dass das Projekt mehr Maven -Abhängigkeiten enthält und das von uns gerade eingeführte JDBC -Treiberpaket finden:
[Andere Merkmale]
1. Spiegelquelle
Es ist offensichtlich, dass das Maven Central -Lagerhaus eine relativ große Last hat und nicht in China ist, sodass die Geschwindigkeit sehr langsam ist und die Abhängigkeiten manchmal nicht gefunden werden können. Insbesondere bei Anlässen auf kleinem Maßstab wird der Aufbau eines privaten Servers von Maven erheblich die Effizienz verbessern. Hier ist ein Werkzeug für das Maven -Bildgebäude: Nexus: http://www.sonatype.org/nexus/
Verwenden Sie es, um schnell und einfach eine private Maven -Bildquelle zu erstellen und dann in Maven -Einstellungen zu konfigurieren.xml.
2. Lazy Download von SRC -Quellcode
Manchmal müssen wir uns auf die Quelldatei beziehen, die vom Projekt abhängt. Zu diesem Zeitpunkt können wir versuchen, die Klassendatei direkt zu doppelklicken. Wenn in der Maven -Bildquelle eine Quelldatei vorhanden ist, wird sie automatisch in den lokalen Bereich heruntergeladen, und Eclipse wird automatisch geladen und angezeigt.
3. Die Konfiguration der Parameterkonfiguration kompilieren
Der Autor verwendet die Eclipseluna -Version. Die Standard -Java -Kompilierungsversion von Maven beträgt 1,5. Wir können seine Kompilierungsversion in POM angeben, um sie auf 1.7 zu verbessern (siehe das Build -Tag in Luajavapom). Darüber hinaus werden diese Einstellungen auch durch Automatisierungswerkzeuge wie die kontinuierliche Integration von Jenkins gelesen und ordnungsgemäß konfiguriert.
Zusammenfassen
Bei dem oben genannten geht es darum, Maven schnell zu verstehen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!