我的Config.groovy文件中包含以下内容:
grails.config.locations = [ "classpath:env.groovy" ]现在,我到底应该把"env.groovy“放在哪里,这样它才能在grails run-app期间在CLASSPATH上可用?这里的文档非常缺乏。
我可以通过在$APP_HOME/etc中放置"env.groovy“,然后运行:
$ grails -classpath ./etc run-app这看起来有点老土,但我可以接受...但是,当我使用Grails eclipse插件(STS)启动run-app时,我无法获得任何这样的配置:
Unable to load specified config location classpath:env.groovy : class path resource [env.groovy] cannot be opened because it does not exist我已经看过here,here,here和here的相关帖子,但答案并不令人满意。
我正在寻找一个基于CLASSPATH的解决方案,将与‘运行应用程序’在开发模式(命令行和从eclipse)。我知道如何为我的部署servlet容器设置CLASSPATH,所以这不是问题。
发布于 2011-03-08 08:47:29
Eric,我们这样做的方式是指定一个带有配置文件位置的Java system属性,然后我们在Config.groovy上获取该属性,类似于:
if (System.properties["application.config.location"]) {
grails.config.locations = [
"file:" + System.properties["application.config.location"] + "${appName}-config.groovy"
]
}正如您所看到的,我们只设置了Java system属性中的文件所在的文件夹,并且按照约定,文件名应该是应用程序名+ "-config.groovy",但如果需要,您可以指定整个路径,包括系统属性中的文件名。
然后,在运行应用程序时,只需像这样设置变量:
grails -Dapplication.config.location=/Users/eric/ run-app正如你在代码中看到的,有一个if语句,它阻止你在没有定义Java系统属性变量的情况下查找配置文件,这样你就可以不使用外部配置文件而只使用Config.groovy中定义的配置设置来运行你的应用程序。
如果您在Eclipse或IntelliJ中运行您的应用程序,则需要将此变量作为JVM变量传递。
这是一个不同的选择,不必更改类路径或在类路径中包含配置文件,以便应用程序拾取它。
发布于 2012-02-20 20:58:28
我们可以在_Events.groovy中添加一个编译后事件,将外部配置文件复制到类路径中,如下所示:
eventCompileEnd = {
ant.copy(todir:classesDirPath) {
fileset(file:"${basedir}/grails-app/conf/override.properties")
}}您可以在here找到更多详细信息
发布于 2011-03-06 01:34:06
项目主页中应该有一个名为.classpath的文件。
我不确定,但你看一下那个文件。
https://stackoverflow.com/questions/5204675
复制相似问题