com.google.appengine.appengine-maven
) y deseas pasar a la nueva Google Cloud CLI, migra al complemento basado en la
CLI (com.google.cloud.tools.appengine-maven
).
Beneficios del complemento basado en la CLI de gcloud
La actualización al complemento nuevo brinda estos beneficios:
Usa las mismas credenciales de autenticación que usan todos los otros comandos basados en la CLI de gcloud, que se producen a partir del flujo
gcloud auth login
estándar.Es compatible con el entorno flexible de App Engine.
Actualiza de manera automática el servidor de desarrollo local como parte del flujo de actualización estándar de la CLI de gcloud.
Admite la implementación de las configuraciones de servicio de App Engine (cron, colas, DoS, envío), de forma independiente de tu servicio.
Diferencias destacadas
Antes de migrar, ten en cuenta estas diferencias importantes:
- dependencia de la CLI de gcloud
- El complemento anterior se ejecuta sin dependencias específicas del entorno local, además de Java, pero el nuevo requiere que instales la CLI de gcloud.
- Sin generación de documentos de descubrimiento de extremos
- El complemento nuevo no genera documentos de descubrimiento de Endpoints. Esta característica está disponible en un complemento distinto. La ejecución del backend de extremos ya no requiere la generación de este archivo en un paso de compilación, ya que ahora el servidor lo genera en el entorno de ejecución. Usa el complemento nuevo solo si necesitas generar bibliotecas cliente como las de iOS o Android. Si quieres obtener más información sobre los complementos nuevos, revisa la guía Migra a Endpoints Frameworks para App Engine.
- El formato de archivo EAR ya no es compatible
- El complemento nuevo ya no admite el formato de archivo EAR para implementar y ejecutar varios servicios a la vez.
- Comando de implementación nuevo
- El complemento anterior llama al comando
appcfg
para implementar aplicaciones, mientras que el complemento nuevo implementa con la nueva CLI de gcloud.
- No se incluyen las tareas de mejora de JPA o JDO de Datanucleus
- El complemento nuevo no admite mejoras de Datanucleus de ningún tipo. Si el proyecto usa la asistencia para la mejora de JDO o JPA de Datanucleus del complemento anterior, debes configurar aparte el complemento de Maven de terceros de Datanucleus (instrucciones para JDO y JPA) cuando migras.
Se admite el uso de los archivos de configuración YAML, pero no los XML.
Migra al complemento nuevo
Para migrar al complemento nuevo, haz lo siguiente:
Agrega el complemento basado en la CLI de gcloud a tu archivo
pom.xml
.<build> <plugins> [...] <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.7.0</version> <configuration> <projectId>your-project-ID-goes-here</projectId> <version>1</version> </configuration> </plugin> [...] </plugins> </build>
Especifica el ID del proyecto de Google Cloud de destino, además del servicio y la versión, en la configuración del complemento. Las herramientas nuevas ignoran los elementos de la aplicación y la versión en el archivo
appengine-web.xml
.Prueba la configuración nueva mediante la ejecución y la implementación de tu aplicación de la siguiente manera:
Ejecuta la app con el nombre calificado del complemento:
mvn com.google.cloud.tools:appengine-maven-plugin:run
Implementa la app con el nombre completamente calificado del complemento:
mvn com.google.cloud.tools:appengine-maven-plugin:deploy
Asegúrate de asignar un espacio de nombres a la invocación de destino del complemento si aún tienes el complemento appengine anterior en
pom.xml
.
Si tienes una configuración más personalizada, encontrarás marcas equivalentes de etapa de pruebas, ejecución local e implementación en el complemento nuevo.
Después de verificar que todo funciona de la forma prevista, quita el complemento com.google.appengine appengine-maven-plugin
del archivo pom.xml
y quita los elementos de la versión y la aplicación del archivo appengine-web.xml
.
Ahora puedes invocar los objetivos del complemento nuevo con la notación reducida:
mvn package appengine:deploy
Migra configuraciones de varios servicios basadas en EAR
Con el complemento nuevo, no debes agrupar tus servicios en un paquete EAR. En cambio, cuando desees probar los servicios de forma local, puedes ejecutar cada servicio de forma individual o seguir algunos pasos adicionales para ejecutar varios servicios con un solo comando. Cuando estés listo para implementar los servicios, puedes implementarlos de manera individual o, según cómo hayas organizado el proyecto, puedes implementar todos los servicios con un solo comando.
Para ejecutar varios servicios de forma local, actualiza el appengine-maven-plugin
con la lista de servicios que deseas ejecutar. Si los servicios comparten un POM superior, puedes agregar esta lista a appengine-maven-plugin
en el POM superior. De lo contrario, agrega la lista a appengine-maven-plugin
en el POM del servicio predeterminado.
Para agregar la lista de servicios a appengine-maven-plugin
, haz lo siguiente:
Para cada
context-root
en el archivoapplication.xml
de tu paquete EAR, agrega un elementoservice
aappengine-maven-plugin
.En cada elemento
service
, especifica el subdirectoriotarget
que contiene el WAR expandido del servicio.Por ejemplo:
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.7.0</version> <configuration> <deploy.projectId>your-project-name</deploy.projectId> <deploy.version>your-project-version</deploy.version> <services> <!-- for each service in your EARs application.xml --> <service> ${project.parent.basedir}/service-name/target/service-name-${project.version} </service> <service> ${project.parent.basedir}/another-service/target/another-service-${project.version} </service> </services> </configuration> </plugin>
Supongamos que la estructura del directorio se ve de la siguiente manera:
~/my-ear/default-service/ ~/my-ear/another-service/
Si ese es el caso, los nombres de las rutas de acceso en los elementos
service
deben procesarse como se muestra a continuación:<service>~/my-ear/default-service/target/default-service-1.0-SNAPSHOT</service> <service>~/my-ear/another-service/target/another-service-1.0-SNAPSHOT</service>
Ejecuta el siguiente comando desde tu directorio de servicios predeterminado para confirmar que la configuración nueva funciona:
mvn package appengine:run
Después de verificar que el servicio predeterminado ejecuta todos los servicios de forma local, quita tu paquete EAR por completo.
Si el directorio raíz del proyecto contiene solo tus servicios, puedes implementarlos todos con un solo comando mvn appengine:deploy
. Primero debes agregar el complemento appengine-maven-plugin al archivo superior pom.xml
. Cuando ejecutas mvn appengine:deploy
, el comando itera en cada uno de los servicios del proyecto para ubicar los archivos de configuración y, luego, implementar cada servicio.
Comparación de los comandos de Maven basados en el SDK de App Engine y los comandos basados en la CLI de gcloud
En la siguiente tabla, se muestran las diferentes formas en que se invoca el complemento de Maven, dependiendo de si usas el complemento de Maven basado en el SDK de App Engine o el basado en la CLI de gcloud.
Acción | Basado en el SDK de App Engine | Basado en la CLI de gcloud |
---|---|---|
Ejecuta la app de forma local | appengine:devserver |
appengine:run |
Implementar una app, una versión o un servicio nuevo | appengine:update |
appengine:deploy o appengine:deployAll |
Configurar la versión de la aplicación predeterminada | appengine:set_default_version |
gcloud app services set-traffic o gcloud app versions migrate |
Actualizar los trabajos cron de la aplicación | appengine:update_cron |
appengine:deployCron |
Actualiza la configuración de despacho de la aplicación. | appengine:update_dispatch |
appengine:deployDispatch |
Actualizar la configuración de protección contra DoS de la aplicación | appengine:update_dos |
appengine:deployDos |
Actualizar las definiciones de la lista de tareas en cola de la aplicación | appengine:update_queues |
appengine:deployQueue |
Actualizar los índices de Datastore | appengine:update_indexes |
appengine:deployIndex |
Borrar los índices sin uso de la aplicación | appengine:vacuum_indexes |
Limpieza de índices de Datastore de gcloud |
Inicia la versión especificada | appengine:start_module_version |
gcloud app versions start |
Detener la versión especificada | appengine:stop_module_version |
gcloud app versions stop |
Revertir una actualización en curso | appengine:rollback Ten en cuenta que también puedes migrar el tráfico a una versión anterior. |
Usa gcloud app versions start, gcloud app versions stop o gcloud app services set-traffic para migrar a una versión anterior. |