En esta página, se explica cómo administrar un proyecto de App Engine para tu API de Cloud Endpoints Frameworks con Apache Maven. Apache Maven es una herramienta de administración y comprensión de proyectos de software capaz de compilar archivos de tipo archivo de app web (WAR) para su implementación en App Engine. Google proporciona un complemento y arquetipos de Maven que son compatibles con Maven 3.3.9 y versiones superiores.
Maven descarga las bibliotecas Java desde el 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
- Usa la consola de Google Cloud para crear y configurar tu proyecto de Google Cloud:
- Selecciona o crea un proyecto de Google Cloud nuevo.
- 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.
- Descarga e instala Google Cloud CLI de gcloud y, luego, iníciala.
Si ya tienes Google Cloud CLI instalada y deseas configurarla para que use un ID del proyecto de Google Cloud distinto del que usaste en su inicialización, consulta Administra gcloud CLI de gcloud.
- Instala el componente
app-engine-java
de la CLI de gcloud:gcloud components install app-engine-java
Nota: Ejecuta
gcloud components update
para asegurarte de tener la versión más reciente de gcloud CLI para Java. - Si no tienes Java, debes descargarlo, instalarlo y configurarlo.
- Configura las marcas del compilador de Java en el
pom.xml
de tu proyecto para especificar el código de bytes de Java 8: - Debes tener instalado Apache Maven 3.3.9 o una versión posterior.
Para determinar tu versión de Maven, ejecuta el siguiente comando:
mvn -v
- Si no tienes instalada la versión correcta de Maven, haz lo siguiente:
Agrega el complemento App Engine Maven a un proyecto existente (opcional)
Para usar el complemento de Maven de App Engine en un proyecto de Maven existente, agrega lo siguiente en la sección plugins
del archivo pom.xml
del proyecto:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.7.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 característica de Maven para proporcionar algunos arquetipos de App Engine útiles en Maven Central. Selecciona un arquetipo de App Engine adecuado para tu app:
Tipo de aplicación | Artefacto | Descripción |
---|---|---|
Endpoints Frameworks para App Engine | endpoints-skeleton-archetype |
Genera un proyecto nuevo y vacío de Endpoints Frameworks para la API de backend de App Engine, listo para tus propias clases y recursos, con los archivos y directorios requeridos. |
Endpoints Frameworks para App Engine | hello-endpoints-archetype |
Genera un proyecto de inicio de marcos de trabajo de Endpoints destinado a la API de backend de App Engine, listo para compilarse y ejecutarse. |
Crea un proyecto nuevo con Maven
Durante la creación del proyecto, en Maven se solicita que proporciones groupId
, artifactId
, version
y 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 Maven, tu proyecto sirve como un 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 tí 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 , ya que esto proporcionará compatibilidad para el complemento de actualización de Maven para las versiones 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 aplicación nueva de marcos de trabajo de Endpoints
En esta sección, se describe cómo crear un proyecto nuevo en Endpoints Frameworks versión 2.0.
El hello-endpoints-archetype
proporciona un ejemplo del uso de complementos, incluido el complemento de Maven de App Engine y el complemento de Maven de Endpoints Frameworks.
El hello-endpoints-archetype
genera un ejemplo de API de saludo con Endpoints Frameworks versión 2.0. También actúa como ejemplo para migrar tus aplicaciones de Endpoints Frameworks versión 1.0 a Endpoints Frameworks versión 2.0.
El README.md
que se genera con el arquetipo proporciona información sobre dónde se produjo la migración.
Si deseas crear un proyecto de arquetipo de marcos de trabajo de Endpoints para la API de backend de App Engine, haz lo siguiente:
Cambia el directorio a uno donde desees compilar el proyecto.
Ejecuta el siguiente comando de Maven:
mvn archetype:generate -Dgoogle-cloud-project=[YOUR-PROJECT-ID] -Dappengine-plugin=2.7.0 -Dendpoints-frameworks=2.1.0 -Dendpoints-plugin=1.0.2 -Dappengine-sdk=1.9.98 -Dfilter=com.google.appengine.archetypes:
Aquí:
-Dgoogle-cloud-project
se configura en tu ID del proyecto.-Dappengine-plugin
se configura en la versión más reciente del complemento de Maven de App Engine.-Dendpoints-frameworks
se configura en la versión más reciente de las dependencias de Endpoints Frameworks para App Engine para Maven.-Dendpoints-plugin
se configura en la versión más reciente del complemento de Maven de Endpoints Frameworks para App Engine.
Proporciona el número correspondiente a
hello-endpoints-archetype
.Selecciona la versión más reciente de la lista que se muestra de las versiones de arquetipos disponibles.
Cuando se te solicite
Define value for property 'groupId'
, proporciona el espacio de nombres para tu app; por ejemplo, proporciona el valorcom.example.helloendpoints
.Cuando se te solicite
Define value for property 'artifactId'
, proporciona el nombre del proyecto; por ejemplo, proporciona el valorhelloendpoints
.Cuando debas configurar
Define value for property 'version'
, acepta el valor predeterminado.Cuando debas configurar
Define value for property 'package'
, acepta el valor predeterminado.Cuando se te solicite confirmar tus elecciones, ingresa
Y
para aceptar el valor predeterminado.Espera a que el proyecto termine de generarse y, luego, cambia de directorio al directorio del proyecto nuevo, por ejemplo,
helloendpoints/
.Compila el proyecto.
mvn clean package
Espera a que se compile el proyecto. Cuando el proyecto finaliza con éxito, se muestra un mensaje similar al siguiente:
[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] ------------------------------------------------------------------------
Para realizar una prueba local y, luego, implementar el proyecto en el entorno estándar de App Engine, consulta Administrar, probar y, luego, implementar un proyecto de Maven.
Además, puedes generar bibliotecas cliente de Java para la API de saludo con el complemento de Maven de Endpoints Frameworks:
mvn endpoints-framework:clientLibs
En el siguiente diagrama, se muestra el diseño básico del proyecto de la API de saludo:
README.md
contiene información sobre el ejemplo generado.Greetings.java
contiene una definición de la API para una API de saludo de ejemplo.Constants.java
contiene las constantes que se usan en la API de saludo de ejemplo.HelloGreeting.java
contiene un contenedor para los mensajes recibidos y enviados desde la API de saludo de ejemplo.index.html
contiene una IU simple para llamar a la API de saludo del backend.base.js
contiene los elementos de JavaScript necesarios para que la IU realice solicitudes de backend.- Una vez generado
build.gradle
, en el ejemplo también se muestra la compatibilidad con Gradle. Puedes obtener más información sobre esta funcionalidad enREADME.md
.
Compila tu aplicación
Si deseas compilar una aplicación creada con los arquetipos de Maven para App Engine, haz lo siguiente:
Cambia al directorio principal de tu proyecto, por ejemplo,
guestbook/
.Ejecuta Maven:
mvn clean package
Espera a que se compile el proyecto. Cuando el proyecto finaliza con éxito, se muestra un mensaje similar al siguiente:
BUILD SUCCESS Total time: 10.724s Finished at: 2016-08-04T16:18:24-07:00 Final Memory: 24M/213M
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 ejecutando el complemento de Maven de App Engine.
Si deseas probar tu aplicación de marcos de trabajo de Endpoints para App Engine, haz lo siguiente:
Compila tu aplicación si aún no lo has hecho con el siguiente comando:
mvn clean package
Ejecuta el ejemplo de manera local con:
mvn appengine:run
Espera a que inicie el servidor. Cuando el servidor se inicie por completo con la aplicación en ejecución, verás un mensaje similar al siguiente:
[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
Usa tu navegador para ir a
http://localhost:8080/
y acceder a tu app.Presiona
Control+C
para cerrar la aplicación y el servidor de desarrollo.
Especifica un puerto para pruebas locales
Cuando ejecutes tu aplicación en el servidor de desarrollo local, el puerto predeterminado es 8080
. Puedes modificar la entrada del complemento para appengine-maven-plugin
a fin de cambiar este valor predeterminado. Por ejemplo, puedes especificar el puerto y la dirección en el archivo pom.xml
del directorio de tu aplicación de la siguiente forma:
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.7.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 en 8181
en lugar de en el valor predeterminado, y se especifica la dirección 0.0.0.0
, lo que significa que el servidor de desarrollo recibe solicitudes provenientes de la red local.
El prefijo devserver
es opcional; puedes usar <port>8181</port>
en su lugar.
Realizar la depuración en el servidor de desarrollo
Para depurar una aplicación que se ejecuta de manera local, configura jvmFlags
en la configuración del complemento a fin de 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>
Implementar tu aplicación
Para implementar tu aplicación:
mvn appengine:deploy
El objetivo de appengine:deploy
y todos los demás objetivos del complemento de Maven de App Engine tienen parámetros asociados que puedes usar. Para obtener una lista completa de objetivos y parámetros, consulta Objetivos y parámetros del complemento de App Engine para Maven (basado en el SDK de Cloud).
¿Qué sigue?
- Explora el código del complemento de Maven de App Engine y, luego, informa sobre cualquier problema en GitHub.
- Consulta Objetivos y parámetros de Maven de App Engine para aprender a especificar parámetros para objetivos.
- Explora el código del complemento de Maven de Endpoints Frameworks y, luego, informa sobre problemas en GitHub.
- Consulta Complemento de Maven de Endpoints Frameworks a fin de aprender a especificar parámetros para objetivos.