Apache Maven und das (Cloud SDK-basierte) App Engine-Plug-in verwenden

Auf dieser Seite wird beschrieben, wie Sie ein App Engine-Projekt mit Apache Maven verwalten. Dies ist ein Tool zum Verwalten und Nachvollziehen von Softwareprojekten. Das Tool ist in der Lage, WAR-Dateien (Web Application Archive) zur Bereitstellung in App Engine zu erstellen. Google stellt ein Plug-in und Maven-Archetypen zur Verfügung. Diese werden von Maven ab Version 3.5 unterstützt.

Maven lädt die Java-Bibliotheken vom App Engine SDK herunter. Sie können mit Maven Ihre Anwendung lokal testen und für App Engine bereitstellen.

Hinweis

  1. Erstellen und richten Sie Ihr Projekt mit der Google Cloud Console ein:
    Zur App Engine
    1. Wählen Sie ein Cloud-Projekt aus oder erstellen Sie ein neues.
    2. Wenn Sie eine App Engine-Anwendung für Ihr Projekt erstellen müssen, wählen Sie an der entsprechenden Eingabeaufforderung eine Region aus, in der sich Ihre App Engine-Anwendung befinden soll.
  2. Laden Sie Java herunter und installieren und konfigurieren Sie es, sofern nicht bereits geschehen.
  3. Legen Sie die Java-Compiler-Flags in der Datei pom.xml Ihres Projekts fest, um den Bytecode von Java 8 anzugeben.
    Java 8
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  4. Maven 3.5 oder höher muss installiert sein. Mit diesem Befehl prüfen Sie, ob Maven 3.5 oder höher installiert ist:
     mvn -v
  5. Wenn Maven 3.5 oder höher nicht installiert ist:
    1. Gehen Sie zur Maven-Website und laden Sie Maven 3.5 oder höher herunter.
    2. Installieren Sie Maven 3.5 oder höher auf Ihrem lokalen Rechner.

      Hinweis: Linux-Nutzer müssen möglicherweise Maven herunterladen, statt apt-get install zum Installieren von Maven 3.5 oder höher zu verwenden.

  6. Sie müssen das Cloud SDK nicht installieren, da das Plug-in das SDK bei Bedarf automatisch installiert.

Maven-Plug-in für App Engine in ein vorhandenes Projekt aufnehmen (optional)

Damit Sie das Maven-Plug-in für Google App Engine in einem vorhandenen Maven-Projekt verwenden können, fügen Sie dies in den plugins-Abschnitt der Projektdatei pom.xml ein:

<plugin>
   <groupId>com.google.cloud.tools</groupId>
   <artifactId>appengine-maven-plugin</artifactId>
   <version>2.2.0</version>
</plugin>

App Engine-Archetyp auswählen

Mit Maven-Archetypen können Nutzer Maven-Projekte mit Vorlagen erstellen, die allgemeine Szenarien abdecken. App Engine verwendet dieses Maven-Feature, um einige nützliche App Engine-Archetypen auf Maven Central zur Verfügung zu stellen. Wählen Sie einen geeigneten App Engine-Archetypen für Ihre Anwendung aus:

Anwendungstyp Artefakt Beschreibung
App Engine-App appengine-skeleton-archetype Erstellt ein neues, leeres App Engine-Projekt mit den erforderlichen Dateien und Verzeichnissen, einsatzbereit für Ihre eigenen Klassen und Ressourcen.
App Engine-App appengine-standard-archetype Erzeugt eine einfache Java-Anwendung für die App Engine-Standardumgebung.
App Engine-App appengine-flexible-archetype Erzeugt eine einfache Java-Anwendung für die flexible App Engine-Umgebung.

Neues Projekt mit Maven erstellen

Bei der Projekterstellung werden Sie von Maven aufgefordert, groupId, artifactId, version und das package für das Projekt anzugeben.

Begriff Bedeutung
groupId Ein Namespace in Maven, um Ihre Artefakte zu erfassen. Wenn Nutzer Ihr Projekt in ihrem eigenen Maven-Projekt verwenden, dient er als Attribut der Abhängigkeit, die die Nutzer letztendlich angeben.
artifactId Der Name Ihres Projekts in Maven. Er wird auch von Nutzern Ihres Projekts angegeben, wenn ihre eigenen Maven-Projekte von Ihrem Projekt abhängig sind.
version Die ursprüngliche Maven-Version, mit der Ihr Projekt generiert werden soll. Es empfiehlt sich, version mit dem Suffix -SNAPSHOT zu versehen, da dies im Maven-Release-Plug-in Unterstützung für Versionen bietet, die sich in der Entwicklung befinden. Weitere Informationen finden Sie in der Maven-Anleitung zur Verwendung des Release-Plug-ins.
package Das während der Generierung erstellt Java-Paket.

Neue App Engine-Anwendung erstellen

Nachfolgend wird die Verwendung von appengine-skeleton-archetype zur Erstellung einer App Engine-Anwendung beschrieben.

So verwenden Sie App Engine Maven-Archetypen zum Erstellen einer App Engine-Anwendung:

  1. Wechseln Sie in das Verzeichnis, in dem Sie das Projekt erstellen möchten.

  2. Rufen Sie den folgenden Maven-Befehl auf:

    mvn archetype:generate -Dappengine-version=1.9.59 -Dapplication-id=[YOUR-PROJECT-ID] -Dfilter=com.google.appengine.archetypes:
    

    Stellen Sie -Dappengine-version auf die neueste Version des App Engine SDK für Java und application-id auf die ID Ihres Cloud-Projekts.

  3. Geben Sie zum Erstellen eines leeren Projekts, das die erforderliche Verzeichnisstruktur und die Dateien für Ihre eigenen Klassen enthält, die Nummer ein, die com.google.appengine.archetypes:appengine-skeleton-archetype entspricht.

  4. Wählen Sie die neueste Version aus der angezeigten Liste der verfügbaren Archetypversionen aus.

  5. Geben Sie bei der Aufforderung Define value for property 'groupId' den gewünschten Namespace für Ihre App an. Beispiel: com.mycompany.myapp.

  6. Geben Sie bei der Aufforderung Define value for property 'artifactId' den Projektnamen an. Beispiel: myapp.

  7. Übernehmen Sie den Standardwert (Define value for property 'version'), wenn Sie zur Bestätigung Ihrer Auswahl aufgefordert werden.

  8. Geben Sie bei der Aufforderung Define value for property 'package' Ihren bevorzugten Paketnamen an (oder übernehmen Sie den Standardwert). Die generierten Java-Dateien übernehmen den hier angegebenen Paketnamen.

  9. Übernehmen Sie bei der Aufforderungsbestätigung den Standardwert (Y).

  10. Warten Sie, bis das Projekt fertig generiert ist. Wechseln Sie dann in das neue Projektverzeichnis, beispielsweise myapp/.

  11. Erstellen Sie das Projekt mit diesem Befehl:

        mvn clean package
    
  12. Warten Sie, bis das Projekt erstellt ist. Wenn das Projekt erfolgreich erstellt wurde, sehen Sie eine Nachricht wie diese:

        [INFO] --------------------------------------------------
        [INFO] BUILD SUCCESS
        [INFO] --------------------------------------------------
        [INFO] Total time: 1:16.656s
        [INFO] Finished at: 2016-08-04T16:18:24-07:00
        [INFO] Final Memory: 16M/228M
        [INFO] --------------------------------------------------
    
  13. Wenn Sie eine neue, leere Anwendung mit dem Artefakt appengine-skeleton-archetype erstellt haben:

    1. Bevor Sie mit dem Codieren Ihrer eigenen Klassen für die Anwendung beginnen, sollten Sie sich mit dem grundlegenden Projektlayout und den erforderlichen Projektdateien vertraut machen. Im Verzeichnis, in dem Sie das Projekt erstellt haben, ist ein Unterverzeichnis namens myapp. Es umfasst die Datei pom.xml, das Unterverzeichnis src/main/java und das Unterverzeichnis src/main/webapp/WEB-INF:

      Maven-Projektlayout

      • Fügen Sie Ihre eigenen Java-Anwendungsklassen unter src/main/java/... hinzu.
      • Konfigurieren Sie die Anwendung mit der Datei src/main/webapp/WEB-INF/appengine-web.xml.
      • Konfigurieren Sie die Anwendungsbereitstellung mit der src/main/webapp/WEB-INF/web.xml-Datei.
    2. Erstellen Sie Ihre Java-Anwendungsklassen und fügen Sie sie unter src/main/java/... hinzu. Weitere Informationen finden Sie unter Einstieg.

    3. Fügen Sie die UI hinzu, die Sie Ihren Anwendungsnutzern zur Verfügung stellen möchten. Weitere Informationen finden Sie unter Erste Schritte: Formulardaten verarbeiten.

    4. Das Artefakt, mit dem Sie das Projekt erstellt haben, hat die grundlegende Konfiguration in src/main/webapp/WEB-INF/appengine-web.xml für Sie erledigt. Wenn Sie die Konfiguration jedoch erweitern möchten, müssen Sie diese Datei unter Umständen bearbeiten. Weitere Informationen finden Sie unter Mit appengine-web.xml konfigurieren.

    5. Bearbeiten Sie die src/main/webapp/WEB-INF/web.xml-Datei, um unter anderem URLs Ihren Anwendungs-Handlern zuzuordnen, die Authentifizierung und Filter anzugeben usw. Dies wird unter Der Deployment-Deskriptor detailliert beschrieben.

Maven-Projekt verwalten, testen und bereitstellen

Projekt kompilieren und erstellen

So erstellen Sie eine Anwendung, die mit App Engine-Maven-Archetypen generiert wurde:

  1. Wechseln Sie in das Hauptverzeichnis Ihres Projekts.

  2. Rufen Sie Maven auf:

    mvn clean package
    
  3. Warten Sie, bis das Projekt erstellt ist. Wenn das Projekt erfolgreich erstellt wurde, sehen Sie eine Nachricht wie diese:

    BUILD SUCCESS
     Total time: 10.724s
     Finished at: 2016-08-04T16:18:24-07:00
     Final Memory: 24M/213M
    
  4. Testen Sie die Anwendung wahlweise anhand des folgenden Verfahrens.

Anwendung mit dem Entwicklungsserver testen

Sie können Ihre Anwendung in der Entwicklungsphase jederzeit auf dem Entwicklungsserver ausführen und testen. Dazu rufen Sie das Maven-Plug-in für App Engine auf.

So testen Sie Ihre App Engine-Anwendung:

  1. Erstellen Sie Ihre Anwendung bei Bedarf:

    mvn clean package
    
  2. Wechseln Sie zum Verzeichnis der obersten Ebene Ihres Projekts, beispielsweise myapp, und rufen Sie Maven auf:

    mvn appengine:run
    

    Warten Sie, bis der Server gestartet wurde. Wenn er vollständig gestartet wurde und Ihre Anwendung ausgeführt wird, sehen Sie eine Nachricht ähnlich der folgenden:

    [INFO] GCLOUD: INFO: Module instance default is running at http://localhost:44180/
    [INFO] GCLOUD: Jul 29, 2016 9:23:55 PM com.google.appengine.tools.development.AbstractModule startup
    [INFO] GCLOUD: INFO: The admin console is running at http://localhost:44180/_ah/admin
    [INFO] GCLOUD: Jul 29, 2016 9:23:55 PM com.google.appengine.tools.development.devappserver2.DevAppServer2Impl doStart
    [INFO] GCLOUD: INFO: Dev App Server is now running
    
  3. Rufen Sie mit Ihrem Browser http://localhost:8080/ auf, um auf Ihre Anwendung zuzugreifen.

  4. Beenden Sie die Anwendung und den Entwicklungsserver mit Strg + C.

Port für lokale Tests angeben

Wenn Sie Ihre Anwendung auf dem lokalen Entwicklungsserver ausführen, ist der Standardport 8080. Sie können diese Standardeinstellung ändern, wenn Sie den Plug-in-Eintrag für appengine-maven-plugin anpassen. Sie können beispielsweise den Port und die Adresse in der Datei pom.xml festlegen, die sich in Ihrem Anwendungsverzeichnis befindet:

<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.2.0</version>
     <configuration>
       <devserver.host>0.0.0.0</devserver.host>
       <devserver.port>8181</devserver.port>
     </configuration>
  </plugin>
</plugins>

In diesem Beispiel wird der Port mit <devserver.port> auf 8181 anstatt auf den Standardport festgelegt und als Adresse 0.0.0.0 angegeben. Das bedeutet, dass der Entwicklungsserver Anfragen vom lokalen Netzwerk entgegennimmt.

Das Präfix devserver ist optional. Sie können stattdessen <port>8181</port> verwenden.

Debugging auf dem Entwicklungsserver

Wenn Sie Fehler in einer lokal ausgeführten Anwendung debuggen möchten, legen Sie das Attribut jvmFlags in der Plug-in-Konfiguration so fest, dass das Debugging in der zugrunde liegenden JVM aktiviert wird. Beispiel:

<configuration>
  <jvmFlags>
    <jvmFlag>-Xdebug</jvmFlag>
    <jvmFlag>-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</jvmFlag>
  </jvmFlags>
</configuration>

Anwendung bereitstellen

So stellen Sie Ihre Anwendung bereit:

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

Ersetzen Sie PROJECT_ID durch die ID Ihres Cloud-Projekts. Wenn in der pom.xml-Datei bereits Ihre Projekt-ID angegeben ist, müssen Sie das -Dapp.deploy.projectId-Attribut nicht in dem von Ihnen ausgeführten Befehl einfügen.

Das appengine:deploy-Ziel und alle anderen Ziele im Maven-Plug-in für App Engine haben zugehörige Parameter, die Sie verwenden können. Eine vollständige Liste der Ziele und Parameter finden Sie unter Ziele und Parameter des Maven-Plug-ins für App Engine.

Weitere Informationen