2

我会创建一些像这样的编译配置文件:

  • 个人资料名称:dev
  • 个人资料名称:测试
  • 简介名称:生产

在 src/main/resources 我有 3 个文件夹:

  • 开发/文件.properties
  • 测试/文件.properties
  • 生产/文件.properties

每个文件都包含此属性的不同值:

- my.prop.one
- my.prop.two
- my.prop.three

之后,我会在 Spring 类中设置如下内容:

@Configuration
@PropertySource("file:${profile_name}/file.properties")
public class MyConfig{

}

我能怎么做?

4

1 回答 1

2

请参阅Apache Maven 资源插件/过滤Maven:完整参考 - 9.3。资源过滤。(过滤是一个坏名字,恕我直言,因为过滤器通常会过滤一些东西,而我们在这里执行字符串插值。但就是这样。)

创建一个 包含应根据您的环境更改的值的变量的变量file.propertiessrc/main/resources${...}

声明默认属性(那些 for dev)并在你的 POM 中激活资源过滤:

<project>
  ...
  <properties>
    <!-- dev environment properties, 
         for test and prod environment properties see <profiles> below -->
    <name>dev-value</name>
    ...
  </properties>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>
  ...

在您的 POM 中声明两个具有相应属性的配置文件:

  ...  
  <profiles>
    <profile>
      <id>test</id>
      <properties>
        <name>test-value</name>
        ...
      </properties>
    </profile>

    <profile>
      <id>prod</id>
      <properties>
        <name>prod-value</name>
        ...
      </properties>
    </profile>

  </profiles>
  ...

在您的代码中使用:

@PropertySource("file:file.properties")

通过以下方式激活配置文件:

mvn ... -P test ...

或者

mvn ... -P prod ...
于 2018-02-06T13:27:20.547 回答