【发布时间】:2019-10-01 14:28:59
【问题描述】:
2020 年 6 月 30 日,Google 将关闭 Google App Engine SDK 和工具。我一直在将我的项目迁移到 Java 11 和 Google Cloud SDK。我正在处理的项目只是由 servlet 组成。我在部署过程中遇到问题,显示最终错误:
“GCLOUD:错误信息:无法生成应用命令:无法生成 生成应用程序启动命令:缺少入口点条目 app.yaml。”
在尝试部署时,使用:“mvn package appengine:deploy”会产生以下输出:
[INFO] --- maven-war-plugin:2.2:war (default-war) @ hellokb3 ---
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/C:/Users/Emperor/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaults
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Packaging webapp
[INFO] Assembling webapp [hellokb3] in [C:\Users\Emperor\eclipse-workspace\hellokb3\target\hellokb3-0.1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\Users\Emperor\eclipse-workspace\hellokb3\src\main\webapp]
[INFO] Webapp assembled in [11192 msecs]
[INFO] Building war: C:\Users\Emperor\eclipse-workspace\hellokb3\target\hellokb3-0.1.0-SNAPSHOT.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO]
[INFO] --- appengine-maven-plugin:2.1.0:deploy (default-cli) @ hellokb3 ---
[INFO] Staging the application to: C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging
[INFO] Detected App Engine app.yaml based application.
Oct 01, 2019 3:16:26 PM com.google.cloud.tools.appengine.operations.GcloudRunner run
INFO: submitting command: C:\Users\Emperor\AppData\Local\google\ct4j-cloud-sdk\LATEST\google-cloud-sdk\bin\gcloud.cmd app deploy --version 1 --project kbnetworld
[INFO] GCLOUD: Services to deploy:
[INFO] GCLOUD:
[INFO] GCLOUD: descriptor: [C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging\app.yaml]
[INFO] GCLOUD: source: [C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging]
[INFO] GCLOUD: target project: [testworld]
[INFO] GCLOUD: target service: [default]
[INFO] GCLOUD: target version: [1]
[INFO] GCLOUD: target url: [https://testworld.appspot.com]
[INFO] GCLOUD:
[INFO] GCLOUD:
[INFO] GCLOUD: Beginning deployment of service [default]...
[INFO] GCLOUD: #============================================================#
[INFO] GCLOUD: #= Uploading 2 files to Google Cloud Storage =#
[INFO] GCLOUD: #============================================================#
[INFO] GCLOUD: File upload done.
[INFO] GCLOUD: Updating service [default]...
[INFO] GCLOUD: .........................................................................................................................................................failed.
[INFO] GCLOUD: ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build da851139-6c89-4065-93c0-0940580b6af8 status: FAILURE.
[INFO] GCLOUD: Error ID: 80D70A67.
[INFO] GCLOUD: Error type: InternalError.
[INFO] GCLOUD: Error message: Failed to generate app command: failure to generate application start command: missing entrypoint entry in app.yaml.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:09 min
[INFO] Finished at: 2019-10-01T15:17:16+01:00
[INFO] ------------------------------------------------------------------------
构建了一个 fat-jar,所以它编译得很好。我已经检查过了,可以看到所有依赖项都包含在内。
根据文档,可以使用 YAML 配置部署应用程序,运行时和任何 fatjars 都将被执行。但是,构建失败并说明必须添加 yaml 文件中的入口点,尽管这是文档中的可选字段。
runtime: java11
handlers:
- url: /.*
script: this field is required, but ignored
我已经在 web.xml 中配置了我的 servlet。
有没有人经历过类似的事情,并且可以指出部署失败的原因?提前致谢。
【问题讨论】:
-
尝试添加一个显式入口点配置 - 也许您的应用不满足自动确定入口点的要求,无论出于何种原因。