我正在编写一个插件,我正在尝试在插件的根目录或已安装的目录中编写一个文件(不知道该引用什么)。我似乎无法弄清楚如何掌握这个价值。执行System.properties['base.dir']
将导致实现Grails项目的根目录。所以现在我有两个目录:
C:/ PluginProject /
C:/ GrailsAppThatUsesPlugin /
我的理解是,当它成为分布式插件时,用户同样会有两个目录:
GRAILS_HOME / Grails的版本/项目/ PROJECTNAME /插件/为myplugin /
C:/ GrailsAppThatUsesPlugin /
在我的插件项目中,我需要创建一个文件。它需要在我的插件中,因为我正在编写的文件需要引用我的插件提供的其他文件。我尝试过的一些没有用的东西是:
System.properties['base.dir']
new File("")
pluginNamePluginDir
,但我正试图从POGO访问它。 System.properties
没有人拥有插件目录非常感谢任何帮助。
答案 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'