Utiliser Apache Maven et le plug-in App Engine (basé sur la CLI gcloud)

Cette page explique comment gérer un projet App Engine à l'aide d'Apache Maven, un outil de gestion et de compréhension des projets logiciels capable de créer des fichiers WAR (Web Application Archive) à déployer dans App Engine. Google fournit un plug-in et des archétypes Maven compatibles avec Maven version 3.5 ou ultérieure.

Vous pouvez utiliser Maven pour tester votre application localement et la déployer sur App Engine.

Avant de commencer

  1. Utilisez Google Cloud Console pour créer et configurer votre projet Cloud :
    Accéder à App Engine
    1. Sélectionnez ou créez un projet Cloud.
    2. Si vous devez créer une application App Engine pour votre projet, suivez les instructions qui s'affichent pour sélectionner la région dans laquelle vous souhaitez placer cette dernière.
  2. Si vous n'avez pas encore Java, téléchargez, installez et configurez Java.
  3. Définissez les options de compilation Java du fichier pom.xml de votre projet de manière à spécifier l'utilisation du bytecode Java 8 :
    Java 8
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  4. Vous devez avoir installé Maven 3.5 ou une version ultérieure. Pour vérifier si Maven 3.5 ou une version ultérieure est installé, exécutez la commande suivante :
     mvn -v
  5. Si vous n'avez pas encore installé Maven 3.5 ou une version ultérieure, procédez comme suit :
    1. Téléchargez Maven 3.5 ou une version ultérieure depuis le site Web Maven.
    2. Installez Maven 3.5 ou une version ultérieure sur votre ordinateur local.

      Remarque : Les utilisateurs de Linux devront peut-être télécharger Maven au lieu d'utiliser la commande apt-get install pour installer Maven 3.5 ou une version plus récente.

  6. Définissez le projet par défaut pour les commandes "gcloud" dans la configuration actuelle en exécutant la commande suivante :
    gcloud config set project PROJECT
    

    PROJECT est l'ID du projet.

Ajouter le plug-in App Engine Maven à un projet existant (facultatif)

Pour utiliser le plug-in Google App Engine Maven dans un projet Maven existant, ajoutez les éléments suivants dans la section plugins du fichier pom.xml du projet :

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

Choisir un archétype App Engine

Les archétypes Maven permettent aux utilisateurs de créer des projets Maven à l'aide de modèles couvrant des scénarios courants. App Engine exploite cette fonctionnalité Maven pour fournir des archétypes App Engine utiles dans le dépôt central de Maven. Sélectionnez un archétype App Engine adapté à votre application :

Type d'application Artefact Description
Application App Engine appengine-skeleton-archetype Génère un nouveau projet App Engine vide et prêt pour accueillir vos propres classes et ressources, mais avec l'ensemble des fichiers et répertoires requis.
Application App Engine appengine-standard-archetype Génère une application Java de base pour l'environnement standard App Engine.
Application App Engine appengine-flexible-archetype Génère une application Java de base pour l'environnement flexible App Engine.

Créer un projet avec Maven

Lors de la création d'un projet, Maven vous invite à fournir les éléments suivants : groupId, artifactId, version et package.

Terme Signification
groupId Espace de noms au sein de Maven permettant le suivi vos artefacts. Lorsque des personnes utilisent votre projet dans leur propre projet Maven, cet espace de noms servira d'attribut de la dépendance qu'elles devront spécifier.
artifactId Nom de votre projet au sein de Maven. Celui-ci est également spécifié par les utilisateurs de votre projet lorsque leurs propres projets Maven en dépendent.
version Version initiale de Maven à partir de laquelle vous souhaitez générer votre projet. Il est recommandé de choisir un élément version dont le suffixe est -SNAPSHOT, car cela garantit la compatibilité de votre plug-in Maven avec les versions en cours de développement. Pour plus d'informations, consultez le guide Maven sur l'utilisation de la dernière version du plug-in.
package Package Java créé lors de la génération du projet.

Créer une application App Engine

La procédure suivante explique comment utiliser appengine-skeleton-archetype pour créer une application App Engine.

Pour utiliser les archétypes App Engine Maven pour créer une application App Engine :

  1. Remplacez le répertoire actuel par celui dans lequel vous voulez créer le projet.

  2. Appelez la commande Maven suivante :

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

    Définissez l'option -Dappengine-version sur la version la plus récente du SDK App Engine pour Java, et l'option application-id sur l'ID de votre projet Cloud.

  3. Pour créer un projet vide contenant une structure de répertoires et de fichiers prêts pour vos propres classes, indiquez le numéro correspondant à com.google.appengine.archetypes:appengine-skeleton-archetype.

  4. Sélectionnez la version la plus récente dans la liste des versions d'archétypes disponibles qui s'affiche.

  5. Lorsque l'invite Define value for property 'groupId' s'affiche, indiquez l'espace de noms souhaité pour l'application. Par exemple : com.mycompany.myapp.

  6. Lorsque l'invite Define value for property 'artifactId' s'affiche, indiquez le nom du projet. Par exemple : myapp.

  7. Lorsque l'invite Define value for property 'version' s'affiche, acceptez la valeur par défaut.

  8. Lorsque l'invite Define value for property 'package' s'affiche, indiquez le nom du package souhaité (ou acceptez le nom par défaut). Les fichiers Java générés portent le nom du package que vous spécifiez ici.

  9. Lorsque vous êtes invité à confirmer vos choix, acceptez la valeur par défaut (Y).

  10. Attendez la fin de la génération du projet, puis remplacez les répertoires par le nouveau répertoire du projet, par exemple myapp/.

  11. Créez le projet en appelant :

        mvn clean package
    
  12. Attendez que le projet se crée. Un message semblable à celui-ci s'affiche alors :

        [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. Si vous avez créé une nouvelle application vide avec l'artefact appengine-skeleton-archetype :

    1. Avant de commencer à coder vos propres classes pour l’application, familiarisez-vous avec la structure de base du projet et les fichiers de projet requis : dans le répertoire où vous avez créé le projet se trouvent un sous-répertoire nommé myapp contenant un fichier pom.xml, le sous-répertoire src/main/java et le sous-répertoire src/main/webapp/WEB-INF :

      Arborescence projet de Maven

      • Ajoutez vos propres classes Java dans src/main/java/...
      • Configurez votre application avec le fichier src/main/webapp/WEB-INF/appengine-web.xml
      • Configurez le déploiement de votre application avec le fichier src/main/webapp/WEB-INF/web.xml
    2. Créez les classes Java pour votre application et ajoutez-les à src/main/java/.... Pour plus d'informations, consultez le Guide de démarrage.

    3. Ajoutez l'UI que vous souhaitez fournir aux utilisateurs de l'application. Pour en savoir plus, consultez Ajouter un code et une UI à une application.

    4. L'artefact que vous avez utilisé pour créer le projet a effectué la configuration src/main/webapp/WEB-INF/appengine-web.xml de base. Toutefois, pour une configuration plus avancée, vous devrez peut-être modifier ce fichier. Pour en savoir plus, consultez la page Configurer avec appengine-web.xml.

    5. Modifiez le fichier src/main/webapp/WEB-INF/web.xml pour mapper les URL aux gestionnaires d'applications, spécifier l'authentification, les filtres, etc. Ce processus est décrit en détail dans Descripteur de déploiement.

Gérer, tester et déployer un projet Maven

Compiler et créer un projet

Pour créer une application basée sur les archétypes App Engine Maven, procédez comme suit :

  1. Accédez au répertoire principal de votre projet.

  2. Appelez Maven :

    mvn clean package
    
  3. Attendez que le projet se crée. Un message semblable à celui-ci s'affiche alors :

    BUILD SUCCESS
     Total time: 10.724s
     Finished at: 2016-08-04T16:18:24-07:00
     Final Memory: 24M/213M
    
  4. Vous pouvez également tester l'application créée en suivant la procédure décrite ci-dessous.

Tester votre application avec un serveur de développement

À tout moment pendant la phase de développement, vous pouvez exécuter et tester votre application sur le serveur de développement en appelant le plug-in App Engine Maven.

Pour tester votre application App Engine :

  1. Si ce n'est pas déjà fait, créez votre application à l'aide de la commande suivante :

    mvn clean package
    
  2. Déplacez le répertoire au niveau supérieur de votre projet (par exemple, myapp) et appelez Maven :

    mvn appengine:run
    

    Attendez que le serveur démarre. Une fois le serveur complètement démarré et votre application en cours d'exécution, un message semblable à celui-ci s'affiche :

    [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. Ouvrez http://localhost:8080/ dans votre navigateur pour accéder à votre application.

  4. Fermez l'application et le serveur de développement en appuyant sur Ctrl+C.

Spécifier un port pour les tests locaux

Lorsque vous exécutez votre application sur un serveur de développement local, le port par défaut est 8080. Vous pouvez changer cette valeur par défaut en modifiant l'entrée du plug-in pour appengine-maven-plugin. Par exemple, vous pouvez spécifier le port et l'adresse comme suit dans le fichier pom.xml du répertoire de votre application :

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

Dans cet exemple, <devserver.port> définit le port sur 8181 au lieu du port par défaut, et l'adresse 0.0.0.0 est spécifiée, ce qui signifie que le serveur de développement écoute les requêtes issues du réseau local.

Le préfixe devserver est facultatif. Vous pouvez utiliser <port>8181</port> à la place.

Déboguer votre application sur un serveur de développement

Pour déboguer une application en cours d'exécution localement, définissez jvmFlags dans la configuration du plug-in de manière à activer le débogage sur la JVM sous-jacente, par exemple :

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

Déployer l'application

Pour déployer votre application, procédez comme suit :

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

Remplacez PROJECT_ID par l'ID de votre projet Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId dans la commande que vous exécutez.

L'objectif appengine:deploy et tous les autres objectifs du plug-in App Engine Maven sont associés à des paramètres que vous pouvez utiliser. Pour obtenir la liste complète des objectifs et des paramètres, consultez la page Objectifs et paramètres du plug-in App Engine Maven.

Étapes suivantes