2011-03-15 13 views
7

की विस्तारित कार्यक्षमता मैं जानना चाहूंगा, यदि यह संभव है और यदि एक grails प्लगइन की कार्यक्षमता बढ़ाने के लिए एक सामान्य तरीका है।Grails प्लगइन

मैंने हाल ही में टिप्पणी करने योग्य प्लगइन स्थापित किया है, लेकिन इसमें कुछ संशोधन करने की आवश्यकता है। चूंकि कोड को प्रोजेक्ट (लेकिन उपयोगकर्ता निर्देशिका में) के साथ एक साथ संग्रहीत नहीं किया जाता है, यदि प्लगइन अपडेट होने के बाद (या किसी अन्य मशीन पर प्रोजेक्ट इंस्टॉल किया गया है) के बाद, मैं इन्हें संशोधित करता हूं।

क्या किसी को कोई विचार है?

धन्यवाद, निकोलस

उत्तर

9

आप एक विरूपण साक्ष्य (जैसे एक डोमेन वर्ग) अपनी परियोजना में एक ही नाम के साथ एक बनाने के ओवरराइड करने के लिए चाहते हैं। प्लगइन्स को एप्लिकेशन कक्षाओं से अलग से संकलित किया जाता है और उनके कलाकृतियों को पहले पंजीकृत किया जाता है, इसलिए यदि मुख्य ऐप में कोई आर्टिफैक्ट है तो यह प्लगइन को प्रतिस्थापित करेगा। बस डोमेन कक्षाओं के लिए एक ही पैकेज का उपयोग करना सुनिश्चित करें, हालांकि यह नियंत्रकों या सेवाओं के लिए आवश्यक नहीं है।

4

यदि आप प्लगइन को पूरी तरह से संशोधित करना चाहते हैं, तो आप प्लगइन को फिर से कंपाइल करने और फिर अलग नाम के साथ ज़िप फ़ाइल में बनाने का प्रयास कर सकते हैं।

फिर आप स्रोत कोड से अनुकूलित-प्लगइन स्थापित कर सकते हैं। आप question here.

0

एक परियोजना में हमें अनुमत ईमेल पते की एक सूची की आवश्यकता है, कि ऐप को एक पर्यावरण (क्यूए) के लिए मेल भेजने की अनुमति थी, इसलिए परियोजना में शामिल विभिन्न पक्षों का परीक्षण किया जा सकता है किसी भी मेल के जोखिम के बिना ऐप हमारे ग्राहकों के ग्राहकों (अंत ग्राहकों) को भेजा जाएगा।

मेलिंग करने वाले सभी कोड-ब्लॉक को बदलने के लिए यह बहुत बड़ा काम था इसलिए मैंने मेल-प्लगइन (grails.plugin.mail.MailMessageBuilder) की कोर क्लास के लिए एक कस्टम विस्तारक लागू किया जिसने अनुमति की एक सूची ली ऐप की कॉन्फ़िगरेशन से ईमेल पते और मेल (toDestinationAddresses) भेजने से पहले पते को हल करने वाली विधि को ओवरराइड करें। इसके बाद मैंने एक फैक्टरी विधि (प्लगइन का) बदल दिया, जो मेलमेसेज बिल्डर्स का उत्पादन करता है, इसलिए उसने ग्रेल्स बूटस्ट्रैप में ग्रोवी मेटा क्लास के माध्यम से अपने कस्टम बिल्डर्स का उत्पादन किया।

यह एक साफ, गैर घुसपैठ करने वाला फिक्स था और यह अच्छी तरह से काम करता था।

संबंधित मुद्दे