Dieser Leitfaden führt Sie durch die Verwendung von Maven zum Erstellen eines einfachen Java-Projekts.
Sie erstellen eine Anwendung, die die Tageszeit bereitstellt, und erstellen sie dann mit Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Zuerst müssen Sie ein Java-Projekt einrichten, das Maven erstellen kann. Um den Fokus weiterhin auf Maven zu richten, gestalten Sie das Projekt vorerst so einfach wie möglich. Erstellen Sie diese Struktur in einem Projektordner Ihrer Wahl.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
Im Verzeichnis src/main/java/hello
können Sie beliebige Java-Klassen erstellen. Um die Konsistenz mit dem Rest dieses Handbuchs zu gewährleisten, erstellen Sie diese beiden Klassen: HelloWorld.java
und Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Da Sie nun über ein Projekt verfügen, das mit Maven erstellt werden kann, besteht der nächste Schritt darin, Maven zu installieren.
Maven kann als ZIP-Datei unter https://maven.apache.org/download.cgi heruntergeladen werden. Es sind nur die Binärdateien erforderlich. Suchen Sie daher nach dem Link zu apache-maven- {version} -bin.zip oder apache-maven- {version} -bin.tar.gz.
Sobald Sie die ZIP-Datei heruntergeladen haben, entpacken Sie sie auf Ihren Computer. Fügen Sie dann den Ordner bin zu Ihrem Pfad hinzu.
Um die Maven-Installation zu testen, führen Sie mvn
über die Befehlszeile aus:
mvn -v
Wenn alles gut geht, sollten Ihnen einige Informationen zur Maven-Installation angezeigt werden. Es sieht ähnlich aus wie das Folgende (wenn auch vielleicht etwas anders):
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven-Startseite: /home/dsyer/Programs/apache-maven Java-Version: 1.8.0_152, Anbieter: Azul Systems, Inc. Java-Home: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Standardgebietsschema: en_GB, Plattformkodierung: UTF-8 Betriebssystemname: „linux“, Version: „4.15.0-36-generic“, Arch: „amd64“, Familie: „unix“
Glückwunsch! Sie haben jetzt Maven installiert.
INFO: Vielleicht möchten Sie den Maven-Wrapper verwenden, um Ihre Entwickler davor zu schützen, die richtige Version von Maven zu haben oder sie überhaupt installieren zu müssen. Von Spring Initializr heruntergeladene Projekte enthalten den Wrapper. Es wird als Skript mvnw
auf der obersten Ebene Ihres Projekts angezeigt, das Sie anstelle von mvn
ausführen.
Nachdem Maven nun installiert ist, müssen Sie eine Maven-Projektdefinition erstellen. Maven-Projekte werden mit einer XML-Datei namens pom.xml definiert. Diese Datei enthält unter anderem den Namen, die Version und die Abhängigkeiten des Projekts von externen Bibliotheken.
Erstellen Sie eine Datei mit dem Namen pom.xml im Stammverzeichnis des Projekts (also neben dem Ordner src
) und geben Sie ihr den folgenden Inhalt:
pom.xml
link:initial/pom.xml[role=include]
Mit Ausnahme des optionalen
-Elements ist dies die einfachste pom.xml- Datei, die zum Erstellen eines Java-Projekts erforderlich ist. Es enthält die folgenden Details der Projektkonfiguration:
. POM-Modellversion (immer 4.0.0).
. Gruppe oder Organisation, zu der das Projekt gehört. Wird oft als invertierter Domainname ausgedrückt.
. Name, der dem Bibliotheksartefakt des Projekts gegeben werden soll (z. B. der Name seiner JAR- oder WAR-Datei).
. Version des Projekts, das erstellt wird.
– Wie das Projekt verpackt werden soll. Der Standardwert ist „jar“ für die Verpackung von JAR-Dateien. Verwenden Sie „war“ für die WAR-Dateiverpackung.
Notiz | Wenn es um die Wahl eines Versionierungsschemas geht, empfiehlt Spring den Ansatz der semantischen Versionierung. |
An diesem Punkt haben Sie ein minimales, aber dennoch leistungsfähiges Maven-Projekt definiert.
Maven ist nun bereit, das Projekt zu erstellen. Sie können jetzt mit Maven mehrere Build-Lebenszyklusziele ausführen, darunter Ziele zum Kompilieren des Projektcodes, zum Erstellen eines Bibliothekspakets (z. B. einer JAR-Datei) und zum Installieren der Bibliothek im lokalen Maven-Abhängigkeits-Repository.
Um den Build auszuprobieren, geben Sie Folgendes in der Befehlszeile ein:
mvn kompilieren
Dadurch wird Maven ausgeführt und angewiesen, das Kompilierungsziel auszuführen. Wenn es fertig ist, sollten Sie die kompilierten .class- Dateien im Verzeichnis target/classes finden.
Da es unwahrscheinlich ist, dass Sie .class- Dateien direkt verteilen oder damit arbeiten möchten, möchten Sie wahrscheinlich stattdessen das Paketziel ausführen:
mvn-Paket
Das Paketziel kompiliert Ihren Java-Code, führt alle Tests aus und packt den Code abschließend in eine JAR-Datei im Zielverzeichnis . Der Name der JAR-Datei basiert auf
und
des Projekts. Wenn beispielsweise die minimale pom.xml- Datei von zuvor vorhanden ist, heißt die JAR-Datei gs-maven-0.1.0.jar .
Um die JAR-Datei auszuführen, führen Sie Folgendes aus:
java -jar target/gs-maven-0.1.0.jar
Notiz | Wenn Sie den Wert von von „jar“ in „war“ geändert haben, ist das Ergebnis eine WAR-Datei im Zielverzeichnis anstelle einer JAR-Datei. |
Maven verwaltet außerdem ein Abhängigkeits-Repository auf Ihrem lokalen Computer (normalerweise in einem .m2/repository -Verzeichnis in Ihrem Home-Verzeichnis), um schnellen Zugriff auf Projektabhängigkeiten zu ermöglichen. Wenn Sie die JAR-Datei Ihres Projekts in diesem lokalen Repository installieren möchten, sollten Sie das install
aufrufen:
mvn installieren
Das Installationsziel kompiliert, testet und verpackt den Code Ihres Projekts und kopiert ihn dann in das lokale Abhängigkeits-Repository, damit ein anderes Projekt ihn als Abhängigkeit referenzieren kann.
Apropos Abhängigkeiten: Jetzt ist es an der Zeit, Abhängigkeiten im Maven-Build zu deklarieren.
Das einfache Hello World-Beispiel ist völlig eigenständig und nicht auf zusätzliche Bibliotheken angewiesen. Die meisten Anwendungen sind jedoch auf externe Bibliotheken angewiesen, um allgemeine und komplexe Funktionen zu verarbeiten.
Angenommen, Sie möchten, dass die Anwendung nicht nur „Hallo Welt!“ sagt, sondern auch das aktuelle Datum und die aktuelle Uhrzeit druckt. Während Sie die Datums- und Uhrzeitfunktionen in den nativen Java-Bibliotheken nutzen können, können Sie die Dinge durch die Verwendung der Joda Time-Bibliotheken interessanter gestalten.
Ändern Sie zunächst HelloWorld.java so, dass es wie folgt aussieht:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Hier verwendet HelloWorld
die LocalTime
-Klasse von Joda Time, um die aktuelle Uhrzeit abzurufen und auszudrucken.
Wenn Sie mvn compile
jetzt ausführen würden, um das Projekt zu erstellen, würde der Build fehlschlagen, da Sie Joda Time im Build nicht als Kompilierungsabhängigkeit deklariert haben. Sie können das beheben, indem Sie die folgenden Zeilen zu pom.xml hinzufügen (innerhalb des
-Elements):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Dieser XML-Block deklariert eine Liste von Abhängigkeiten für das Projekt. Insbesondere wird eine einzelne Abhängigkeit für die Joda Time-Bibliothek deklariert. Innerhalb des
-Elements werden die Abhängigkeitskoordinaten durch drei Unterelemente definiert:
– Die Gruppe oder Organisation, zu der die Abhängigkeit gehört.
– Die erforderliche Bibliothek.
– Die spezifische Version der Bibliothek, die erforderlich ist.
Standardmäßig gelten alle Abhängigkeiten als compile
. Das heißt, sie sollten zur Kompilierungszeit verfügbar sein (und wenn Sie eine WAR-Datei erstellen, auch im Ordner /WEB-INF/libs der WAR). Darüber hinaus können Sie ein
-Element angeben, um einen der folgenden Bereiche festzulegen:
provided
– Abhängigkeiten, die zum Kompilieren des Projektcodes erforderlich sind, aber zur Laufzeit von einem Container bereitgestellt werden, der den Code ausführt (z. B. die Java Servlet API).
test
– Abhängigkeiten, die zum Kompilieren und Ausführen von Tests verwendet werden, aber nicht zum Erstellen oder Ausführen des Laufzeitcodes des Projekts erforderlich sind.
Wenn Sie nun mvn compile
oder mvn package
ausführen, sollte Maven die Joda Time-Abhängigkeit vom Maven Central-Repository auflösen und der Build wird erfolgreich sein.
Fügen Sie zunächst JUnit als Abhängigkeit zu Ihrer pom.xml im Testumfang hinzu:
link:complete/pom.xml[role=include]
Erstellen Sie dann einen Testfall wie diesen:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven verwendet ein Plugin namens „surefire“, um Unit-Tests durchzuführen. Die Standardkonfiguration dieses Plugins kompiliert und führt alle Klassen in src/test/java
mit einem Namen aus, der mit *Test
übereinstimmt. Sie können die Tests wie folgt auf der Befehlszeile ausführen
MVN-Test
Oder verwenden Sie einfach den Schritt mvn install
, wie wir oben bereits gezeigt haben (es gibt eine Lebenszyklusdefinition, bei der „test“ als Phase in „install“ enthalten ist).
Hier ist die fertige pom.xml
Datei:
pom.xml
link:complete/pom.xml[role=include]
Notiz | Die fertige pom.xml- Datei verwendet das Maven Shade Plugin, um die JAR-Datei einfach ausführbar zu machen. Der Schwerpunkt dieses Leitfadens liegt auf den ersten Schritten mit Maven und nicht auf der Verwendung dieses speziellen Plugins. |
Glückwunsch! Sie haben eine einfache, aber effektive Maven-Projektdefinition zum Erstellen von Java-Projekten erstellt.
Die folgenden Leitfäden können ebenfalls hilfreich sein:
Erstellen von Java-Projekten mit Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc