Erstellen einer Java-Web-App
Ihr Unternehmen betreibt derzeit mehrere Java-Web-Apps auf internen Servern. Ihr Unternehmen möchte die Web-Apps zu Azure App Service migrieren, um die hohen Kosten zu reduzieren, die durch die Verwaltung dieser Server entstehen.
Ihr Entwicklungsteam hat Erfahrung mit dem Erstellen von Desktop-Apps mit Maven, und Sie verwenden Maven bereits, um den Buildprozess für Ihre Java-Projekte zu automatisieren. Sie wissen, dass Maven Plug-Ins für Projekte verwendet, um zusätzliche Funktionen hinzuzufügen, und Sie möchten einen Archetyp verwenden, um eine Web-App zu erstellen, die Sie in Azure App Service bereitstellen können.
In dieser Lerneinheit sehen Sie sich noch einmal an, wie Maven und Archetypen Sie beim Erstellen von Java-Web-Apps unterstützen. Sie lernen, wie Sie eine kleine Java-Web-App erstellen und lokal ausführen. Anschließend erfahren Sie, was Sie der POM-Datei (Project Object Model) hinzufügen können, um lokale Tests für Ihre neue App zu ermöglichen.
Verwenden von Maven zum Automatisieren der Erstellung von Java-Web-Apps
Maven ist das am häufigsten verwendete Java-Buildtool, und Sie können es zum Erstellen und Verwalten von Java-basierten Projekten verwenden. Es hilft bei der Optimierung der Prozesse, mit denen Entwickler Java-Projekte erstellen, und zwar mit einer Standardmethode zum Erstellen der Projekte, einer klaren Definition des Projekts, einer einfachen Möglichkeit zum Veröffentlichen von Projektinformationen und einer Methode, um JAR-Dateien für mehrere Projekte freizugeben. Maven hat folgende Ziele:
- Vereinfachen Sie den Buildprozess.
- Migrieren Sie transparent zu neuen Features.
- Bereitstellen eines einheitlichen Buildsystems.
- Implementieren von Richtlinien für bewährte Entwicklungsmethoden.
Was sind Archetypen?
Die Erfinder von Maven benötigten eine Methode, um eine konsistente bewährte Methode bereitzustellen, wenn Entwickler neue Projekte strukturieren. Dabei erkannten sie Ähnlichkeiten zwischen verschiedenen Projektarten. Die Erfinder nutzten diese Informationen, um die Projekttypen als Vorlagen namens Archetypen zu definieren. Diese werden von Maven zum schnellen Erstellen eines Gerüsts für neue Projekte verwendet. Im Folgenden werden einige Beispiele für gängige Archetypen aufgeführt:
Archetyp | Beschreibung |
---|---|
maven-archetype-archetype |
Generiert ein Archetyp-Projekt |
maven-archetype-mojo |
Generiert ein Maven-Beispiel-Plug-In |
maven-archetype-plugin |
Generiert ein Maven-Plug-In |
maven-archetype-plugin-site |
Generiert eine Maven-Plug-In-Website |
maven-archetype-quickstart |
Generiert ein Maven-Projekt |
maven-archetype-simple |
Generiert ein einfaches Maven-Projekt |
maven-archetype-site |
Generiert eine Maven-Website, die einige der unterstützten Dokumenttypen wie APT, XDoc und FML veranschaulicht |
maven-archetype-site-simple |
Generiert eine einfache Maven-Website |
maven-archetype-webapp |
Generiert ein Maven-Web-App-Projekt |
In der nächsten Übung erstellen Sie eine Web-App, die Sie in Azure bereitstellen können. Zum Erstellen einer neuen Java-Web-App mit Maven würden Sie beispielsweise die folgende Syntax verwenden:
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
Wenn Sie den voranstehenden Befehl ausführen, wird eine Projektverzeichnisstruktur mit den folgenden Inhalten erstellt:
Was sind POM-Dateien?
Eine der wichtigeren Komponenten eines Maven-Projekts ist eine POM-Datei (Project Object Model). Dabei handelt es sich um ein XML-Dokument namens pom.xml
, das sich in der Verzeichnisstruktur eines Projekts befindet. Die POM-Datei enthält die Eigenschaften, Abhängigkeiten, Buildphasen, Plug-Ins und Ziele für ein Projekt. Wenn Sie Ihre Anwendung erstellen, verwaltet Maven die Abhängigkeiten für Sie.
Maven basiert auf einem Plug-In-Framework, und das Hinzufügen von Plug-Ins zu einer POM-Datei stellt dar, wie Entwickler Ziele für ihre Projekte definieren. Wenn Sie Maven ausführen, können Sie ein spezifisches Ziel ausführen, indem Sie die Syntax mvn [plugin-name]:[goal-name]
verwenden. Dann führt Maven alle Ziele bis [goal-name]
durch, die Sie festlegen.
Im folgenden Beispiel werden die Inhalte der pom.xml-Datei veranschaulicht, die im vorherigen Abschnitt dieser Lerneinheit mit dem mvn archetype:generate
-Befehl und dem maven-archetype-webapp
-Archetyp generiert wurden.
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft.example</groupId>
<artifactId>MyWebApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>MyWebApp Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
...
</pluginManagement>
</build>
</project>
Hinzufügen von Plug-Ins zu einem Maven-Projekt
Sie müssen den spezifischen XML-Code für das Plug-In zur pom.xml Datei hinzufügen, um ein Plug-In zu Ihrem Maven-Projekt hinzuzufügen. Es gibt zwei nützliche Plug-Ins, mit denen Entwickler Web-Apps auf ihren lokalen Computern ausführen können: Eclipse Jetty und Apache Tomcat. Das Azure App Service-Plug-In unterstützt beide Webserver. Zum Hinzufügen eines dieser Server zu Ihrem Projekt würden Sie den erforderlichen XML-Code für das Plug-In zum <plugins>
-Tag hinzufügen.
Sie würden also XML-Code wie im folgenden Beispiel hinzufügen, um das Tomcat 11-Plug-In hinzuzufügen:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
Hinweis
Sie können im zentralen Repository unter https://search.maven.org/ nach einem Plug-In und zugehörigen Informationen suchen.
Wenn Sie das XML-Tag für das Tomcat-Plug-In hinzufügen, sollte das <build>
Element dem folgenden Beispiel ähneln:
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Nachdem Sie das Tomcat-Plug-In zu Ihrem Projekt hinzugefügt haben, können Sie den folgenden Maven-Befehl zum Erstellen des Projekts, zum Starten des Tomcat-Servers und zum Testen Ihrer Web-App verwenden:
mvn package cargo:run
Durch diesen Befehl wird Ihre App erstellt, ein Tomcat-Server auf dem Standardport 8080 gestartet, und der Tomcat Server wird geladen. Um Ihre Web-App zu laden, navigieren Sie zu http://localhost:8080/MyWebApp
(MyWebApp wird im <finalName>
Element in pom.xml angegeben).
Wenn Sie die Web-App laden, wird die Standardseite index.jsp aus dem Ordner src\webapp Ihres Projekts angezeigt.
In der nächsten Übung erstellen Sie eine Java-Web-App mithilfe von Maven.