Usa Apache Maven y el complemento de App Engine (basado en el SDK de Cloud)

Esta página explica cómo administrar un proyecto de App Engine con Apache Maven, una herramienta de administración y comprensión de proyectos de software. Esta herramienta puede compilar archivos de app web (WAR) para la implementación en App Engine. Google proporciona un complemento y arquetipos de Maven que son compatibles con Maven 3.5 y versiones superiores.

Maven descarga las bibliotecas Java del SDK de App Engine. Puedes usar Maven para probar tu aplicación de manera local y, también, implementarla en App Engine.

Antes de comenzar

  1. Usa Google Cloud Platform Console para crear y configurar tu proyecto de GCP:
    Ir a App Engine
    1. Selecciona o crea un proyecto nuevo de GCP.
    2. Si necesitas crear una aplicación de App Engine para tu proyecto, sigue las indicaciones y selecciona la región donde quieres ubicar tu aplicación de App Engine.
  2. Si no tienes Java, debes descargarlo, instalarlo y configurarlo.
  3. Configura los marcadores de compilador de Java en el pom.xml de tu proyecto para especificar el código de bytes de Java 8.
    Java 8
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  4. Debes tener instalado Maven 3.5. Para comprobar si Maven 3.5 está instalado, ejecuta el siguiente comando:
     mvn -v
  5. Si no tienes instalada la versión correcta de Maven, sigue estos pasos:
    1. Descarga Maven 3.5 del sitio web de Maven.
    2. Instala Maven 3.5 en tu equipo local.

      Nota: Es posible que los usuarios de Linux deban descargar Maven en lugar de usar apt-get install para instalar Maven 3.5.

  6. No es necesario que instales el SDK de Cloud porque el complemento lo instala de manera automática cuando es necesario.

Agrega el complemento App Engine Maven a un proyecto existente (opcional)

Para usar el complemento Google App Engine Maven en un proyecto existente de Maven, agrega lo siguiente en la sección de plugins del archivo pom.xml del proyecto:

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

Elige un arquetipo de App Engine

Los arquetipos de Maven permiten a los usuarios crear proyectos de Maven con plantillas que abarcan situaciones comunes. App Engine aprovecha esta función de Maven para proporcionar algunos arquetipos de App Engine útiles en Maven Central. Selecciona un arquetipo de App Engine adecuado para tu aplicación:

Tipo de aplicación Artefacto Descripción
App de App Engine appengine-skeleton-archetype Genera un proyecto de App Engine nuevo, vacío y listo para tus propias clases y recursos, pero con archivos y directorios obligatorios.
App de App Engine appengine-standard-archetype Genera una aplicación de Java básica para el entorno estándar de App Engine.
App de App Engine appengine-flexible-archetype Genera una aplicación de Java básica para el entorno flexible de App Engine.

Crea un proyecto nuevo con Maven

Durante la creación del proyecto, Maven solicita que suministres groupId, artifactId, version y el package para el proyecto.

Término Significado
groupId Un espacio de nombres en Maven para hacer un seguimiento de tus artefactos. Cuando las personas consumen tu proyecto en su propio proyecto de Maven, tu proyecto servirá como atributo de la dependencia que especificarán.
artifactId El nombre de tu proyecto en Maven. Los consumidores de tu proyecto también lo especifican cuando dependen de ti en sus propios proyectos de Maven.
version La versión inicial de Maven con la que deseas generar tu proyecto. Te recomendamos usar version con el sufijo -SNAPSHOT porque esto proporcionará compatibilidad en el complemento de actualización de Maven para las versiones que estén en desarrollo. Para obtener más información, consulta la guía de Maven que explica cómo usar el complemento de actualización.
package El paquete de Java creado durante la generación.

Crea una nueva aplicación de App Engine

El siguiente procedimiento describe cómo utilizar el appengine-skeleton-archetype para crear una aplicación de App Engine.

Para usar los arquetipos de Maven de App Engine con el propósito de crear una aplicación de App Engine, sigue estos pasos:

  1. Cambia al directorio donde deseas compilar el proyecto.

  2. Invoca el siguiente comando de Maven:

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

    Configura -Dappengine-version como la versión más reciente del SDK de App Engine para Java y application-id como el ID de tu proyecto de GCP.

  3. Si deseas crear un proyecto vacío que contenga la estructura de directorio y los archivos necesarios, listos para tus propias clases, proporciona el número correspondiente a com.google.appengine.archetypes:appengine-skeleton-archetype.

  4. Selecciona la versión más reciente de la lista que se muestra de las versiones de arquetipo disponibles aceptando el valor predeterminado.

  5. Cuando se solicite Define value for property 'groupId', proporciona el espacio de nombre deseado para tu aplicación, por ejemplo, com.mycompany.myapp.

  6. Cuando se solicite Define value for property 'artifactId', proporciona el nombre del proyecto; por ejemplo, myapp.

  7. Cuando se solicite Define value for property 'version', acepta el valor predeterminado.

  8. Cuando se solicite Define value for property 'package', proporciona tu nombre de paquete preferido (o acepta el valor predeterminado). Los archivos de Java generados tendrán el nombre de paquete que especifiques aquí.

  9. Cuando se te solicite confirmar tus elecciones, acepta el valor predeterminado (Y).

  10. Espera a que el proyecto termine de generarse. Luego cambia de directorio al directorio del proyecto nuevo, por ejemplo, myapp/.

  11. Compila el proyecto invocando

        mvn clean package
    
  12. Espera a que se compile el proyecto. Cuando el proyecto se complete con éxito, verás un mensaje similar a este:

        [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 creaste una aplicación nueva y vacía con el artefacto de appengine-skeleton-archetype:

    1. Antes de comenzar a codificar tus propias clases para la aplicación, debes familiarizarte con el diseño básico del proyecto y los archivos de proyecto requeridos: dentro del directorio donde creaste el proyecto, tendrás un subdirectorio llamado myapp, que contiene un archivo pom.xml, el subdirectorio src/main/java y el subdirectorio src/main/webapp/WEB-INF:

      Diseño de proyecto de Maven

      • Agrega las clases Java de tu propia aplicación a src/main/java/...
      • Configura tu aplicación con el archivo src/main/webapp/WEB-INF/appengine-web.xml
      • Configura tu implementación de la aplicación con el archivo src/main/webapp/WEB-INF/web.xml
    2. Crea las clases Java de tu aplicación y agrégalas a src/main/java/.... Para obtener más información, consulta Cómo comenzar.

    3. Agrega la IU que deseas proporcionar a los usuarios de tu aplicación. Para obtener más información, consulta cómo agregar el código de aplicación y la IU.

    4. El artefacto que usaste para crear el proyecto ya realizó la configuración básica src/main/webapp/WEB-INF/appengine-web.xml. Sin embargo, para una configuración más avanzada, es posible que debas editar este archivo. Para obtener más información, consulta Configura con appengine-web.xml.

    5. Edita el archivo src/main/webapp/WEB-INF/web.xml para asignar las URL a tus controladores de aplicación y especificar la autenticación, los filtros, etc. Esto se describe de forma detallada en El descriptor de implementación.

Administra, prueba e implementa un proyecto de Maven

Crea y compila tu proyecto

Para compilar una aplicación creada con los arquetipos de App Engine Maven:

  1. Cambia al directorio principal de tu proyecto.

  2. Invoca Maven:

    mvn clean package
    
  3. Espera a que se compile el proyecto. Cuando el proyecto se complete con éxito, verás un mensaje similar a este:

    BUILD SUCCESS
     Total time: 10.724s
     Finished at: 2016-08-04T16:18:24-07:00
     Final Memory: 24M/213M
    
  4. O bien, prueba la aplicación con el siguiente procedimiento.

Prueba tu aplicación con el servidor de desarrollo

Durante la fase de desarrollo, puedes ejecutar y probar tu aplicación en cualquier momento en el servidor de desarrollo invocando el complemento App Engine Maven.

Para probar tu aplicación de App Engine:

  1. Si aún no lo hiciste, sigue estos pasos:

    mvn clean package
    
  2. Cambia el directorio al nivel superior de tu proyecto (por ejemplo, a myapp) y luego invoca Maven:

    mvn appengine:run
    

    Espera a que el servidor se inicie. Cuando el servidor se inicie completamente con tu aplicación en ejecución, verás un mensaje similar a este:

    [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. Usa tu navegador para visitar http://localhost:8080/ y acceder a tu aplicación.

  4. Cierra la aplicación y el servidor de desarrollo presionando Control+C.

Especifica un puerto para pruebas locales

Cuando ejecutes tu aplicación en el servidor de desarrollo local, el puerto predeterminado es 8080. Puedes cambiar este valor predeterminado modificando la entrada del complemento para appengine-maven-plugin. Por ejemplo, puedes especificar el puerto y la dirección en el archivo pom.xml del directorio de tu aplicación:

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

En este ejemplo, <devserver.port> configura el puerto a 8181 en lugar de al valor predeterminado, y se especifica la dirección 0.0.0.0, lo que significa que el servidor de desarrollo escuchará las solicitudes que provienen de la red local.

El prefijo devserver es opcional; puedes usar <port>8181</port> en cambio.

Depura en el servidor de desarrollo

Para depurar una aplicación que se ejecuta localmente, configura los jvmFlags en la configuración del complemento para habilitar la depuración en la JVM subyacente, por ejemplo:

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

Implementa tu aplicación

Para implementar tu aplicación, ejecuta el siguiente comando:

mvn appengine:deploy

El objetivo de appengine:deploy y todos los demás objetivos del complemento App Engine Maven tienen parámetros asociados que puedes utilizar. Para obtener una lista completa de objetivos y parámetros, consulta Objetivos y parámetros del complemento App Engine Maven.

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8