java - 如何使用 Spring Boot 在 application.properties 中注入(inject) Maven 配置文件的属性

标签 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 Boot 使用哪个配置文件。 我还为我的日志文件定义了一个文件,如下所示:
logging.file=logs/facade_@env.identifier@.log
问题是,当我启动应用程序时,即使指定配置文件,我总是会得到 env.identifier dev 的值。 如何解决这个问题?谢谢

最佳答案

更新

您可能缺少 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

关于java - 如何使用 Spring Boot 在 application.properties 中注入(inject) Maven 配置文件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41959634/

相关文章:

maven - 如何为 Maven 插件指定默认目标?

java - 使用 BufferedReader 从文件中读取行

java - "unable to locate Spring NamespaceHandler"错误

maven - 添加 xuggler 依赖项会出错

java - 具有多个模块的 Maven 项目结构

java - 这个 Hibernate/Spring 应用程序(独立)有什么问题?

java - RESTFul 服务器中的多态性

java - 使用同一类内部的外部方法设置构造函数变量

java - 如何在jsp页面导入java类

java - ApplicationContext ctx = 新的 FileSystemXmlApplicationContext 错误