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

Jar*_*son 6 grails grails-plugin

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

C:/ PluginProject /

C:/ GrailsAppThatUsesPlugin /

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

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

C:/ GrailsAppThatUsesPlugin /

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

  1. System.properties['base.dir']
  2. new File("")
  3. 在插件中的一个groovy脚本中,您可以简单地参考,pluginNamePluginDir但我试图从POGO访问它.
  4. 看着所有System.properties这些都没有插件目录
  5. grailsApplication似乎也不包含此类信息.

任何帮助是极大的赞赏.

小智 12

这适用于我(就地插件和常规插件):

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

GrailsPluginUtils.pluginInfos.find { it.name == pluginName }.pluginDir
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我使用这种方式来避免查找操作:`org.codehaus.groovy.grails.plugins.GrailsPluginUtils.getPluginDirForName(pluginName).file.absolutePath` (4认同)

Bur*_*ith 4

你可以使用这个:

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

def pluginManager = PluginManagerHolder.pluginManager
def plugin = pluginManager.getGrailsPlugin(pluginName)
def pluginDir = plugin.descriptor.file.parentFile
Run Code Online (Sandbox Code Playgroud)

插件名称必须采用以下形式'spring-security-core',而不是'springSecurityCore'