Usa Gradle y el complemento de App Engine

Aprende a administrar un proyecto del entorno flexible de App Engine con Gradle, un sistema de compilación declarativo que se usa para automatizar la compilación, las pruebas y la implementación.

Antes de comenzar

Instala y configura los siguientes requisitos previos:

Configura y valida tu proyecto de Cloud

Debes configurar tu proyecto de Cloud y, luego, instalar el SDK de Cloud:

  1. Usa Google Cloud Console para crear y configurar tu proyecto de Cloud:

    Ir a App Engine

    1. Selecciona o crea un proyecto de Cloud nuevo.
    2. Sigue las indicaciones para asegurarte de que exista una aplicación de App Engine y de que la facturación esté habilitada:
      1. Si necesitas crear una aplicación de App Engine para tu proyecto, se te solicitará que selecciones la región donde quieres que se ubique tu aplicación de App Engine.
      2. Sigue las instrucciones para crear una cuenta de facturación nueva o seleccionar una existente.
    3. El Panel se abrirá después de crear la aplicación de App Engine y de habilitar la facturación de tu proyecto.
  2. Instala e inicializa el SDK de Cloud.

    Si ya tienes la herramienta de gcloud instalada y deseas configurarla para usar un ID del proyecto de Cloud distinto del que inicializaste, consulta Administra las configuraciones del SDK de Cloud.

  3. Instala el componente de App Engine para Java:

    gcloud components install app-engine-java
    

Crea un proyecto de Gradle nuevo

Puedes crear un proyecto de Gradle nuevo desde cero con el shell. O bien, si quieres probar el complemento, puedes descargar, ejecutar de forma local y, luego, 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-library
      
    2. Crea la carpeta WEB-INF:

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

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

    rm src/main/java/Library.java src/test/java/LibraryTest.java
    
  4. Agrega el siguiente comando a tu archivo build.gradle para agregar las tareas y el complemento de App Engine Gradle, los repositorios de Maven, las dependencias y la configuración de las 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.2.0' // Latest 1.x.x release
        classpath 'org.akhikhl.gretty:gretty:+'
      }
    }
    
    repositories {   // repositories for JARs you access in your code
      maven {
        url 'https://maven-central.storage.googleapis.com'             // Google's mirror of Maven Central
      }
    
    //maven {
    //  url 'https://oss.sonatype.org/content/repositories/snapshots' // SNAPSHOT repository if needed
    //}
    
      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 {
        httpPort = 8080
        contextPath = '/'
        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
        projectId = 'GCLOUD_CONFIG' // delegate to project in gcloud config
        version = 'GCLOUD_CONFIG'   // delegate to gcloud to generate a 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 a tu proyecto mediante un editor de texto o un entorno de desarrollo integrado (IDE):

Consulta la guía de inicio rápido para obtener una descripción general de un proyecto de App Engine de Java.

Descarga la app de Hello World

  1. Clona el repositorio de la app de muestra Hello World a la máquina local:

    git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
    

    De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.

  2. Ve al directorio que contiene el código de muestra:

    cd getting-started-java/helloworld-servlet
    

Prueba tu aplicación con el servidor de desarrollo

  1. Si deseas acceder a los recursos de Google desde tu proyecto cuando ejecutas de forma local, usa el siguiente comando para configurar las credenciales predeterminadas de la aplicación:

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

  3. Durante la fase de desarrollo, puedes invocar Gradle para ejecutar y probar tu 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 inicie el servidor. El servidor se inicia mientras tu 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. Mira cómo se ejecuta tu app en http://localhost:8080.

Para obtener más información sobre el complemento de Gretty, consulta Configuración de Gretty y 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 que se requiere sin instalación:

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