如何使用spring boot在application.properties中注入maven profile的属性

时间:2017-01-31 14:08:12

标签: java spring maven spring-boot properties-file

我在pom.xml中定义了三个配置文件

<profiles>
    <profile>
        <id>development</id>

        <properties>
            <activatedProperties>development</activatedProperties>
            <env.identifier>dev</env.identifier>

        </properties>

        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <profile>
        <id>qualification</id>

        <properties>
            <activatedProperties>qualification</activatedProperties>
            <env.identifier>klif</env.identifier>

        </properties>
    </profile>

    <profile>
        <id>production</id>

        <properties>
            <activatedProperties>production</activatedProperties>
            <env.identifier>prod</env.identifier>

        </properties>
    </profile>
</profiles>

我还将构建节点修改为:

<build>
    <finalName>myApplication</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

我创建了三个属性文件,并将此模式命名为:application- [profileId] .properties。 在application.properties中,我定义了属性:

spring.profiles.active=@activatedProperties@
以指定Spring引导使用哪个配置文件。 我还为我的日志文件定义了一个文件,如下所示:
logging.file=logs/facade_@env.identifier@.log
问题是,当我启动我的应用程序时,即使指定配置文件,我总是得到我的env.identifier dev的值。 如何解决这个问题?感谢

1 个答案:

答案 0 :(得分:0)

<强>更新

您可能缺少maven资源插件:

<plugins>


      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
         <configuration>
           <delimiters>
             <delimiter>@</delimiter>
           </delimiters>
           <useDefaultDelimiters>false</useDefaultDelimiters>
         </configuration>
      </plugin>
      ...
    </plugins>

然后在你的命令中你只需要添加:

mvn resources:resources