【问题标题】:Property file configuration after build, before deployment构建后,部署前的属性文件配置
【发布时间】:2016-01-17 10:49:33
【问题描述】:

某些属性已包含在属性文件中,由 Spring 的 ApplicationConfiguration 文件(基于 java 的配置)引用。这些主要是 url 和数据库属性,会因部署环境而异。

计划是将属性文件放在类路径中。使用 build(Jenkins) 后,我将如何更改属性文件。我应该能够更改属性文件并在相应的环境中再次部署它,而无需进行新的构建。请问有什么建议吗?

【问题讨论】:

  • 将属性文件放在你的tomcat的conf目录下。该路径应该在它的类路径中
  • 您是否正在寻找比手动替换 jar/war 中的文件更复杂的东西(它是一个 ZIP 文件,所以任何存档者都会这样做)。如果有,您的要求是什么?
  • @JiriTousek 没有。所以我只需要获取war文件,解压缩它,编辑属性文件,然后再次压缩它?但是我想把它作为 tomcat 属性的一部分会更方便,这样部署团队就可以根据环境来处理?
  • @Jens 也这样做了。您能否检查我的 cmets 以获取以下答案?
  • @Chillax Plaese 验证 conf 目录是否在 classptah 中

标签: spring tomcat properties properties-file


【解决方案1】:

Spring 文档提供了大量关于外部化配置选项的详细信息:

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

可用的选项包括将application.properties / application.yml 放在类路径的根目录下,因此最简单的选择可能是将其放在您的tomcat conf 目录中。

【讨论】:

  • 谢谢。我也在做同样的事情。已经把它放在tomcat的conf目录下。我在我的 Spring 配置文件中使用 @PropertySource("classpath:application.properties") 来引用它。但随后得到以下错误:java.io.FileNotFoundException:类路径资源[application.properties] 无法打开,因为它不存在。我还能如何找回它?
  • 如果 Tomcat 的 conf 目录不在您的应用程序的类路径中,则可能值得使用 file: 和完全限定的目录进行测试。除此之外,也许要确保catalina.properties 加载您的环境属性文件。见:mulesoft.com/tcat/tomcat-classpath
【解决方案2】:

我推荐这个近似值:Override Properties file in Spring WebApp at Runtime

您只需要一些东西来指向您的文件。我使用了一个 JNDI 属性。 我认为改变环境之间的战争是一个非常糟糕的主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多