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

Auf dieser Seite wird erläutert, wie Sie ein App Engine-Projekt für Ihre Cloud Endpoints Frameworks API mithilfe von Apache Maven verwalten. Apache Maven ist ein Tool zum Verwalten und Nachvollziehen von Softwareprojekten, mit dem WAR-Dateien (Web Application Archive) für die Bereitstellung in App Engine erstellt werden können. Google stellt ein Plug-in und Maven-Archetypen zur Verfügung, die von Maven 3.3.9 oder höher unterstützt werden.

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. Verwenden Sie die Google Cloud Console, um Ihr Cloud-Projekt zu erstellen und einzurichten:

    Zu 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 das Cloud SDK herunter und installieren Sie es. Initialisieren Sie dann das gcloud-Befehlszeilentool.

    Wenn das gcloud-Befehlszeilentool bereits installiert ist und für eine andere Cloud-Projekt-ID konfiguriert werden soll, als ursprünglich bei der Initialisierung des Tools angegeben wurde, finden Sie entsprechende Informationen unter Cloud SDK-Konfigurationen verwalten.

  3. Installieren Sie die Cloud SDK-Komponente app-engine-java:
    gcloud components install app-engine-java

    Hinweis: Führen Sie gcloud components update aus, um sicherzustellen, dass Sie die neueste Version von Cloud SDK für Java verwenden.

  4. Laden Sie Java herunter und installieren und konfigurieren Sie es, sofern nicht bereits geschehen.
  5. Legen Sie die Java-Compiler-Flags in der Datei pom.xml Ihres Projekts fest, um den Bytecode von Java 8 anzugeben.
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  6. Es muss Apache Maven 3.3.9 oder höher installiert sein. Führen Sie den folgenden Befehl aus, um Ihre Maven-Version zu ermitteln:
     mvn -v
  7. Falls nicht die richtige Version von Maven installiert ist, gehen Sie so vor:
    1. Laden Sie Maven 3.3.9 oder höher von der Maven-Website herunter.
    2. Installieren Sie Maven auf Ihrem lokalen Rechner.

      Hinweis: Linux-Nutzer müssen möglicherweise Maven herunterladen, anstatt apt-get install zu verwenden.

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

Damit Sie das Maven-Plug-in für App Engine in einem vorhandenen Maven-Projekt verwenden können, fügen Sie Folgendes in den Abschnitt plugins 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
Endpoints Frameworks für App Engine endpoints-skeleton-archetype Generiert ein neues, leeres Back-End-API-Projekt für Endpoints Frameworks für App Engine, das die erforderlichen Dateien und Verzeichnisse bereits enthält und für Ihre eigenen Klassen und Ressourcen einsatzbereit ist.
Endpoints Frameworks für App Engine hello-endpoints-archetype Generiert ein Back-End-API-Startprojekt für Endpoints Frameworks für App Engine, das sofort erstellt und ausgeführt werden kann.

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 dies als Attribut für das abhängige Objekt, das der Nutzer letztendlich angibt.
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 Endpoints Frameworks-Anwendung erstellen

In diesem Abschnitt wird beschrieben, wie Sie ein neues Projekt für Endpoints Frameworks Version 2.0 erstellen.

Das Beispiel hello-endpoints-archetype zeigt die Verwendung von Plug-ins, darunter das Maven-Plug-in für App Engine und das Maven-Plug-in für Endpoints Frameworks.

hello-endpoints-archetype generiert mithilfe von Endpoints Frameworks Version 2.0 die Beispiel-API "Greetings". Es dient auch als Beispiel für die Migration Ihrer mit Endpoints Frameworks Version 1.0 erstellten Anwendungen zu Endpoints Frameworks Version 2.0.

Die mit dem Archetyp generierte README.md gibt darüber Auskunft, wo die Migration stattgefunden hat.

So erstellen Sie ein Back-End API-Archetypprojekt für Endpoints Frameworks für App Engine:

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

  2. Führen Sie den folgenden Maven-Befehl aus:

    mvn archetype:generate -Dgoogle-cloud-project=[YOUR-PROJECT-ID] -Dappengine-plugin=2.2.0 -Dendpoints-frameworks=2.0.7 -Dendpoints-plugin=1.0.0 -Dappengine-sdk=1.9.82 -Dfilter=com.google.appengine.archetypes:
    

    Wobei:

    • -Dgoogle-cloud-project ist Ihre Projekt-ID.
    • -Dappengine-plugin ist die neueste Version des Maven-Plug-ins für App Engine.
    • -Dendpoints-frameworks ist die neueste Version von Endpoints Frameworks für App Engine für Maven-Abhängigkeiten.
    • -Dendpoints-plugin ist die neueste Version des Maven-Plug-ins für Endpoints Frameworks für App Engine.
  3. Geben Sie die Nummer an, die hello-endpoints-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 Namespace für Ihre Anwendung an, beispielsweise den Wert com.example.helloendpoints.

  6. Geben Sie bei der Aufforderung Define value for property 'artifactId' den Namespace für Ihre Anwendung an, beispielsweise den Wert helloendpoints.

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

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

  9. Wenn Sie zur Bestätigung Ihrer Auswahl aufgefordert werden, akzeptieren Sie den Standardwert durch Eingabe von Y.

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

  11. Erstellen Sie das Projekt:

    mvn clean package
    
  12. Warten Sie, bis das Projekt erstellt ist. Wenn das Projekt erfolgreich abgeschlossen wurde, wird eine Meldung wie diese angezeigt:

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 4.062 s
    [INFO] Finished at: 2017-02-28T00:28:03-08:00
    [INFO] Final Memory: 27M/485M
    [INFO] ------------------------------------------------------------------------
    
  13. Um das Projekt lokal zu testen und in der App Engine-Standardumgebung bereitzustellen, lesen Sie die Informationen unter Maven-Projekt verwalten, testen und bereitstellen.

  14. Außerdem können Sie mithilfe des Maven-Plug-ins für Endpoints Frameworks Java-Clientbibliotheken für die Greetings API generieren:

    mvn endpoints-framework:clientLibs
    

Das folgende Diagramm zeigt das grundlegende Projektlayout der Greetings API:

Maven-Projektlayout

  • README.md enthält Informationen zum generierten Beispiel.
  • Greetings.java enthält eine API-Definition für die Beispiel-API "Greetings".
  • Constants.java enthält Konstanten, die in der Beispiel-API "Greetings" verwendet werden.
  • HelloGreeting.java enthält einen Container für Nachrichten, die von der Beispiel-API "Greetings" empfangen und gesendet wurden.
  • index.html enthält eine einfache Benutzeroberfläche zum Aufrufen der Back-End API "Greetings".
  • base.js enthält das erforderliche JavaScript für die Benutzeroberfläche zum Senden von Back-End-Anfragen.
  • Wenn build.gradle einmal generiert wurde, unterstützt das Beispiel auch Gradle und liefert weitere Informationen zu dieser Funktion in der Datei README.md.

Anwendung kompilieren und erstellen

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

  1. Wechseln Sie zum Hauptverzeichnis des Projekts, beispielsweise guestbook/.

  2. Führen Sie Maven aus:

    mvn clean package
    
  3. Warten Sie, bis das Projekt erstellt ist. Wenn das Projekt erfolgreich abgeschlossen wurde, wird eine Meldung wie diese angezeigt:

    BUILD SUCCESS
     Total time: 10.724s
     Finished at: 2016-08-04T16:18:24-07:00
     Final Memory: 24M/213M
    

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 Endpoints Frameworks für App Engine-Anwendung:

  1. Erstellen Sie Ihre Anwendung, wenn nicht bereits geschehen:

    mvn clean package
    
  2. Führen Sie das Beispiel lokal aus:

    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 wie diese:

    [INFO] GCLOUD: INFO ### devappserver2.py:764] Skipping SDK update check.
    [INFO] GCLOUD: INFO ### api_server.py:268] Starting API server at: http://localhost:34199
    [INFO] GCLOUD: INFO ### dispatcher.py:199] Starting module "default" running at: http://localhost:8080
    [INFO] GCLOUD: INFO ### admin_server.py:116] Starting admin server at: http://localhost:8000
    [INFO] GCLOUD: ### com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
    
  3. Rufen Sie mit Ihrem Browser http://localhost:8080/ auf, um auf Ihre Anwendung zuzugreifen.

  4. Beenden Sie die Anwendung und den Entwicklungsserver mit Control+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 entgegennimmt, die vom lokalen Netzwerk kommen.

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 appengine:deploy

Das Ziel appengine:deploy 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