Grails-如何在部署WAR文件后加载.properties文件

Grails-如何在部署WAR文件后加载.properties文件,grails,properties,war,Grails,Properties,War,因此,我使用grails.config.locations=[“文件:${basedir}/web-app/web-INF/app.properties”]加载app.properties文件 但是当我通过创建WAR文件进行部署时,它有一个不同的目录结构,其中app.properties文件位于WEB-INF/app.properties下,它找不到该文件 首先,运行WAR文件时未定义${basedir},其次,路径不同。 我尝试过更改路径,还删除了${basedir},等等。有人知道如何获取在

因此,我使用grails.config.locations=[“文件:${basedir}/web-app/web-INF/app.properties”]加载app.properties文件

但是当我通过创建WAR文件进行部署时,它有一个不同的目录结构,其中app.properties文件位于WEB-INF/app.properties下,它找不到该文件

首先,运行WAR文件时未定义${basedir},其次,路径不同。 我尝试过更改路径,还删除了${basedir},等等。有人知道如何获取在运行grails时以及在部署为WAR文件时都能工作的属性文件吗


非常感谢。

两种可能的方法:

您可以确保属性文件位于正在运行的JVM的类路径中。您可以通过java-Dclasspath=/path/to/property/file:$classpath在命令行上添加到类路径

    Properties props = new Properties();
    URL url = ClassLoader.getSystemResource(propsName);
    props.load(url.openStream());
    return props;
您可以在环境变量(System.getenv('FILELOCATION')中将位置指定为绝对值。

请参见:

//Config.groovy
grails.config.locations =
["file:shared/TZLibConfig.groovy"]

//BuildConfig.groovy
grails.war.resources = { stagingDir, args ->
    copy(todir: "${stagingDir}/WEB-INF/shared"){
        fileset(dir:"shared",includes:"**")
    }
}