Я пишу плагин, и я пытаюсь написать файл внутри корневого каталога или установочного каталога плагина (не уверен, к чему это относится). Я не могу понять, как это удержать. Выполнение System.properties['base.dir']
приведет к созданию корневого каталога проекта Grails. Так что сейчас у меня есть две директории:Плагин Grails Получить корневой каталог или установленный каталог плагинов
C:/PluginProject/
C:/GrailsAppThatUsesPlugin/
Это мое понимание того, что, когда это становится распределенным плагин пользователю будет так же иметь две директории:
GRAILS_HOME/Grails-версия/проекты/Projectname/плагины/MyPlugin/
C:/GrailsAppThatUsesPlugin/
Внутри моего проекта плагина мне нужно создать файл. Он должен быть внутри моего плагина, потому что файл, который я пишу, должен ссылаться на другие файлы, которые предоставляет мой плагин. Несколько вещей, которые я пробовал, не работал, являются:
System.properties['base.dir']
new File("")
- В заводной сценария в виде плагина вы можете просто сослаться на
pluginNamePluginDir
, но я пытаюсь получить доступ к этому от ПОГО. - Глядя на все
System.properties
, ни один из них не имеет каталога плагинов - grailsApplication, похоже, не содержит этого типа информации.
Любая помощь очень ценится.
Я положил этот код в тест, и 'plugin.descriptor' всегда имеет значение null. «Плагин» не равен нулю. Также, если я делаю 'plugin.getPluginDir()', который бросает NPE. Есть предположения? Нужно ли мне настраивать что-то, чтобы дескриптор был доступен? Спасибо за вашу помощь! –
В итоге я использовал что-то вроде этого: http://stackoverflow.com/questions/1163093/how-do-you-get-the-path-the-running-script-in-groovy. Это дало мне путь, который я искал. Я смог использовать PluginManagerHolder для получения другой информации, в которой я нуждался. Спасибо, Берт! –