我正在部署一个符合 Google 应用引擎标准的应用程序。这是一个 Java/Kotlin 应用程序,但问题不一定是特定于此的。我正在使用最新的 Gradle 插件,答案可能是特定于此的。
就像这些年来一样,我指定了一个项目 ID,比方说我的项目,以及版本号/字符串,比方说1-2-0。这两条信息在历史上都会进入appengine-web.xml
file (app.yaml
对于Python)。它们仍然可以在那里设置,但随后会被忽略,正如部署过程所明显指出的那样。
项目ID我的项目现在必须指定为通用 glcoud 命令行界面配置的一部分(可以通过查看gcloud config configurations list
)。 Gradle 插件似乎可以很好地从那里获取它。
对于版本 1-2-0但是,我不知道在哪里以及如何设置它。因此,在部署时我总是会得到一个新的默认值,例如20170604t124930
,以及许多冗余的应用程序版本。
对于我之前使用的 Python 应用程序appcfg
(或者是一个glcoud
命令?)进行部署,我指定了项目 ID 和版本作为命令行参数。 Gradle 插件必须在其他地方找到(或没有找到)此信息。 Gradle 文件的version = '1.2.0-SNAPSHOT'
当然只是针对生成的jar/war。网络上的许多建议、Google 官方文档 (!) 和本网站像这儿 https://stackoverflow.com/q/40071171/893774已经过时、矛盾或两者兼而有之(因此,请原谅我冗长而详细的帖子)。谢谢!
简单的答案可以在底部找到App Engine Gradle 插件任务和属性 https://cloud.google.com/appengine/docs/standard/java/tools/gradle-reference。只需将其添加到build.gradle
:
appengine.deploy.version = '1-2-0'
或者,作为更广泛的应用程序引擎插件配置的一部分:
appengine {
deploy {
...
version = '1-2-0
}
}
我的困惑似乎源于这样一个事实:有旧的 Gradle 插件和新的插件,并且两者之间的处理确实发生了很大变化 https://cloud.google.com/appengine/docs/standard/java/tools/migrate-gradle。特别是,新插件更加依赖于glcoud
配置。该插件按原样允许设置项目 ID (appengine.deploy.project
)在 Gradle 配置中,但是,如果未在那里指定,则仅从可用项目列表中获取默认值(命令行:gcloud config list project
- 老人appcfg
不再使用)。
但是,当 Gradle 配置中缺少版本时,环境中的版本就没有这样的默认值。在这种情况下,每次部署都会采用新的时间戳字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)