0

我正在使用resthub引导我的 spring-backbone webapp。

https://github.com/resthub/resthub.github.io/blob/master/docs/spring/layout.md#environment-specific-properties

根据https://github.com/resthub/resthub.github.io/blob/master/docs/spring/mongo.md。他们已经有一个默认的数据库属性文件。

到目前为止一切正常,但我必须在 heroku 上部署项目,它具有不同的数据库名称、端口和其他设置。

database.properties要覆盖 resthub 提供的默认数据库属性,可以在类路径中创建一个名为的文件。但是我希望仅选择该文件以在 heroku 上进行部署。

我应该如何继续配置它,以便它在 intellij 上使用默认数据库属性在本地工作,但为 heroku 占用 database.properties。

我已经阅读了有关 Maven 配置文件的信息,但它讨论了如何为不同的环境提供不同的文件,并且我正在寻找不为特定环境提供特定文件,而是使用其中一个 resthub jars 中提供的默认文件。

更新

刚刚经历 了 spring.profiles.active 设置的多个 Spring 的环境配置文件时的优先顺序是什么

resthub-mongodb配置文件总是旧的,在生产的情况下(由 标识-Dprod=true),加载一个名为的新配置文件heroku,然后加载prod\database.properties

<context:property-placeholder location="classpath*:prod/database.properties"/>

但我猜想 mongo 相关的 bean 已经使用resthub-mongodb& 中定义的属性定义了,因此加载加载heroku配置文件以更改 db 属性不起作用。

在这种情况下有什么解决方案?

可能的解决方案

现在,我最终使用了配置文件之一 -herokuresthub-mongodb取决于系统属性。

还有其他方法吗?

4

1 回答 1

1

您可以让 Maven 通过资源配置来处理您的环境。

添加你的 pom 或父 pom :

<env>local</env>

...

<resources>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>${basedir}/src/main/config/${env}</directory>
        <filtering>false</filtering>
    </resource>
</resources>

这允许您提供多个配置目录;每个环境一个:本地,heroku ...

使用此配置,您将能够为您的 heroku 环境提供特定的 database.properties 文件,同时在本地保留 resthub 默认值(不在 config/local 中提供自定义 database.properties):

src/
   main/
       config/
             local/
             heroku/
                   database.properties

-Denv=heroku向任何 maven 命令运行添加选项将config/在类路径中添加所有目录内容。local是默认环境,如果没有给出选项则使用。

于 2014-11-15T23:21:02.437 回答