一、背景

希望能够实现根据不同的环境动态读取对应的配置。

二、准备

  1. bootstrap.yml文件内容
    spring:
      profiles:
        active: @profile.name@

    不同环境的配置:application-dev.yml、application-prod.yml

  2. pom.xml文件中profile配置

    <profiles>
            <profile>
                <id>local</id>
                <properties>
                    <profile.name>local</profile.name>
                </properties>
            </profile>
            <profile>
                <id>dev</id>
                <properties>
                    <profile.name>dev</profile.name>
                </properties>
            </profile>
            <profile>
                <id>prod</id>
                <properties>
                    <profile.name>prod</profile.name>
                </properties>
            </profile>
        </profiles>

三、问题处理

  1. 执行mvn clean install 命令,检查对应项目中target/class中的bootstrap.yml文件中profile是否正确。
  2. 查看pom.xml文件中的打包配置,<resource>中是否加了<filtering>true<filtering>,即
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>
        </resources>
    </build>