除了默认配置文件外,Maven 配置文件未激活

Posted

技术标签:

【中文标题】除了默认配置文件外,Maven 配置文件未激活【英文标题】:Maven profiles are not activating except default profile 【发布时间】:2019-05-17 23:21:55 【问题描述】:

我正在开发一个 spring-boot 应用程序。我的 POM 中有两个配置文件,但是当我尝试使用 clean install -Pdev 构建项目时,它不会反映 application.properties 中的更改,它只会反映我在其中一个配置文件中使用“activeByDefault”标签时.

<profiles>
<profile>
    <id>dev</id>
    <properties>
        <activatedProperties>dev</activatedProperties>
    </properties>

</profile>
<profile>
    <id>release</id>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
        <activatedProperties>release</activatedProperties>
    </properties>
</profile>

</profiles>

如果我正在运行全新安装 -Pdev,我会在我的 application.properties 中得到它。 激活属性=@激活属性@

如果我设置&lt;activeByDefault&gt;true&lt;/activeByDefault&gt;,那么我将在 application.properties 中获取值。 激活属性=释放。

令人沮丧的是我无法使用其他个人资料。

【问题讨论】:

我认为您需要在 -P 和配置文件名称之间添加一个空格。 @JJF 有或没有空格都是一样的。 【参考方案1】:

添加你的 application.properties

spring.profiles.active=@activatedProperties@

如果 Maven 在运行时没有找到包含您的 application.properties 文件的目录,您需要设置 Maven 资源插件来过滤该目录。

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

或者只是在 application.properties 中添加您想要激活的配置文件

spring.profiles.active=dev

注意: Maven 配置文件和 Spring 配置文件是不同的东西。

【讨论】:

您认为为什么需要&lt;filtering&gt;true&lt;/filtering&gt; 员工? 因为这将允许您将 标记中定义的属性插入到资源目录中的任何文件中。 spring.profiles.active=@activatedProperties@ in application.properties 将在没有 true 人员的情况下被注入。 你试过了吗?我认为你想说的是东西而不是员工,对吧? 我确实尝试过没有资源标签。是的,东西,对不起。

以上是关于除了默认配置文件外,Maven 配置文件未激活的主要内容,如果未能解决你的问题,请参考以下文章

Maven:配置文件激活取决于 localRepository 属性?

为啥我不能从另一个配置文件激活 Maven2 配置文件?

spring boot 在 application.properties 中使用 spring.profile.default 时未加载默认配置文件

Maven:如何根据子模块是不是包含文件来激活配置文件?

Maven - 根据属性激活子配置文件

使用文件存在忽略我的 Maven 配置文件中的激活(始终执行配置文件)