当前位置: 首页 > 知识库问答 >
问题:

Spring个人资料。active ist未设置为maven构建的命令行上指定的配置文件名称

百里诚
2023-03-14

我使用Spring Boot 2.1.3。发布并出现以下问题:

我使用了一个用spring初始化器创建的标准spring启动项目。我通过在pom中指定以下内容来设置maven资源筛选。xml:

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

在应用程序中。属性我已指定以下内容:

spring。个人资料。active=@spring。个人资料。活动@

我在pom中定义了以下配置文件。xml:

<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <spring.profiles.active>dev</spring.profiles.active>
    </properties>
    <build>
      <finalName>${project.artifactId}-dev-${project.version}</finalName>
    </build>
  </profile>
  <profile>
    <id>test</id>
    <properties>
      <spring.profiles.active>test</spring.profiles.active>
    </properties>
    <build>
      <finalName>${project.artifactId}-test-${project.version}</finalName>
    </build>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <spring.profiles.active>prod</spring.profiles.active>
    </properties>
    <build>
      <finalName>${project.artifactId}-prod-${project.version}</finalName>
    </build>
  </profile>
</profiles>

标准测试类定义为:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("dev")
public class DocumentComposerApplicationTests {

    @Test
    public void contextLoads() {
    }

}

现在,当我运行以下maven命令时:

mvn清洁包装-Ptest

然后生成以下工件:

app-test-1.0.0。战争

但是在应用程序中。属性文件中包含以下内容:

spring。个人资料。活动=开发

因此,maven使用命令行中给出的概要文件“test”正确地构建了工件。但是资源过滤将“dev”配置文件中的值作为spring。个人资料。在应用程序中处于活动状态。属性文件。

那么,我做错了什么,如何实现一个maven构建,其中spring.profiles.active将在测试配置文件中指定的“测试”值的应用程序属性中被正确替换?

共有2个答案

方飞白
2023-03-14

我也有同样的问题。然而,我注意到关闭开发IDE并手动执行maven命令后,问题消失了。最终,我在VisualStudio代码IDE中找到了Java:AutoBuild设置。禁用该设置解决了该问题。顺便说一句,Eclipse也有同样的问题。

钱钊
2023-03-14

总之,您尝试通过以下步骤指定活动配置文件:

  1. 通过使用

似乎两个配置文件都被激活了,因此:

  1. profiletest用于命名构建的工件
  2. profiledev被用作属性spring的值。个人资料。激活

请按照Maven:完整参考-5.4中的描述运行mvn帮助:活动配置文件。列出活动配置文件以列出当前活动配置文件。

一个技巧是避免

 类似资料:
  • 问题内容: 我的Maven设置文件 〜/ .m2 / settings.xml中* 默认激活了 一个配置文件。 * 是否可以通过执行以下操作从命令行停用它: 问题答案: 是的,的确,您有正确的方法。从Maven配置文件用户指南 停用个人资料 从Maven 2.0.10开始,可以使用命令行停用一个或多个配置文件,方法是在其标识符前面加上字符’!’。或“-”,如下所示: 这可用于停用标记为active

  • 假设我们在Eclipse中有一个Maven项目。pom。xml有两个概要文件。 问题是:如何在Eclipse中运行maven以执行每个配置文件的每个目标? 我试图: 在属性/maven中设置活动maven配置文件- 我希望maven将为这两个概要文件运行,执行pom中的所有任务。xml 谢谢

  • 问题内容: 我有一个Spring Boot应用程序。 我的应用程序中有三个配置文件-> 开发,暂存和生产。所以我有3个档案 应用程序开发 application-staging.yml application-production.yml 我的application.yml驻留在内部。我在application.yml中将活动配置文件设置为: 其他3个配置文件特定的配置文件位于文件夹中。 我正在使

  • 我有spring boot的申请。 我的应用程序中有三个概要文件->开发、分期和生产。所以我有3个文件 应用程序-development.yml application-staging.yml 应用程序-production.yml 我的application.yml驻留在中。我已将application.yml中的活动配置文件设置为: 其他3个配置文件特定的配置文件位于文件夹中。 我正在为Ecl

  • 问题内容: 我有一个使用maven作为构建工具的应用程序。 我正在使用Maven配置文件从不同的配置文件设置不同的属性。 我想做的是将maven中的所有活动配置文件也移植到spring活动配置文件中,以便我可以在bean签名()中引用它们。但我不确定该怎么做。 例如:考虑以下Maven设置 假设我在未指定任何其他配置文件的情况下运行maven,而我希望spring具有和 配置为活动配置文件。 问题

  • 我有一个用maven作为构建工具的应用程序。 我正在使用maven概要文件从不同的概要文件设置不同的属性。 假设我运行带有out的maven,并指定我希望spring的任何其他概要文件,将和作为活动概要文件。