Como migrar para o plug-in do Gradle baseado no Cloud SDK

Se você estiver usando o plug-in baseado no SDK do App Engine para Java (com.google.appengine.appengine-gradle) e quiser migrar para o novo SDK do Cloud, passe a usar o plug-in com base no SDK do Cloud (com.google.cloud.tools.appengine-gradle).

Benefícios do plug-in baseado no Cloud SDK

O upgrade para o novo plug-in oferece os seguintes benefícios:

  • Usa as mesmas credenciais de autenticação que todos os outros comandos com base no SDK do Cloud, que são provenientes do fluxo padrão de gcloud auth login.

  • É compatível com o ambiente flexível do App Engine.

  • Atualiza o servidor de desenvolvimento local automaticamente como parte do fluxo padrão de atualização do SDK do Cloud.

  • É compatível com a implantação das configurações de serviço do App Engine (cron, filas, DoS, expedição), independentemente do serviço.

Diferenças significativas

Antes de migrar, esteja ciente destas diferenças significativas:

Dependência do Cloud SDK
O plug-in antigo pode ser executado sem dependências de ambiente local específicas, além de Java, mas o novo plug-in exige a instalação do SDK do Cloud.
Sem geração de documentos de descoberta do Endpoints
O novo plug-in não gera documentos de descoberta do Endpoints. Esse recurso está disponível em um plug-in diferente. A execução do back-end do Endpoints não exige mais a geração desse arquivo em etapas de criação, já que agora ele é gerado pelo servidor no ambiente de execução. Use o novo plug-in somente se você precisar gerar bibliotecas de cliente para iOS ou Android, por exemplo. Para saber mais sobre os novos plug-ins, consulte o guia Como migrar para o Endpoints Frameworks para App Engine.
O formato de arquivo EAR não é mais aceito
Para a execução e implantação de vários serviços ao mesmo tempo, o novo plug-in não é compatível com o formato de arquivo EAR.
Novo comando de implantação
O plug-in antigo chama o comando appcfg para implantar aplicativos, enquanto o novo plug-in faz a implantação usando a nova CLI do gcloud.
O aprimoramento de JPA/JDO do DataNucleus precisa ser configurado manualmente
Se o projeto usa o aprimoramento de JPA/JDO do DataNucleus de gradle-appengine-plugin, você precisa configurar manualmente o aprimoramento do DataNucleus depois de alternar para o plug-in baseado no SDK do Cloud. Veja um exemplo do Stackoverflow.
O Android Studio não é compatível
É possível fazer com que seu projeto do Android Studio use o novo plug-in, mas o servidor de desenvolvimento do App Engine do Android Studio e o suporte à implantação não funcionarão com o novo plug-in. Para executar e implantar o aplicativo, é preciso invocar o Gradle diretamente.

O uso de arquivos de configuração XML é aceito, mas não YAML.

Como migrar para o novo plug-in

  1. Remova a antiga configuração de gradle-appengine-plugin e as importações do arquivo build.gradle.

  2. Adicione o novo plug-in ao classpath da seção buildscript do arquivo build.gradle:

    buildscript {
        repositories {
            mavenCentral()
        }
    
        dependencies {
            classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.0.1'
        }
    }
    
  3. Na raiz do serviço, execute o seguinte comando para verificar se for possível executar o aplicativo localmente:

    gradle appengineRun
    
  4. Na seção buildscript do arquivo build.gradle, configure a implantação especificando o código do projeto e a versão:

    appengine {
        deploy {
            version = 'v1'
            project = "your GCP project ID"
        }
    }
    

    A nova ferramenta ignora os elementos de aplicativo e versão no arquivo appengine-web.xml.

  5. Na raiz do serviço, execute o seguinte comando para verificar se é possível implantar o aplicativo:

    gradle appengineDeploy
    

Como migrar configurações multisserviço baseadas em EAR

O novo plug-in não é compatível com empacotamento EAR. Em vez disso, ele aceita a execução de vários serviços localmente sem qualquer etapa especial de empacotamento.

Para migrar o projeto do Gradle baseado em EAR:

  1. Escolha um serviço principal que será responsável pela execução do resto dos serviços. Selecione um serviço padrão, que pode ser qualquer um dos serviços executados em conjunto.

  2. Na configuração appengine, modifique a entrada run.services para incluir todos os serviços que precisam ser executados pelo servidor de desenvolvimento local.

    Um exemplo de estrutura de projeto:

    ../{projectRoot}/
      build.gradle
      settings.gradle (includes default-service & secondary-service)
           {your-default-service}/build.gradle {includes appengine-gradle-plugin}
              ….
           {your-default-service}/src/main/webapp/WEB-INF/appengine-web.xml
           {your-secondary-service}build.gradle {includes appengine-gradle-plugin}
              ….
           {your-secondary-service}/src/main/webapp/WEB-INF/appengine-web.xml
    

    Um exemplo de buildscript do build.gradle:

    appengine {
        run {
            // configure the app to point to the right service directories
            services = [
                    projectAsService(project),
                    projectAsService(":another-module")
            ]
        }
    }
    
    // helper method to obtain correct directory and set up dependencies
    def getExplodedAppDir(Project serverProject) {
        // if not 'this' module, then do some setup.
        if (serverProject != project) {
            // make sure we evaluate other modules first so we get the right value
            evaluationDependsOn(serverProject.path)
            // make sure we build "run" depends on the other modules exploding wars
            project.tasks.appengineRun.dependsOn serverProject.tasks.explodeWar
        }
        return serverProject.tasks.explodeWar.explodedAppDirectory
    }
    

Comparação entre comandos do Gradle baseado no SDK do App Engine e baseado no Cloud SDK

Na tabela a seguir, mostraremos as diferentes maneiras de invocar o plug-in do Gradle, seja baseado no SDK do App Engine ou baseado no SDK do Cloud.

Ação Baseado do SDK do App Engine Baseado no SDK do Cloud
Executar o aplicativo localmente appengine:devserver appengineRun
Implantar um novo aplicativo, versão ou serviço. appengine:update appengineDeploy
Definir a versão padrão do aplicativo. appengine:set_default_version gcloud app services set-traffic ou gcloud app versions migrate
Atualizar os cron jobs do aplicativo. appengine:update_cron appengineDeployCron
Atualizar a configuração de expedição do aplicativo. appengine:update_dispatch appengineDeployDispatch
Atualizar a configuração da proteção contra DoS do aplicativo. appengine:update_dos appengineDeployDos
Atualizar as definições da fila de tarefas do aplicativo. appengine:update_queues appengineDeployQueue
Atualizar os índices do armazenamento de dados. appengine:update_indexes appengineDeployIndex
Excluir os índices não utilizados do aplicativo. appengine:vacuum_indexes gcloud datastore cleanup-indexes
Inicia a versão de módulo especificada. appengine:start_module_version gcloud app versions start
Parar a versão de módulo especificada. appengine:stop_module_version gcloud app versions stop
Reverter uma atualização em andamento. appengine:rollback gcloud app versions start, gcloud app versions stop

A seguir

  • Agora que você migrou para o novo plug-in com sucesso, é possível testar e implantar o aplicativo.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java 8