Google app engine 无法为Java GCP应用程序引擎项目提供自定义app.yaml文件

Google app engine 无法为Java GCP应用程序引擎项目提供自定义app.yaml文件,google-app-engine,google-cloud-platform,yaml,gcloud,Google App Engine,Google Cloud Platform,Yaml,Gcloud,我有一个Java 11 GCP应用程序引擎项目,我正试图根据环境使用不同的App.yaml文件(例如App-dev.yaml,App-prod.yaml,等等)。/appengine目录中的yaml文件,如src/main/appengine/app-dev.yaml等 有一个,但答案不起作用,因为它破坏了描述符,在Java中应该是pom.xml(有关更多信息,请参阅我的方法2) 方法#1 更新:解决!要使用此方法,您必须使用gcloud 298.0.0+ 首先,我尝试使用以下文件中的--app

我有一个Java 11 GCP应用程序引擎项目,我正试图根据环境使用不同的
App.yaml
文件(例如
App-dev.yaml
App-prod.yaml
,等等)。
/appengine
目录中的
yaml
文件,如
src/main/appengine/app-dev.yaml

有一个,但答案不起作用,因为它破坏了
描述符
,在Java中应该是
pom.xml
(有关更多信息,请参阅我的方法2

方法#1

更新:解决!要使用此方法,您必须使用gcloud 298.0.0+

首先,我尝试使用以下文件中的
--appyaml=appyaml
参数:

我运行了以下命令并收到一个错误,即无法识别
appyaml
参数

$ gcloud --project=my-project app deploy --appyaml=app-dev.yaml
ERROR: (gcloud.app.deploy) unrecognized arguments: --appyaml=app-dev.yaml 
app-dev.yaml
的完全限定路径也不起作用

方法#2

接下来,我在中发现了一个略微不同的语法,如下所示:

gcloud app deploy service-name-app.yaml
我在本地尝试了同样的方法,但像这样指向我的自定义
app-dev.yaml
,但它失败了:

$ gcloud --project=my-project app deploy src/main/appengine/app-dev.yaml
...
descriptor:      [/Users/SomeDev/IdeaProjects/my-project/app-server/src/main/appengine/app-dev.yaml]
source:          [/Users/SomeDev/IdeaProjects/my-project/app-server/src/main/appengine]
target project:  [my-project]
target service:  [default]
target version:  [20200831abcdefg]
target url:      [https://my-project.uc.r.appspot.com]
这是因为它认为
app-dev.yaml
描述符
文件,而不是
pom.xml
,因此出现以下错误:

Error message: did not find any jar files with a Main-Class manifest entry
为了比较,我运行了一个没有自定义
yaml
文件的正常部署,您可以看到
pom.xml
描述符的值

$ gcloud --project=my-project app deploy
...
descriptor:      [/Users/SomeDev/IdeaProjects/my-project/app-server/pom.xml]
source:          [/Users/SomeDev/IdeaProjects/my-project/app-server]
target project:  [my-project]
target service:  [default]
target version:  [20200831abcdefg]
target url:      [https://my-project.uc.r.appspot.com]
是否有一种推荐的方法来实现这一点,或者这是一种完全错误的方法?

查看您的“方法1”,您必须将您的gcloud升级到版本>=此处—添加了appyaml参数—最近在2010年6月

看看你的“方法2”。如果您正在运行
gcloud app deploy
(不带参数),它将在当前目录中搜索描述符
app.yaml
,如果未找到,则搜索
pom.xml
。如果要从不同的本地化中使用
pom.xml
,必须将其从当前目录中删除。我没有测试到最后,只是简单地测试了描述符值

无论如何,我不认为使用上面的方法是最好的。当您使用
pom.xml
作为描述符时,这意味着您正在使用名为“”的功能。这不是使用maven部署应用程序引擎的主要方式


根据我的理解,如果maven用于构建,那么可以在
app.yaml
文件()的
entrypoint
中使用jar,或者maven目标
appengine:deploy
(+)。

在没有复杂的app-ENV.yaml文件逻辑的情况下部署应用程序吗?我想确认这是版本问题。我上的是
297.0.0
,几天之内几乎没有找到正确的版本!运行
gcloud组件更新
修复了所有问题,现在
--appyaml
工作正常。谢谢你抓住了这个细微的差别。
$ gcloud --project=my-project app deploy
...
descriptor:      [/Users/SomeDev/IdeaProjects/my-project/app-server/pom.xml]
source:          [/Users/SomeDev/IdeaProjects/my-project/app-server]
target project:  [my-project]
target service:  [default]
target version:  [20200831abcdefg]
target url:      [https://my-project.uc.r.appspot.com]