ग्रेडल - प्लगइन्स

प्लगइन कुछ भी नहीं है लेकिन कार्यों का सेट है, लगभग सभी उपयोगी कार्य जैसे कि कार्यों को संकलित करना, डोमेन ऑब्जेक्ट सेट करना, स्रोत फ़ाइलें सेट करना, आदि प्लगइन्स द्वारा नियंत्रित किए जाते हैं। एक परियोजना के लिए एक प्लगइन लागू करने का मतलब है कि प्लगइन परियोजना की क्षमताओं का विस्तार करने की अनुमति देता है। प्लगइन्स कर सकते हैं जैसे कि -

  • मूल ग्रैडल मॉडल का विस्तार करें (जैसे नए डीएसएल तत्व जो कॉन्फ़िगर किए जा सकते हैं) जोड़ें।
  • रूपांतरण के अनुसार परियोजना को कॉन्फ़िगर करें (जैसे नए कार्य जोड़ें या समझदार चूक को कॉन्फ़िगर करें)।
  • विशिष्ट कॉन्फ़िगरेशन लागू करें (जैसे संगठनात्मक रिपॉजिटरी जोड़ें या मानकों को लागू करें)।

प्लगइन्स के प्रकार

ग्रैडल, स्क्रिप्ट प्लगइन्स और बाइनरी प्लगइन्स में दो प्रकार के प्लगइन्स हैं। स्क्रिप्ट प्लगइन्स एक अतिरिक्त बिल्ड स्क्रिप्ट है जो बिल्ड में हेरफेर करने के लिए एक घोषणात्मक दृष्टिकोण देता है। यह आमतौर पर एक बिल्ड के भीतर उपयोग किया जाता है। बाइनरी प्लगइन्स कक्षाएं हैं जो प्लगइन इंटरफ़ेस को लागू करती हैं और बिल्ड में हेरफेर करने के लिए प्रोग्रामेटिक दृष्टिकोण अपनाती हैं। बाइनरी प्लगइन्स बिल्ड स्क्रिप्ट के साथ प्रोजेक्ट पदानुक्रम के साथ या बाह्य रूप से प्लग इन JAR में रह सकते हैं।

प्लगइन्स को लागू करना

Project.apply()एपीआई विधि का उपयोग विशेष प्लगइन को लागू करने के लिए किया जाता है। आप कई बार एक ही प्लगइन का उपयोग कर सकते हैं। दो प्रकार के प्लगइन्स हैं एक स्क्रिप्ट स्क्रिप्ट और दूसरा बाइनरी प्लगइन है।

स्क्रिप्ट प्लगइन्स

स्क्रिप्ट प्लगिन को स्थानीय फाइल सिस्टम पर या दूरस्थ स्थान पर स्क्रिप्ट से लागू किया जा सकता है। फ़ाइलसिस्टम स्थान प्रोजेक्ट निर्देशिका के सापेक्ष होते हैं, जबकि दूरस्थ स्क्रिप्ट स्थान HTTP URL निर्दिष्ट करते हैं। निम्नलिखित कोड स्निपेट पर एक नज़र डालें। इसका उपयोग करने के लिए किया जाता हैother.gradleनिर्माण स्क्रिप्ट के लिए प्लगइन। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

apply from: 'other.gradle'

बाइनरी प्लगइन्स

प्रत्येक प्लगइन को प्लगइन आईडी द्वारा पहचाना जाता है कुछ कोर प्लगइन्स इसे लागू करने के लिए छोटे नामों का उपयोग कर रहे हैं और कुछ सामुदायिक प्लग इन प्लगइन आईडी के लिए पूरी तरह से योग्य नाम का उपयोग कर रहे हैं। कुछ समय यह प्लगइन की कक्षा को निर्दिष्ट करने की अनुमति देता है।

निम्नलिखित कोड स्निपेट पर एक नज़र डालें। यह दिखाता है कि अपने प्रकार का उपयोग करके जावा प्लगइन कैसे लागू किया जाए। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

apply plugin: JavaPlugin

संक्षिप्त नाम का उपयोग करके कोर प्लगइन को लागू करने के लिए निम्नलिखित कोड पर एक नज़र डालें। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

plugins {
   id 'java'
}

संक्षिप्त नाम का उपयोग करके सामुदायिक प्लगइन को लागू करने के लिए निम्नलिखित कोड पर एक नज़र डालें। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

plugins {
   id "com.jfrog.bintray" version "0.4.1"
}

कस्टम प्लगइन्स लिखना

कस्टम प्लगइन बनाते समय, आपको प्लगइन का कार्यान्वयन लिखना होगा। ग्रैडल प्लगइन को इंस्टैंट करता है और प्लग इन का उपयोग प्लगिन.प्लाई () विधि से करता है। निम्नलिखित नमूने में एक ग्रीटिंग प्लगइन है, जो परियोजना में एक हैलो कार्य जोड़ता है। निम्नलिखित कोड पर एक नज़र डालें। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      project.task('hello') << {
         println "Hello from the GreetingPlugin"
      }
   }
}

उपरोक्त स्क्रिप्ट को निष्पादित करने के लिए निम्न कोड का उपयोग करें।

C:\> gradle -q hello

आउटपुट:

Hello from the GreetingPlugin

बिल्ड से इनपुट प्राप्त करना

अधिकांश प्लगइन्स को बिल्ड स्क्रिप्ट से कॉन्फ़िगरेशन समर्थन की आवश्यकता होती है। ग्रैडल प्रोजेक्ट में एक संबंधित ExtensionContainer ऑब्जेक्ट है जो प्लगइन्स को पास की जाने वाली सभी सेटिंग और गुणों को ट्रैक करने में मदद करता है।

आइए प्रोजेक्ट में एक साधारण एक्सटेंशन ऑब्जेक्ट जोड़ें। यहां हम परियोजना के लिए एक ग्रीटिंग एक्सटेंशन ऑब्जेक्ट जोड़ते हैं, जो आपको ग्रीटिंग को कॉन्फ़िगर करने की अनुमति देता है। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

apply plugin: GreetingPlugin

greeting.message = 'Hi from Gradle'

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      // Add the 'greeting' extension object
      project.extensions.create("greeting", GreetingPluginExtension)
		
      // Add a task that uses the configuration
      project.task('hello') << {
         println project.greeting.message
      }
   }
}

class GreetingPluginExtension {
   def String message = 'Hello from GreetingPlugin'
}

उपरोक्त स्क्रिप्ट को निष्पादित करने के लिए निम्न कोड का उपयोग करें।

C:\> gradle -q hello

आउटपुट:

Hi from Gradle

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

ग्रैडल प्रत्येक एक्सटेंशन ऑब्जेक्ट के लिए कॉन्फ़िगरेशन क्लोजर जोड़ता है, जिससे आप सेटिंग्स को एक साथ समूहित कर सकते हैं। निम्नलिखित कोड पर एक नज़र डालें। इस कोड का उपयोग करेंbuild.gradle फ़ाइल।

apply plugin: GreetingPlugin

greeting {
   message = 'Hi'
   greeter = 'Gradle'
}

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      project.extensions.create("greeting", GreetingPluginExtension)
		
      project.task('hello') << {
         println "${project.greeting.message} from ${project.greeting.greeter}"
      }
   }
}

class GreetingPluginExtension {
   String message
   String greeter
}

उपरोक्त स्क्रिप्ट को निष्पादित करने के लिए निम्न कोड का उपयोग करें।

C:\> gradle -q hello

आउटपुट:

Hello from Gradle

मानक ग्रेडल प्लगइन्स

अलग-अलग प्लगइन्स हैं जो ग्रैडल वितरण में शामिल हैं।

भाषा प्लगइन्स

ये प्लगइन्स विभिन्न भाषाओं के लिए समर्थन जोड़ते हैं जिन्हें JVM में संकलित और निष्पादित किया जा सकता है।

प्लगइन आईडी स्वचालित रूप से लागू होता है विवरण
जावा जावा आधार एक परियोजना के लिए जावा संकलन, परीक्षण और बंडल क्षमताओं को जोड़ता है। यह अन्य ग्रैडल प्लगइन्स में से कई के लिए आधार के रूप में कार्य करता है।
ग्रूवी जावा, ग्रूवी आधार ग्रूवी परियोजनाओं के निर्माण के लिए समर्थन जोड़ता है।
स्केला जावा, स्केला आधार स्काला परियोजनाओं के निर्माण के लिए समर्थन जोड़ता है।
antlr जावा Antlr का उपयोग करके पार्सर पैदा करने के लिए समर्थन जोड़ता है।

भाषा प्लगइन्स सेते हुए

ये प्लगइन्स विभिन्न भाषाओं के लिए समर्थन जोड़ते हैं।

प्लगइन आईडी स्वचालित रूप से लागू होता है विवरण
कोडांतरक - एक परियोजना के लिए मूल विधानसभा भाषा क्षमताओं को जोड़ता है।
सी - एक परियोजना के लिए सी स्रोत संकलन क्षमताओं को जोड़ता है।
सीपीपी - एक परियोजना के लिए C ++ स्रोत संकलन क्षमताओं को जोड़ता है।
उद्देश्य सी - एक परियोजना के लिए उद्देश्य-सी स्रोत संकलन क्षमताओं को जोड़ता है।
उद्देश्य-सीपीपी - एक परियोजना के लिए उद्देश्य-सी ++ स्रोत संकलन क्षमताओं को जोड़ता है।
windows-संसाधन - देशी बायनेरिज़ में विंडोज संसाधनों को शामिल करने के लिए समर्थन जोड़ता है।