Grails插件获取插件的根目录或已安装的目录

时间:2012-02-10 22:42:24

标签: grails grails-plugin

我正在编写一个插件,我正在尝试在插件的根目录或已安装的目录中编写一个文件(不知道该引用什么)。我似乎无法弄清楚如何掌握这个价值。执行System.properties['base.dir']将导致实现Grails项目的根目录。所以现在我有两个目录:

C:/ PluginProject /

C:/ GrailsAppThatUsesPlugin /

我的理解是,当它成为分布式插件时,用户同样会有两个目录:

GRAILS_HOME / Grails的版本/项目/ PROJECTNAME /插件/为myplugin /

C:/ GrailsAppThatUsesPlugin /

在我的插件项目中,我需要创建一个文件。它需要在我的插件中,因为我正在编写的文件需要引用我的插件提供的其他文件。我尝试过的一些没有用的东西是:

  1. System.properties['base.dir']
  2. new File("")
  3. 在插件中的groovy脚本中,您可以简单地引用pluginNamePluginDir,但我正试图从POGO访问它。
  4. 查看所有System.properties没有人拥有插件目录
  5. grailsApplication似乎也不包含此类信息。
  6. 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:12)

这对我有用(就地插件和常规插件):

import org.codehaus.groovy.grails.plugins.GrailsPluginUtils

GrailsPluginUtils.pluginInfos.find { it.name == pluginName }.pluginDir

答案 1 :(得分:4)

您可以使用:

import org.codehaus.groovy.grails.plugins.PluginManagerHolder

def pluginManager = PluginManagerHolder.pluginManager
def plugin = pluginManager.getGrailsPlugin(pluginName)
def pluginDir = plugin.descriptor.file.parentFile

插件名称的格式必须为'spring-security-core',而不是'springSecurityCore'