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

spring boot始终使用相同的配置文件

经俊茂
2023-03-14

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

在application.yml中配置

spring:
  profiles:
    active: @profileActive@

application-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
spring:
  profiles: test
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2
    username: root
    password:

server:
  port: 8081
<!-- 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>
mvn clean package -Dmaven.test.skip=true -Ptest

看起来一切都还好。

但是当我尝试运行jar时,它总是使用dev概要文件,尽管application.yml显示我们现在使用test或prod概要文件。

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

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配置有什么问题。

提前感谢!

共有1个答案

魏毅
2023-03-14

试着像这样运行你的罐子

java -jar -Dspring.profiles.active=test yourapp.jar

或者将@profileactive@替换为所需配置文件的名称。

 类似资料:
  • Spring boot始终选择Application.yml文件中的最后一个配置文件,不管我如何排序。请帮忙。如果我再撕掉头发,我就一根也没有了。 使用spring-boot-starter-parent 1.5.1.发布 Maven 3.2.5 我的工件中只有一个application.yml。 我在日志:o.s.boot.springapplication.logStartupProfileI

  • 问题内容: 我正在尝试同时打开多个浏览器,但无法在多个窗口中浏览到该网站。 这是我的方法: 这样称呼它: 不幸的是,在打开第二个窗口后-显示超时错误: WebDriver.dll中发生类型’OpenQA.Selenium.WebDriverException’的第一次机会异常 附加信息:60秒后,对URL http:/ loca1host:50148 / session的远程WebDriver服务

  • 我一直在尝试获取我当前的位置更新,并按照Google的建议使用了融合位置提供商,但我无法获得任何更新。我在网上彻底搜索了,但找不到任何解决方案。融合提供商返回的位置甚至不接近我所在的位置,它显示了其他一些国家。有人能在这里帮我吗?

  • 我正在用SpringBoot配置Consor,并在这里找到了一个文档。即使浏览了其他资源,也没有找到其他配置或场景。 因此,我很好奇当springboot应用程序与consul集成时是否只有这些配置可用。我想深入了解,有人能让我知道任何其他可用的属性吗?

  • 我试图打开两个实例ChromeDriver具有相同的配置文件如下: 问题是第一个驱动程序工作并导航到Google,但在第二个驱动程序中,我在实例化第二个驱动程序时遇到以下异常: 附加信息:抛出了一个带有空响应的异常,该异常向远程WebDriver服务器发送HTTP请求以获取URLhttp://localhost:6949/session.异常的状态为ReceiveFailure,消息为:基础连接已

  • 我正在尝试将我的应用程序配置为具有两个构建配置文件:开发和生产。为此,我在src/main/resources文件夹下创建了两个子目录:src/main/resources/development和src/main/resources/production。每个子目录都有自己的。属性文件。 我使用命令mvn install-P${profile_here}构建应用程序 Maven将与所选配置文件相