首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何派生Config.groovy内相对目录的物理路径?

如何派生Config.groovy内相对目录的物理路径?
EN

Stack Overflow用户
提问于 2012-05-17 10:31:26
回答 3查看 4.3K关注 0票数 0

我正在尝试使用来自GitHub的源代码来设置Weceem。它需要上载目录的物理路径定义,以及用于写入可搜索索引的目录。上载的默认设置为:

代码语言:javascript
复制
weceem.upload.dir = 'file:/var/www/weceem.org/uploads/'

我想使用相对路径来定义它们,比如WEB-INF/resources/uploads。我尝试了一种我以前使用的方法,用于访问具有以下相对路径的目录:

代码语言:javascript
复制
  File uploadDirectory = ApplicationHolder.application.parentContext.getResource("WEB-INF/resources/uploads").file
  def absoluteUploadDirectory = uploadDirectory.absolutePath
  weceem.upload.dir = 'file:'+absoluteUploadDirectory

但是,ApplicationHolder.application下的'parentContext‘为NULL。有没有人能提供一个解决方案,让我可以使用相对路径?

EN

回答 3

Stack Overflow用户

发布于 2012-05-17 12:20:08

看看你应该拥有的Config.groovy (可能有评论)

代码语言:javascript
复制
// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts

// "classpath:${appName}-config.properties", "classpath:${appName}-config.groovy",
grails.config.locations = [
        "file:${userHome}/.grails/${appName}-config.properties",
        "file:${userHome}/.grails/${appName}-config.groovy"
]

在部署服务器中创建Conig文件

代码语言:javascript
复制
"${userHome}/.grails/${appName}-config.properties"

并在该配置文件中定义您的属性(甚至不是相对路径)。

票数 3
EN

Stack Overflow用户

发布于 2012-05-17 12:43:13

为了补充阿拉姆·阿拉比安的回应,这是正确的,但缺乏解释:

Grails应用程序没有像PHP应用程序那样的“本地”目录。它们应该(用于生产)部署在servlet容器中。该内容的位置不应该被认为是可写的,因为它可能会在下一次部署时被清除。

简而言之:将您部署的应用程序视为已编译的二进制文件。

取而代之的是,在你的服务器上选择一个特定的位置来存放上传,最好是在web服务器的路径之外,这样它们就不能被直接访问。这就是为什么Weceem默认使用/var/www/weceem.org/下的自定义文件夹。

如果使用externalized configuration技术配置路径,则可以拥有特定于服务器的路径,并在开发计算机上包含不同的路径。

然而,在这两种情况下,您都应该使用绝对路径,或者至少是相对于已知目录的相对路径。

票数 2
EN

Stack Overflow用户

发布于 2012-05-17 22:46:23

代码语言:javascript
复制
            String base = System.properties['base.dir']     
            println "config: ${base}/web-app/config/HookConfig.grooy"
            String str = new File("${base}/web-app/config/HookConfig.groovy").text
            return new ConfigSlurper().parse(str)

代码语言:javascript
复制
def grailsApplication    
private getConfig() {
            String str = grailsApplication.parentContext.getResource("config/HookConfig.groovy").file.text
            return new ConfigSlurper().parse(str)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10629151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档