2013-07-11 8 views
7

मैं एक ग्रैडल प्लगइन लिख रहा हूं और मैं ग्राडल प्रोजेक्ट के अंदर प्लगइन के उपयोगकर्ता मार्गदर्शिका और स्रोत कोड को पढ़कर ग्रैडल सीख रहा हूं।ग्रैडल प्लगइन: कन्वेंशन बनाम एक्सटेंशन

  • कन्वेंशन (JavaBasePlugin द्वारा निर्धारित और JavaPlugin द्वारा प्रयुक्त)
  • एक्सटेंशन (द्वारा निर्धारित:

    स्रोत कोड में, मैं इस परियोजना के गुण जोड़ने के 2 तरीके पाया AnnoncePlugin और BuildAnnouncementsPlugin द्वारा उपयोग किया जाता है)।

मुझे उनके बीच का अंतर और किस स्थिति के लिए उपयोग करने के लिए अंतर नहीं समझता है। क्या कोई समझा सकता है?

पीएस: क्या कोई कृपया एसओ में "gradle-plugin" टैग जोड़ सकता है?

उत्तर

7

मैं forum of Gradle पर एक जवाब मिला:

एक्सटेंशन और परंपराओं समान (लेकिन समान नहीं) तरीके गतिशील बनाने के मॉडल का विस्तार कर रहे हैं। एक्सटेंशन नई अवधारणा हैं और बड़े पैमाने पर सम्मेलनों को प्रतिस्थापित कर चुके हैं। संक्षेप में, केवल एक्सटेंशन का उपयोग करें, सम्मेलनों का उपयोग न करें।

[...]

विस्तार एक मनमाना (आमतौर पर उपयोगकर्ता परिभाषित) वर्ग है कि एक उपयोगकर्ता-निर्धारित नाम के तहत निर्माण मॉडल से जुड़ी है का एक उदाहरण है। विस्तार वर्ग मनमानी तरीकों को परिभाषित कर सकता है। मान लें कि यह किसी प्रोजेक्ट ऑब्जेक्ट से जुड़ा हुआ है, एक एक्सटेंशन आपको project.foo.someMethod जोड़ने की अनुमति देता है, लेकिन project.someMethod नहीं। चूंकि प्रत्येक एक्सटेंशन का अपना नामस्थान होता है (इस मामले में foo), नाम टकराव का मौका बहुत कम हो जाता है (सम्मेलनों की तुलना में)।

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