Spring Boot 始终使用相同的配置文件

2024-02-10

我正在使用 spring boot 1.5.2,并使用配置文件,但我发现了一个非常奇怪的事情。

my spring boot resources folder like this: enter image description here

application.yml 中的配置

spring:
  profiles:
    active: @profileActive@

应用程序-dev.yml

spring:
  profiles: dev
    datasource:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db1
      username: root
      password:
server:
  port: 8080

应用程序测试.yml

spring:
  profiles: test
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2
    username: root
    password:

server:
  port: 8081

我的pom.xml,只包含资源部分和配置文件部分。

<!-- profile -->
<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <build.profile.id>dev</build.profile.id>
            <profileActive>dev</profileActive>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <build.profile.id>test</build.profile.id>
            <profileActive>test</profileActive>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <build.profile.id>prod</build.profile.id>
            <profileActive>prod</profileActive>
        </properties>
    </profile>
</profiles>


<resources>
        <resource>
            <directory>src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>application-${profileActive}.yml</include>
                <include>application.yml</include>
                <include>templates/*</include>
            </includes>
        </resource>

    </resources>

我现在正在尝试使用测试资料,发现一切都OK了,@profileActive@已替换为test;

mvn clean package -Dmaven.test.skip=true -Ptest

看起来一切都很好。

但是当我尝试运行 jar 时,它总是使用dev个人资料,虽然application.yml显示我们现在使用test or prod轮廓。

我不知道我的 yml 配置哪里出了问题。我尝试将所有配置文件配置包含在一个 application.yml 文件中。但该应用程序仍在使用dev轮廓。

完全配置在一个 application.yml 文件中

spring:
  profiles:
    active: @profileActive@

---
spring:
  profiles: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db1
  username: root
  password:

server:
  port: 8080

---
spring:
  profiles: test
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2
    username: root
    password:

server:
  port: 8081

---
spring:
  profiles: prod

server:
  port: 9000

最后,我尝试使用特性文件,我的所有配置都工作正常,当我运行我的应用程序时可以使用正确的配置文件。

现在,我只想知道我的 yml 配置出了什么问题。

提前致谢 !


终于,我找到了原因。

我的项目是一个多模块maven项目。

我正在使用的一个模块yml格式,

其他的是property格式。

当我将两个模块都设为 yml 格式时,一切正常。

感谢大家!谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 始终使用相同的配置文件 的相关文章

随机推荐

  • 带有颜色选择器编辑器的 JavaFX 表格视图

    我有一个 TableView 它使用 ColorPicker 来 显示 编辑 单元格中的颜色 该表在所需字段中显示 ColorPicker 但编辑不起作用 TableColumn
  • Tag-it onlyAvalaibleTags 选项不起作用

    我使用 tag it 插件https github com aehlke tag it downloads https github com aehlke tag it downloads 如何禁用添加新标签 document ready
  • 使用 NestJS 和 Fastify 时多部分表单数据正文为空

    我们正在迁移自express to fastify in our nestJS应用 这multipart form data后置控制器中支持的 json 正文而不是文件 在迁移后不起作用 我们有typeorm swagger也已插入 如有任
  • 无法在 Visual Studio 2015 中运行 WCF 服务应用程序

    我正在尝试创建我的第一个 WCF 服务应用程序 但无法让它从 Visual Studio 2015 运行 这是我点击运行时出现的错误 我正在遵循教程 我认为他们跳过了一些步骤 但这是我添加到 web config 中的内容
  • InlineUIContainer 问题中的 WPF XAML 按钮单击处理程序

    我有一个 FlowDocument 其中包含一些如下元素
  • WndProc 没有可见的形式?

    我想在第二个线程上创建一个表单 该线程将在其 WndProc 方法中接收消息 创建这样的隐形表单的推荐方法是什么 设置 ShowInTaskbar false 和 Visible false 是否足够 或者是否有 更干净 的方法 我不确定你
  • 鼠标滚轮事件 (C#)

    我无法在主窗体中获取鼠标滚轮事件 作为演示 我想出了一个简单的例子 public partial class Form1 Form public Form1 InitializeComponent this panel1 MouseWhee
  • 使用不同的损失函数恢复训练

    我想实施一个两步学习过程 使用损失函数预训练几个时期的模型loss 1 将损失函数更改为loss 2并继续进行微调训练 目前 我的做法是 model compile optimizer opt loss loss 1 metrics acc
  • 打瞌睡模式处理

    我正在开发一个应用程序 它使用 AlarmManager 在后台生成一些服务 时机对于我们的应用程序非常重要 并且功能不能等待下一个维护窗口的发生 要求用户将应用程序列入白名单不是问题 但不能解决暂停警报的问题 此外 电池消耗也不是一个大问
  • 有没有办法将 Facebook Presto 0.131 与 Cassandra 3.0.0 一起使用?

    使用 Presto 0 131 查询 Cassandra 3 0 0 集群时 我得到 所有尝试查询的主机均失败 snip InvalidQueryException 未配置的表 schema keyspaces 我认为这是由于 Cassan
  • 在 sqlalchemy 中使用 postgresql JSON 类型的列表

    我正在使用金字塔与 sqlalchemy pyramid tm 和 postgresql 来测试这一点 DBSession scoped session sessionmaker extension ZopeTransactionExten
  • XSLT 3.0 流式传输(撒克逊)

    我有一个很大的 XML 文件 6 GB 其中包含这种树
  • 如何在 MAC OSX 中拆分 sql?

    有没有适用于Mac的应用程序可以分割sql文件甚至脚本 我有一个大文件 必须将其上传到不支持超过 8 MB 的文件的主机 我没有 SSH 访问权限 你可以使用这个 http www ozerov de bigdump http www oz
  • 更改查询字符串中的单个变量值[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我得到了一
  • 预加载多个音频文件

    我的网页上有一个音频控件 我希望用它来根据页面的状态播放多个非常短的音频文件 我不想在播放文件时加载它们 如何在页面加载时加载所有这些文件 这是我正在做的事情的粗略想法 http jsfiddle net L0c9ccx9 20 http
  • 如何从 JSP 运行 shell?

    我的问题是不言自明的 我想使用按钮从 JSP 运行一个 shell 即调用一个过程 程序是 CREATE OR REPLACE PROCEDURE DEMO PRC dist IN variable mrno IN variable yr
  • 使用增强赋值将字符串添加到列表

    gt gt gt b gt gt gt c 1234 gt gt gt b c gt gt gt b 1 2 3 4 gt gt gt 这里发生了什么 这应该行不通 对吧 或者我错过了一些明显的东西 gt gt gt b gt gt gt
  • MongoDB 更新嵌套数组中的字段

    MongoDB 更新嵌套数组中的字段 如何将 播放 设置为 播放照片 photos array 我只知道它的 id id ObjectId 4f41a5c7c32810e404000000 albums id ObjectId 4f545d
  • 如何在 Docker 上发布 UDP 端口?

    如何将 UDP 端口从 Docker 容器转发到主机 使用 p 标志并添加 udp端口号的后缀 p 53160 53160 udp 完整命令 sudo docker run p 53160 53160 p 53160 53160 udp p
  • Spring Boot 始终使用相同的配置文件

    我正在使用 spring boot 1 5 2 并使用配置文件 但我发现了一个非常奇怪的事情 my spring boot resources folder like this application yml 中的配置 spring pro