2012-02-10 16 views
5

जाओ मैं एक प्लगइन लिख रहा हूँ और मैं प्लगइन के रूट या स्थापित निर्देशिका के अंदर एक फ़ाइल लिखने की कोशिश कर रहा हूँ (यकीन नहीं क्या करने के लिए इस का उल्लेख करने के लिए)। मैं इस मूल्य को पकड़ने के तरीके को समझने के लिए प्रतीत नहीं कर सकता। System.properties['base.dir'] करने से परिणामस्वरूप Grails प्रोजेक्ट की रूट निर्देशिका लागू होगी।Grails प्लगइन प्लगइन का रूट या स्थापित निर्देशिका

C:/PluginProject/

सी: तो अभी मैं दो निर्देशिका है/GrailsAppThatUsesPlugin/

यह मेरी समझ है कि जब यह हो जाता है एक वितरित एक उपयोगकर्ता प्लगइन इसी तरह दो निर्देशिकाओं होगा है:

GRAILS_HOME/grails-संस्करण/परियोजनाओं/ProjectName/plugins/myPlugin/

सी:/GrailsAppThatUsesPlugin/

मेरी प्लगइन परियोजना के अंदर मुझे एक फाइल बनाने की जरूरत है। इसे मेरी प्लगइन के अंदर होना चाहिए क्योंकि जिस फ़ाइल को मैं लिख रहा हूं उसे अन्य फाइलों को संदर्भित करने की आवश्यकता है जो मेरी प्लगइन प्रदान करता है। कुछ चीजें है कि मैं कोशिश की है कि काम नहीं किया हैं:

  1. System.properties['base.dir']
  2. new File("")
  3. एक प्लगइन के भीतर एक ग्रूवी स्क्रिप्ट में आप बस pluginNamePluginDir का उल्लेख कर सकते, लेकिन मैं इस का उपयोग करने की कोशिश कर रहा हूँ एक पीओजीओ से।
  4. System.properties में से सभी को देखकर उनमें से कोई भी प्लगइन निर्देशिका
  5. grails एप्लिकेशन में इस प्रकार की जानकारी शामिल नहीं है।

किसी भी मदद की बहुत सराहना कर रहा है। नहीं 'springSecurityCore'

उत्तर

3

आप इस का उपयोग कर सकते हैं

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

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

मैं एक परीक्षण में इस कोड डाल दिया और 'plugin.descriptor' हमेशा रिक्त है। 'प्लगइन' शून्य नहीं है। अगर मैं 'प्लगइन .getPluginDir()' करता हूं जो एनपीई फेंकता है। कोई विचार? क्या मुझे डिस्क्रिप्टर के लिए कुछ उपलब्ध कराने की आवश्यकता है? आपकी सहायताके लिए धन्यवाद! –

+0

मैं इस तरह कुछ उपयोग कर समाप्त हुआ: http://stackoverflow.com/questions/1163093/how-do-you-get-the-path-the-running-script-in-groovy। यह मुझे वह रास्ता मिला जो मैं ढूंढ रहा था। मैं आवश्यक जानकारी प्राप्त करने के लिए PluginManagerHolder का उपयोग करने में सक्षम था। धन्यवाद बर्ट! –

11

यह मेरे लिए काम किया (दोनों में जगह और नियमित रूप से प्लग-इन)

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' का हो गया है,:

+4

धन्यवाद। मैं खोज ऑपरेशन से बचने के लिए इस तरह से उपयोग कर रहा हूं: 'org.codehaus.groovy.grails.plugins.GrailsPluginUtils.getPluginDirForName (pluginName) .file.absolutePath' – rodvlopes