Google App Engine 上 Spring Boot 应用程序的 Maven 配置文件

moo*_*nli 5 java google-app-engine spring maven spring-boot

我有一个 Spring Boot 应用程序,我想使用应用程序引擎 maven 插件将其部署在 Google 应用程序引擎上。

一切正常,除了我找不到 Google 应用引擎为 Spring Boot 应用加载正确的 application.properties 文件的方法。

我有 application-prod.properties、application-default.properties 和 application-test.properties。例如,在本地我可以轻松选择要开始使用的环境/配置文件

mvn appengine:run -Dspring.profiles.active=prod
Run Code Online (Sandbox Code Playgroud)

但是当我尝试为部署工作做同样的事情时,比如

mvn appengine:deploy -Dspring.profiles.active=prod
Run Code Online (Sandbox Code Playgroud)

那行不通。它不会加载 application-prod.properties 而是回退到 application-default.properties。

我是否误解了某些东西,或者应该这样做吗?如果这不起作用,因为谷歌应用引擎只是在没有传递任何参数的情况下开始战争,有没有办法为谷歌上的应用程序/服务定义环境变量,我可以在其中存储诸如数据库url和特定于环境的凭据之类的东西?

谢谢你们的帮助。

Mik*_* E. 6

如果使用App Engine 柔性环境,请在您的app.yaml添加以下内容

env_variables:
    JAVA_USER_OPTS: '-Dspring.profiles.active=prod'
Run Code Online (Sandbox Code Playgroud)

这将由运行时添加到 JVM 启动命令中。请参阅openjdk 运行时的文档。默认情况下,您的应用程序使用 jetty-runtime,它继承了 openjdk-runtime 的选项。

如果使用App Engine 标准环境,请在您的appengine-web.xml添加以下内容:

<system-properties>
  <property name="spring.profiles.active" value="prod" />
</system-properties>
Run Code Online (Sandbox Code Playgroud)


Mor*_*sUK 0

尝试使用jvmFlags参数来启动具有所需属性的应用程序,https://cloud.google.com/appengine/docs/standard/java/tools/maven#development_server_goals

<jvmFlags>
  <jvmFlag>-Dspring.profiles.active=prod</jvmFlag>
</jvmFlags>
Run Code Online (Sandbox Code Playgroud)