【问题标题】:How does maven replace text @env@ in application.yml?maven如何替换application.yml中的文本@env@?
【发布时间】:2018-10-22 15:54:32
【问题描述】:

在 pom.xml 中定义了一些配置文件。

<profile>
  <id>test</id>
  <properties>
    <env>test</env>
  </properties>
</profile>

spring.profiles.active: @env@ 在 application.yml 和 bootstrap.yml 中定义。 当我运行mvn install -P test 时,application.yml 中的文本@env@ 将被test 替换。

它是如何工作的?

为什么它不适用于 bootstrap.xml?

【问题讨论】:

  • 我的假设是,您不应该在可以使用 Spring Boot 配置文件的地方使用配置文件,这些配置文件与 Spring Boot 的关系更好......
  • @khmarbaise 是的。但是像mvn package -P test这样打包时我必须设置spring.profiles.active的值。
  • 您应该在运行时通过命令行提供配置文件...阅读相关文档...

标签: maven spring-boot spring-cloud


【解决方案1】:

它适用于application.yml,因为您显然使用的是 Spring Boot Starter Parent。在此处查看 POM:https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-starters/spring-boot-starter-parent/pom.xml

神奇的部分是父 POM 中的 &lt;resources&gt; 配置。您会看到应用程序配置文件是通过过滤显式复制的。这就是maven-resources-plugin 解析这些文件中的占位符的原因。

如果您想添加更多像这样处理的文件,您可以将自己的 &lt;resources&gt; 部分添加到您的 POM 中,并通过更多文件模式对其进行扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2020-10-21
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多