【问题标题】:How to exclude default application.properties add custom properties file using profiles in maven for spring boot project?如何排除默认 application.properties 使用 Maven 中的配置文件为 Spring Boot 项目添加自定义属性文件?
【发布时间】:2016-08-16 08:34:59
【问题描述】:

我使用 Spring Boot 开发了一个 Web 应用程序。我在 src/main/resources staging、qa、production 中有三个资源文件夹,其中包含特定环境的应用程序属性和日志记录配置。除了这些文件夹,我在资源文件夹中有 application.properties 和日志记录配置,我将其用于开发环境。我想使用spring-boot-maven插件根据环境打包war文件。我是 maven 的新手,任何帮助将不胜感激?

【问题讨论】:

    标签: java maven spring-boot war spring-boot-maven-plugin


    【解决方案1】:

    对流是application-{profileName}.properties

    第 10 点和第 11 点:

    http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

    例如application-test.properties 它覆盖了application.propertiespom.xml 中创建个人资料

    简介: http://maven.apache.org/guides/introduction/introduction-to-profiles.html

    【讨论】:

    • 它适用于 application.properties。我应该为其他配置文件做什么(例如日志记录)。
    • 你能告诉我更多关于这个logging configuration for the specific environment的信息吗?你确定你不能在application.properties 中创建变量来做这些事情并根据你的需要改变它们吗?
    • 日志文件路径在每个环境中会有所不同。我们可以在 application.properties 文件中创建变量,但是 application.properties 不允许完全配置 log4j2,所以我使用每个环境特定的 xml 配置文件。如果我想在外部容器中部署战争,我无法在部署期间传递活动配置文件信息。您有什么解决方案可以在打包战争时仅传递特定于环境的属性吗?
    【解决方案2】:

    您可以使用 Spring 配置文件,而不是使用 Maven 将不同的文件夹添加到每个环境的类路径中。

    首先为每个环境创建不同的application.properties,例如:

    • application-staging.properties
    • application-qa.properties
    • application-production.properties

    对于日志记录,您可以使用logging.config 属性。因此,您可以在 application-staging.properties 中使用:

    logging.config=classpath:logback-staging.xml
    

    在其他属性文件中,您可以使用不同的logging.config 属性。

    现在只需使用 spring.profiles.active 属性运行您的应用程序。


    但是,更简单的解决方案是使用externalized configuration。不必每次要更改特定配置文件的配置时都重新构建,您可以通过在正确环境中的 JAR/WAR 旁边放置一个 application.properties 文件来外部化它,而不是放在您的类路径。 Spring boot 会自动选择这个。

    现在您还可以通过在您的 JAR/WAR 旁边放置一个 logback.xml(或 log4j2.xml,...)文件来外部化您的日志记录配置,并且只需配置您的(外部化)应用程序属性:

    logging.config=file:logback.xml
    

    这允许您编辑您的配置和日志记录,而无需更改您的 JAR/WAR。

    【讨论】:

    • 在外部tomcat容器中部署时,我只是将war文件添加到webapps文件夹并重新启动容器。所以,我必须在打包战争时添加正确的 application.properties 文件。如何在打包期间实现这一点。 >>>> 只需使用 spring.profiles.active 运行您的应用程序,这意味着 mvn spring-boot:run -Dspring.profiles.active=staging(这是您要说的)
    • 是的,使用-Dspring.profiles.active=staging 应该可以。您还应该能够在 Tomcat 容器中配置此属性。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2020-02-13
    • 2020-05-03
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2019-06-28
    • 2019-01-05
    相关资源
    最近更新 更多