Google App Engine上的Spring Boot App的Maven配置文件

时间:2018-06-28 11:42:07

标签: java spring maven google-app-engine 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

但是当我尝试对部署工作执行相同操作时,例如

mvn appengine:deploy -Dspring.profiles.active=prod

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

我会误会某些东西还是应该起作用?如果由于Google应用程序引擎只是在没有传递任何参数的情况下发动战争而无法解决问题,是否有办法为Google上的应用程序/服务定义环境变量,我可以在其中存储诸如环境特定的数据库URL和凭据之类的内容?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

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

env_variables:
    JAVA_USER_OPTS: '-Dspring.profiles.active=prod'

这将在运行时添加到JVM start命令中。有关openjdk运行时,请参见documentation。默认情况下,您的应用使用的是jetty运行时,该运行时继承了openjdk运行时的选项。

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

<system-properties>
  <property name="spring.profiles.active" value="prod" />
</system-properties>

答案 1 :(得分:0)

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

<jvmFlags>
  <jvmFlag>-Dspring.profiles.active=prod</jvmFlag>
</jvmFlags>

答案 2 :(得分:0)

当前答案对我不起作用。

相反(因为我使用的是app.yaml而不是app-engine.xml),所以我在app.yaml中添加了以下两行:

env_variables:
    SPRING_PROFILES_ACTIVE: "myProfileName"