【问题标题】:Migrating to Cloud Endpoints Frameworks 2.0 for App Engine迁移到 App Engine 的 Cloud Endpoints Frameworks 2.0
【发布时间】:2017-01-13 13:20:06
【问题描述】:

我目前正在尝试从 Cloud Endpoints 1.0 迁移到 Cloud Endpoints Frameworks 2.0

我已按照此处列出的步骤进行操作: https://cloud.google.com/appengine/docs/java/endpoints/migrating?authuser=0

在我的build.gradle 我已经替换了:

compile 'com.google.appengine:appengine-endpoints:1.9.42'
compile 'com.google.appengine:appengine-endpoints-deps:1.9.42'

与:

compile 'com.google.endpoints:endpoints-framework:2.0.0-beta.5'
compile 'javax.inject:javax.inject:1'

web.xml 中,我将SystemServiceServlet 替换为EndpointsServlet,将/_ah/spi/* 替换为/_ah/api/*

但是在编译时,我收到以下错误:

Error:Execution failed for task ':myapp_backend:appengineEndpointsGetClientLibs'.
> There was an error running endpoints command get-client-lib: web.xml must have 1 (found:0) SystemServiceServlet servlet

我错过了什么吗?

按照@saiyr 的要求编辑,这是我的build.gradle 文件:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.42'
    }
}

repositories {
    jcenter();
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    // AppEngine
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.42'
    compile 'javax.servlet:servlet-api:2.5'

    //  Cloud Endpoints
    compile 'com.google.appengine:appengine-endpoints:1.9.42'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.42'

    // Cloud Endpoints Frameworks
    // compile 'com.google.endpoints:endpoints-framework:2.0.0-beta.7'
    // compile 'javax.inject:javax.inject:1'

    // Project
    compile files('src/main/webapp/WEB-INF/lib/gson-2.3.1.jar')
    compile 'com.googlecode.objectify:objectify:5.1.9'
    compile 'com.ganyo:gcm-server:1.0.2'
    compile 'com.google.appengine.tools:appengine-gcs-client:0.5'
}

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

更新:

现在有一个详细说明过渡过程的指南: https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin/blob/master/ANDROID_README.md

在这里:https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating-android

【问题讨论】:

  • 不,你没有遗漏任何东西。遗憾的是,Gradle App Engine 插件尚未更新为使用 beta 库。你正在使用什么构建任务?
  • @saiyr 该死,我想做的就是使用Firebase Auth 现在在Cloud Endpoints landing page 中提到,但似乎在这个recent Google Cloud Platform Blog post 中它只适用于新的测试版,这就是为什么我'我试图迁移过去。我使用 Gradle 的 appengineUpdate 任务来构建和部署我的后端。我的假设是否正确我必须从Cloud Endpoints 1.0 迁移到Cloud Endpoints Frameworks 2.0 才能使用Firebase Auth
  • 是的,你需要使用2.0。我很惊讶gradle appengineUpdate 会触发appengineEndpointsGetClientLibs 任务。这是一个 Android Studio 文件吗?你能发布你的build.gradle吗?
  • appengineEndpointsGetClientLibs 仅在您的 build.gradle 文件中配置时自动运行。该插件的最新版本 (1.9.42) 目前不处理最新版本的端点。在此处提交问题以进行跟踪:github.com/GoogleCloudPlatform/gradle-appengine-plugin/issues/…
  • @saiyr,正确,这是使用 Android Studio。我用我的build.gradle 文件编辑了我的帖子(我通过注释掉2.0 恢复到1.0)。请注意,我复制的错误也来自 gradle 同步时。当您在端点上工作时,知道何时会发布对 2.0 的支持吗?如果没有适当的 gradle 支持,我不确定如何升级。 PS谢谢你的工作!

标签: google-app-engine android-studio google-cloud-platform google-cloud-endpoints


【解决方案1】:

由于 Gradle 插件正在更新中,现在您需要注释掉/删除 endpoints 片段,以便在构建时不会生成客户端库。然后,如果你需要生成客户端库,现在就去做manually

【讨论】:

  • 你能详细说明一下这个答案吗?我收到了来自 8 月 2 日已弃用的云支持框架 v1 的电子邮件。
  • @RafiqAhmad 现在有一个详细说明过渡过程的指南:github.com/GoogleCloudPlatform/…
  • @gbhail 感谢您的回复,我会查看并回复您是否有效
【解决方案2】:

【讨论】:

  • 按照建议进行更改后,我收到此错误错误:找不到 com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.0。从哪里可以下载插件?
  • @RafiqAhmad 你设置了哪些存储库?如果将您的 gradle 文件作为新问题发布并在此处链接到它们可能会更好,我会看看。
  • 请参考此链接stackoverflow.com/questions/45562977/… 让我知道我在迁移方面做错了什么。
【解决方案3】:

您好,不知道您是否已经解决了,但这解决了我的问题

编译'com.google.endpoints:endpoints-framework:2.0.0-beta.9'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多