gpt4 book ai didi

configuration - grails/外部配置/grails.config.locations - 绝对路径文件 "Does not exist"?

转载 作者:行者123 更新时间:2023-12-04 05:30:31 25 4
gpt4 key购买 nike

我正在尝试使用 Grails 的内置机制在部署的 WAR 文件之外加载外部配置文件(*.groovy 和 *.properties)。文档暗示这只是设置 grails.config.locations 的一种情况。用合适的classpath:file:路径。

我已经配置了 Config.groovy:

String externalConfigLocation = System.getProperty("SYSTEM_PROPERTY_KEY")
if (!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}
if (classpathExternalConfigLocation) {
String pathToResource = "\"file:${basedir}" + File.separator + externalConfigLocation+"\""

print "Loading external configuration file: ${pathToResource}\n"
grails.config.locations << pathToResource
}

但是,这不起作用,错误消息指示文件“不存在”。但是,打印存储在 grails.config.locations 中的绝对路径表示确实如此。我尝试了一些组合:
  • classpath:configurationFile.properties
  • file:c:\path_to_file\configurationFile.properties
  • c:\path_to_file\configurationFile.properties

  • 但在所有这些情况下都找不到文件。

    很奇怪 - 建议赞赏。或有关如何调试的建议。

    最佳答案

    这是我通常的做法:

    grails.config.locations = ["classpath:${appName}-config.groovy",
    "file:./${appName}-config.groovy"]
    if (System.properties["${appName}.config.location"]) {
    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
    }

    这让我可以在项目根目录中放置一个文件,以便在开发时(使用文件:位置)在本地自定义属性,并在部署为 war 时在服务器的类路径中放置一个文件。 Tomcat 的 lib 文件夹位于其类路径中,因此如果您使用 Tomcat,这是放置文件的好地方。通过将应用程序名称放在文件中,您可以拥有多个配置文件而不会相互干扰。

    请务必将本地配置文件添加到 svn:ignore 或 .gitignore,以免将其 checkin 源代码管理。然后,每个开发人员都可以拥有自己的设置(或仅使用默认设置)而不会影响其他人。

    这是将数据库密码和其他生产值具体化的好方法。应用程序部署者(理想情况下不是开发人员)管理文件及其内容,这避免了将密码 checkin 源代码管理。比使用 JNDI IMO 好得多。

    关于configuration - grails/外部配置/grails.config.locations - 绝对路径文件 "Does not exist"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807267/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com