Metas e parâmetros do plug-in do Maven do App Engine (baseado na gcloud CLI)

Depois que você adiciona o plug-in do Maven do App Engine baseado na CLI gcloud ao projeto, são disponibilizadas as seguintes metas do Maven específicas do App Engine:

Meta Descrição
appengine:cloudSdkLogin Define o estado global da CLI gcloud para a conta.
appengine:deploy Testa e implanta um aplicativo no App Engine.
appengine:deployAll Prepara e implanta um aplicativo com todas as configurações yaml válidas simultaneamente no App Engine.
appengine:deployCron Prepara e implanta um arquivo de configuração cron.yaml no App Engine.
appengine:deployDispatch Prepara e implanta um arquivo de configuração dispatch.yaml no App Engine.
appengine:deployDos Prepara e implanta um arquivo de configuração dos.yaml no App Engine.
appengine:deployIndex Prepara e implanta um arquivo de configuração index.yaml no App Engine.
appengine:deployQueue Prepara e implanta um arquivo de configuração queue.yaml no App Engine.
appengine:help Exibe informações de ajuda sobre o plug-in do Maven para App Engine.
appengine:run Executa o servidor de desenvolvimento do App Engine. Quando o servidor está em execução, ele faz verificações contínuas para determinar se appengine-web.xml foi alterado. Se afirmativo, o servidor atualizará o aplicativo. Você não precisa parar e reiniciar o aplicativo devido a alterações em appengine-web.xml.
appengine:stage Gera um diretório de aplicativos para implantação.
appengine:start Inicia a execução do servidor de desenvolvimento do App Engine de forma assíncrona e depois retorna para a linha de comando. Quando esta meta é executada, o comportamento dela é igual ao da meta run. A diferença é que o Maven continua processando metas e é encerrado depois que o servidor entra em funcionamento.
appengine:stop Para um servidor de desenvolvimento da Web do App Engine em execução.

Para ver mais informações sobre como configurar e usar o Maven, consulte o artigo Como usar o Maven.

Parâmetros de meta

Cada meta tem parâmetros associados que podem ser usados. É possível especificar essas configurações em pom.xml ou na linha de comando.

Para definir essas configurações no pom.xml, adicione o nome do parâmetro à seção <configuration>.

O exemplo a seguir divide arquivos JAR, interrompe a versão anteriormente em execução e especifica o caminho da CLI gcloud:

<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.7.0</version>
     <configuration>
       <stage.enableJarSplitting>true</stage.enableJarSplitting>
       <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>
       <cloudSdkHome>/usr/foo/path/to/cloudsdk</cloudSdkHome>
     </configuration>
  </plugin>
</plugins>

Como alternativa, para definir essas configurações na linha de comando, siga o padrão -D[USER_PROPERTY]=[PARAMETER_VALUE].

O exemplo a seguir especifica um diretório para testar o aplicativo:

mvn appengine:stage -Dapp.stage.stagingDirectory=[YOUR_STAGING_DIRECTORY]

Consulte as seções a seguir para ver uma lista dos parâmetros disponíveis para cada meta.

Se quiser ignorar todas as execuções de appengine:goal, defina o parâmetro skip como true.

appengine:deploy

Testa e implanta um aplicativo no App Engine.

Use os parâmetros a seguir, sendo que alguns deles correspondem às sinalizações de linha de comando gcloud app deploy:

Parâmetro Descrição Configuração do plug-in Configuração da linha de comando
appEngineDirectory Local dos arquivos de configuração .yaml (cron, index etc.) de onde as implementações específicas de configuração (appengineDeployCron etc.) serão implantadas. Para aplicativos padrão, seus arquivos de configuração .xml são convertidos durante a preparação para .yaml e colocados em target/appengine-staging/WEB-INF/appengine-generated. deploy.appEngineDirectory app.deploy.appEngineDirectory
bucket Bucket do Google Cloud Storage usado para testar arquivos associados à implantação. Se esse argumento não for especificado, será usado o bucket padrão do aplicativo. deploy.bucket app.deploy.bucket
cloudSdkHome Parâmetro opcional para configurar o local da CLI gcloud. Se essa propriedade não for especificada, o plug-in fará automaticamente o download da CLI gcloud. cloudSdkHome cloudSdkHome
cloudSdkVersion Parâmetro opcional para especificar a versão da CLI gcloud desejada. cloudSdkVersion cloudSdkVersion
compileEncoding Codificação de caracteres a usar na compilação de JSPs. É aplicável apenas ao ambiente padrão do App Engine. stage.compileEncoding app.stage.compileEncoding
deleteJsps Exclui os arquivos de origem JSP após a compilação. Aplica-se apenas ao ambiente padrão do App Engine. stage.deleteJsps app.stage.deleteJsps
disableJarJsps Desativar a adição de classes geradas de JSPs. É aplicável apenas ao ambiente padrão do App Engine. stage.disableJarJsps app.stage.disableJarJsps
dockerBuild Compile uma versão do Docker hospedada (remote) ou local (local). Para executar uma versão local, é preciso que o ambiente Docker local esteja configurado corretamente. O padrão é uma versão hospedada. deploy.dockerBuild app.deploy.dockerBuild
dockerfile Localização do Dockerfile a ser usado para aplicativos padrão do App Engine executados no ambiente flexível. É aplicável apenas ao ambiente padrão do App Engine. stage.dockerfile app.stage.dockerfile
enableJarClasses Execute jar no conteúdo WEB-INF/classes. Aplica-se apenas ao ambiente padrão do App Engine. stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting Divide arquivos JAR maiores que 10 MB em fragmentos menores. Aplica-se apenas ao ambiente padrão do App Engine. stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart Usa o início rápido do Jetty para processar anotações de servlet. Refere-se apenas ao ambiente padrão do App Engine. stage.enableQuickstart app.stage.enableQuickstart
force Força a implantação, substituindo qualquer implantação anterior em andamento nesta versão. deploy.force app.deploy.force
imageUrl Faz a implantação com uma determinada imagem do Docker. O URL do Docker precisa ser de um dos nomes de host válidos do Google Container Registry. deploy.imageUrl app.deploy.imageUrl
jarSplittingExcludes Exclui de todos os arquivos JAR aqueles arquivos que correspondem à lista de SUFIXOS separados por vírgulas. É aplicável apenas ao ambiente padrão do App Engine. stage.jarSplittingExcludes app.stage.jarSplittingExcludes
projectId Nome do projeto do Google Cloud Platform para uso nesta invocação. É preciso especificar um projectId ou é possível configurar o GCLOUD_CONFIG para usar o conjunto de projetos em seu estado de configuração do gcloud. deploy.projectId app.deploy.projectId
promote Promove a versão implantada para que ela receba todo o tráfego. O padrão é True. deploy.promote app.deploy.promote
server Servidor do App Engine para se conectar. Normalmente não é preciso alterar esse valor. deploy.server app.deploy.server
sourceDirectory Obrigatório. O local dos arquivos de aplicativos da Web compilados ou o WAR explodido. Isso é usado como fonte de preparação. Refere-se apenas ao ambiente padrão do App Engine. O padrão é ${project.build.directory}/${project.build.finalName}. stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory Obrigatório. Diretório onde o aplicativo será testado. O padrão é ${project.build.directory}/appengine-staging. stage.stagingDirectory app.stage.stagingDirectory
stopPreviousVersion Interromper a versão anteriormente em execução ao implantar uma versão nova que recebe todo o tráfego. deploy.stopPreviousVersion app.deploy.stopPreviousVersion
version A versão do aplicativo que será criada ou substituída por essa implantação. Se você não especificar uma versão, será gerado automaticamente um número de versão. deploy.version app.deploy.version

appengine:help

Exibe informações de ajuda sobre o plug-in do Maven para App Engine.

Para exibir detalhes dos parâmetros, chame:

mvn appengine:help -Ddetail=true -Dgoal=[GOAL_NAME]

Use os seguintes parâmetros:

Parâmetro Descrição Propriedade do usuário
detail Se verdadeiro, exibe todas as propriedades configuráveis para cada meta. O padrão é False. detail
goal O nome da meta para exibir o respectivo conteúdo de ajuda. Quando não especificado, todas as metas são exibidas. goal
indentSize O número de espaços por nível de recuo. Deve ser um número positivo. O padrão é 2. indentSize
lineLength O comprimento máximo de uma linha de exibição. Deve ser um número positivo. O padrão é 80. lineLength

appengine:run

Executa o servidor da Web de desenvolvimento do App Engine. Quando o servidor está em execução, ele faz verificações contínuas para determinar se appengine-web.xml foi alterado. Se houver, o servidor recarregará o aplicativo. Isso significa que você não precisa parar e reiniciar o aplicativo devido a alterações em appengine-web.xml.

Use os parâmetros a seguir. Alguns deles correspondem a sinalizações de linha de comando do servidor de desenvolvimento local:

Propriedade Descrição Configuração do plug-in Configuração da linha de comando
automaticRestart Reiniciar as instâncias automaticamente quando os arquivos do aplicativo da Web (recursos ou arquivos de classe) forem alterados. Para configurar o Maven para colocar os arquivos de classe compilados no diretório correto do app da Web, altere a configuração "outputDirectory" do Maven:

<build>
  <outputDirectory>
    target/${project.artifactId}-${project.version}/WEB-INF/classes
  </outputDirectory>
  ...
<plugins>
...
devserver.automaticRestart app.devserver.automaticRestart
environment Um mapa de variáveis de ambiente a enviar para o servidor de desenvolvimento local. Exemplo:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags Outros argumentos a serem transmitidos ao comando java ao iniciar uma instância do aplicativo. Pode ser especificado mais de uma vez. Exemplo:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
devserver.jvmFlags app.devserver.jvmFlags
host Nome do host a que os serviços de aplicativos precisam se vincular. O padrão é localhost. devserver.host app.devserver.host
port Porta mais baixa a que os serviços de aplicativos precisam se vincular. O padrão é 8080. devserver.port app.devserver.port
serverVersion Versão do servidor a iniciar. As opções são “1” e “2-alpha”. O padrão é “1”. devserver.serverVersion app.devserver.serverVersion
services Obrigatório. Caminho(s) para um diretório que contém WEB-INF/web.xml. O padrão é build/exploded-app. devserver.services app.devserver.services

appengine:stage

Gera um diretório de aplicativos para implantação. A fase do estágio é chamada automaticamente antes da meta appengine:deploy. Esta fase é responsável por:

  • compilar as páginas do JavaServer do aplicativo da Web para classes do bytecode
  • A análise de todos os servlets anotados e geração de um guia de início rápido do Jetty web.xml (somente se web.xml estiver configurado para usar a versão 3.1 da especificação do servlet)
  • opcionalmente colocar as classes compiladas em um jar;
  • gerar um app.yaml completo a partir dos seguintes arquivos: appengine-web.xml, web.xml, servlets anotados;
  • copiar todos os arquivos estáticos do aplicativo da Web (html, css, js, imagens etc.) em um diretório __static__/, que é implantado como arquivos estáticos configurados em app.yaml.

O diretório de preparo pode ser usado para inspecionar o que está sendo implantado e pode ser usado no estado em que se encontra para o comando gcloud app deploy.

Use os seguintes parâmetros:

Parâmetro Descrição Configuração do plug-in Configuração da linha de comando
cloudSdkHome Parâmetro opcional para configurar o local da CLI gcloud. Se essa propriedade não for especificada, o plug-in fará automaticamente o download da CLI gcloud. cloudSdkHome cloudSdkHome
cloudSdkVersion Parâmetro opcional para especificar a versão da CLI gcloud desejada. cloudSdkVersion cloudSdkVersion
compileEncoding Codificação de caracteres a usar na compilação de JSPs. Refere-se apenas ao ambiente padrão do App Engine. stage.compileEncoding app.stage.compileEncoding
deleteJsps Exclui os arquivos de origem JSP após a compilação. Aplica-se apenas ao ambiente padrão do App Engine. stage.deleteJsps app.stage.deleteJsps
dockerfile Localização do Dockerfile a ser usado em aplicativos padrão do App Engine executados no ambiente flexível. Refere-se apenas ao ambiente padrão do App Engine. stage.dockerfile app.stage.dockerfile
enableJarClasses Execute jar no conteúdo WEB-INF/classes. Aplica-se apenas ao ambiente padrão do App Engine. stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting Divide arquivos JAR maiores que 10 MB em fragmentos menores. Aplica-se apenas ao ambiente padrão do App Engine. stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart Usa o início rápido do Jetty para processar anotações de servlet. Refere-se apenas ao ambiente padrão do App Engine. stage.enableQuickstart app.stage.enableQuickstart
jarSplittingExcludes Exclui de todos os arquivos JAR aqueles arquivos que correspondem à lista de SUFIXOS separados por vírgulas. É aplicável apenas ao ambiente padrão do App Engine. stage.jarSplittingExcludes app.stage.jarSplittingExcludes
sourceDirectory Obrigatório. O local dos arquivos de aplicativos da Web compilados ou o WAR explodido. Isso é usado como fonte de preparação. Refere-se apenas ao ambiente padrão do App Engine. O padrão é ${project.build.directory}/${project.build.finalName}. stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory Obrigatório. Diretório onde o aplicativo será testado. O padrão é ${project.build.directory}/appengine-staging stage.stagingDirectory app.stage.stagingDirectory

appengine:start

Inicia a execução do servidor da Web de desenvolvimento do App Engine de forma assíncrona e depois retorna à linha de comando. Quando esta meta é executada, o comportamento dela é igual ao da meta run. A diferença é que o Maven continua processando metas e é encerrado depois que o servidor entra em funcionamento.

Use os seguintes parâmetros:

Propriedade Descrição Configuração do plug-in Configuração da linha de comando
environment Um mapa de variáveis de ambiente a enviar para o servidor de desenvolvimento local. Exemplo:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags Outros argumentos a serem transmitidos ao comando java ao iniciar uma instância do aplicativo. Pode ser especificado mais de uma vez. Exemplo:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
devserver.jvmFlags app.devserver.jvmFlags
host Nome do host a que os serviços de aplicativos precisam se vincular. O padrão é localhost. devserver.host app.devserver.host
port Porta mais baixa a que os serviços de aplicativos precisam se vincular. O padrão é 8080. devserver.port app.devserver.port
serverVersion Versão do servidor a iniciar. As opções são “1” e “2-alpha”. O padrão é “1”. devserver.serverVersion app.devserver.serverVersion
services Obrigatório. Caminho(s) para um diretório que contém WEB-INF/web.xml. O padrão é build/exploded-app. devserver.services app.devserver.services
startSuccessTimeout Tempo, em segundos, para aguardar o início do servidor de apps de desenvolvimento em segundo plano (ao usar appengineStart). devserver.startSuccessTimeout app.devserver.startSuccessTimeout

appengine:stop

Para um servidor de desenvolvimento da Web do App Engine em execução.

Use os seguintes parâmetros:

Parâmetro Descrição Configuração do plug-in Configuração da linha de comando
host Nome do host a que o servidor de administração precisa se vincular. O padrão é localhost devserver.adminHost app.devserver.adminHost
port Porta a que o servidor de administração precisa se vincular. O padrão é 8000. devserver.adminPort app.devserver.adminPort
cloudSdkHome Parâmetro opcional para configurar o local da CLI gcloud. Se essa propriedade não for especificada, o plug-in fará automaticamente o download da CLI gcloud. cloudSdkHome cloudSdkHome

Solução de problemas de erros de upload

Se você usar a meta deploy, sua tentativa de implantação poderá falhar com uma mensagem semelhante a esta: 404 Not Found This application does not exist (app_id=u'your-app-ID'). Esse erro ocorrerá se você tiver várias contas do Google e estiver usando a conta incorreta para executar a atualização.

Para resolver esse problema, altere o usuário autorizado com o comando gcloud auth login.