spring maven profile - 根据编译配置文件设置属性文件

spring maven profile - set properties file based on compilation profile

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

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

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

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

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

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

}

我该怎么办?

参见 Apache Maven Resources Plugin / Filtering and Maven: The Complete Reference - 9.3. Resource Filtering。 (Filtering 是一个不好的名字,恕我直言,因为过滤器通常会过滤一些东西 out,而我们执行 string interpolation 在这里。但事实就是如此。)

src/main/resources 中创建 one file.properties,其中包含 ${...} 变量值,这些值应根据您的环境而改变。

声明默认属性(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 ...