Usa Gradle y el complemento de App Engine

Gradle es una herramienta de automatización de compilación de código abierto centrada en la flexibilidad y el rendimiento. App Engine proporciona un complemento de Gradle que puedes usar para compilar e implementar tu app en App Engine. En los ejemplos de código de esta guía, se usa la versión 8 de Gradle.

En la muestra de código, se muestra cómo configurar el archivo build.gradle para agregar tareas de Gradle de App Engine, repositorios de Maven, complemento de Gradle para App Engine y dependencias para Java 8. Para la versión 11 y posteriores de Java, consulta Entorno de ejecución de Java para obtener más información sobre el uso de versiones más recientes.

Antes de comenzar

  1. Instala Java

  2. Instala Gradle.

  3. Instala Git.

  4. Si aún no lo hiciste, sigue los pasos de esta guía para descargar la CLI de gcloud, crear el proyecto de Google Cloud e inicializar la app de App Engine.

  5. Instala el componente app-engine-java de la CLI de gcloud:

    gcloud components install app-engine-java
    

Crea un proyecto nuevo de Gradle

Puedes crear un proyecto de Gradle nuevo desde cero mediante la shell. O bien, si quieres probar el complemento, puedes descargar, ejecutar de forma local e implementar el proyecto de Hello World.

Para crear un proyecto nuevo, realiza los siguientes pasos:

  1. Crea un directorio nuevo y navega hasta él.

  2. Para inicializar un proyecto nuevo, sigue estos pasos:

    1. Ejecuta gradle init:

      gradle init --type java-application
      

      Se te pedirá que respondas las siguientes preguntas:

      • Ingresa la versión de Java de destino (mín.: 7, predeterminada: 21): 21
      • Selecciona la estructura de la aplicación: 1 para el proyecto de aplicación única.
      • Selecciona la DSL de la secuencia de comandos de compilación: 2 (para Groovy).
      • Selecciona el framework de prueba: 1 (para JUnit 4)
      • Genera compilación con APIs y comportamiento nuevos: no
    2. Crea la carpeta WEB-INF:

      mkdir -p app/src/main/webapp/WEB-INF
      
    3. Crea la carpeta appengine:

      mkdir -p app/src/main/appengine
      
  3. Quita los archivos stub que genera gradle init:

    rm ./app/src/main/java/org/example/App.java ./app/src/test/java/org/example/AppTest.java
    
  4. Agrega la siguiente información al archivo app/build.gradle a fin de agregar el complemento y las tareas de Gradle de App Engine, los repositorios de Maven, las dependencias y la configuración de tareas.

    buildscript {      // Configuration for building
      repositories {
        jcenter()      // Bintray's repository - a fast Maven Central mirror & more
        mavenCentral()
      }
      dependencies {
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.5.0'
        classpath 'org.akhikhl.gretty:gretty:+'
      }
    }
    
    repositories {   // repositories for Jar's you access in your code
      jcenter()
      mavenCentral()
    }
    
    apply plugin: 'java'
    apply plugin: 'war'
    apply plugin: 'org.akhikhl.gretty'
    apply plugin: 'com.google.cloud.tools.appengine'
    
    dependencies {
      providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
      providedCompile 'com.google.appengine:appengine:+'
    // Add your dependencies here.
    
    }
    
    gretty {
        servletContainer = 'jetty9'  // What App Engine Flexible uses
    }
    
      appengine {
        deploy {   // deploy configuration
          stopPreviousVersion = true  // default - stop the current version
          promote = true              // default - & make this the current version
        }
      }
    
    group = 'com.example.appengine'   // Generated output GroupId
    version = '1.0-SNAPSHOT'          // Version in generated output
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
  5. También debes agregar los siguientes archivos al proyecto, mediante un editor de texto o un entorno de desarrollo integrado (IDE):

Consulta Configura el entorno de desarrollo para obtener una descripción general de un proyecto de App Engine en Java.

Prueba tu aplicación con el servidor de desarrollo

  1. Si deseas acceder a los recursos de Google desde tu proyecto cuando realizas una ejecución local, configura las credenciales predeterminadas de la aplicación mediante el siguiente comando:

    gcloud auth application-default login
    
  2. Cambia a la raíz del directorio de la aplicación.

  3. Durante la fase de desarrollo, puedes invocar Gradle para ejecutar y probar la aplicación en cualquier momento en el servidor de desarrollo:

    gradle jettyRun
    

    También tienes la opción de ejecutar Gradle sin instalarlo si usas el wrapper de Gradle.

  4. Espera a que se inicie el servidor. El servidor se inicia mientras la aplicación está en ejecución, y ves un mensaje como el siguiente:

    :prepareInplaceWebAppFolder
    :createInplaceWebAppFolder
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :prepareInplaceWebAppClasses
    :prepareInplaceWebApp
    :jettyRun
    17:40:05 INFO  Jetty 9.2.15.v20160210 started and listening on port 8080
    17:40:05 INFO   runs at:
    17:40:05 INFO    http://localhost:8080/
    
  5. Visualiza cómo se ejecuta la app en http://localhost:8080.

Para obtener más información sobre el complemento Gretty, consulta Gretty Configuration (Configuración de Gretty) y Gretty tasks (Tareas de Gretty).

Implementa tu aplicación

Para implementar tu aplicación:

gradle appengineDeploy

La tarea appengineDeploy, al igual que las otras tareas de Gradle, tienen propiedades asociadas que puedes usar. Si deseas obtener una lista completa de tareas y propiedades, consulta Tareas y propiedades de Gradle para App Engine.

Usa el wrapper de Gradle

Gradle proporciona un mecanismo para descargar y ejecutar la versión necesaria de Gradle sin tener que instalarla:

Linux/macOS

  1. Cambia al directorio del código de muestra.

  2. Ejecuta gradlew:

    ./gradlew jettyRun
    

Windows

  1. Cambia al directorio del código de muestra.

  2. Ejecuta gradlew:

    ./gradlew.bat jettyRun
    

Si deseas obtener información adicional sobre Gradle, visita Tareas y propiedades de Gradle para App Engine.

¿Qué sigue?