ग्रेडल - स्क्रिप्ट बनाएँ

ग्रैडल दो चीजों को संभालने के लिए एक स्क्रिप्ट फ़ाइल बनाता है; एक हैprojects और एक अन्य है tasks। प्रत्येक ग्रैड बिल्ड एक या अधिक परियोजनाओं का प्रतिनिधित्व करता है। एक परियोजना एक पुस्तकालय JAR या एक वेब अनुप्रयोग का प्रतिनिधित्व करती है या यह एक ZIP का प्रतिनिधित्व कर सकती है जो अन्य परियोजनाओं द्वारा निर्मित JAR से इकट्ठी होती है। सरल शब्दों में, एक परियोजना विभिन्न कार्यों से बनी होती है। एक कार्य का अर्थ है एक कार्य जो एक निर्माण कार्य करता है। एक कार्य कुछ वर्गों को संकलित कर सकता है, एक JAR का निर्माण कर सकता है, Javadoc का निर्माण कर सकता है, या कुछ अभिलेखागार को प्रकाशित कर सकता है।

ग्रेडेल का उपयोग करता है Groovy language स्क्रिप्ट लिखने के लिए।

राइटिंग बिल्ड स्क्रिप्ट

बिल्डल्स का वर्णन करने के लिए ग्रेडल एक डोमेन विशिष्ट भाषा (डीएसएल) प्रदान करता है। यह एक निर्माण का वर्णन करने के लिए आसान बनाने के लिए Groovy भाषा का उपयोग करता है। ग्रैडल के प्रत्येक बिल्ड स्क्रिप्ट को UTF-8 का उपयोग करके एन्कोड किया गया है, ऑफ़लाइन सहेजा गया और बिल्ड.ग्रेड नाम दिया गया।

build.gradle

हम ग्रूवी स्क्रिप्ट का उपयोग करके कार्यों और परियोजनाओं के बारे में बता रहे हैं। आप ग्रैडल कमांड का उपयोग करके ग्रैड बिल्ड बना सकते हैं। यह कमांड एक फाइल कहलाती हैbuild.gradle। निम्नलिखित उदाहरण पर एक नज़र डालें जो एक छोटी स्क्रिप्ट का प्रतिनिधित्व करता है जो प्रिंट करता हैtutorialspoint। निम्नलिखित स्क्रिप्ट को नाम की फ़ाइल में कॉपी करें और सहेजेंbuild.gradle। यह बिल्ड स्क्रिप्ट एक कार्य नाम हैलो को परिभाषित करता है, जिसका उपयोग ट्यूटोरियलस्पर्श स्ट्रिंग को प्रिंट करने के लिए किया जाता है।

task hello {
   doLast {
      println 'tutorialspoint'
   }
}

कमांड प्रॉम्प्ट में निम्न कमांड निष्पादित करें। यह उपरोक्त स्क्रिप्ट को निष्पादित करता है। आपको इसे निष्पादित करना चाहिए, जहां build.gradle फ़ाइल संग्रहीत है।

C:\> gradle –q hello

आउटपुट:

tutorialspoint

यदि आपको लगता है कि कार्य ANT के लक्ष्य के समान है, तो यह सही है - Gradle कार्य ANT लक्ष्य के बराबर है।

आप शॉर्टकट निर्दिष्ट करके (प्रतीक का प्रतिनिधित्व करते हुए) इस हैलो कार्य को सरल बना सकते हैं <<) को doLastबयान। यदि आप इस शॉर्टकट को उपरोक्त कार्य में जोड़ते हैंhello यह निम्नलिखित स्क्रिप्ट की तरह दिखेगा।

task hello << {
   println 'tutorialspoint'
}

ऊपर के रूप में आप का उपयोग कर उपरोक्त स्क्रिप्ट निष्पादित कर सकते हैं gradle –q hello आदेश।

ग्रेड स्क्रिप्ट में मुख्य रूप से दो वास्तविक वस्तुओं का उपयोग किया जाता है, एक प्रोजेक्ट ऑब्जेक्ट है और दूसरा स्क्रिप्ट स्क्रिप्ट ऑब्जेक्ट है।

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

Script Object- ग्रैडल ने स्क्रिप्ट कोड को उन वर्गों में लिया जो स्क्रिप्ट इंटरफेस को लागू करते हैं और फिर निष्पादित करते हैं। इसका मतलब यह है कि स्क्रिप्ट इंटरफ़ेस द्वारा घोषित सभी गुण और तरीके आपकी स्क्रिप्ट में उपलब्ध हैं।

निम्न तालिका सूची को परिभाषित करती है standard project properties। ये सभी गुण आपकी बिल्ड स्क्रिप्ट में उपलब्ध हैं।

अनु क्रमांक। नाम प्रकार डिफ़ॉल्ट मान
1 परियोजना परियोजना परियोजना का उदाहरण है
2 नाम तार प्रोजेक्ट डायरेक्टरी का नाम।
3 पथ तार परियोजना का पूर्ण पथ।
4 विवरण तार परियोजना के लिए एक विवरण।
5 ProjectDir फ़ाइल निर्देशिका जिसमें बिल्ड स्क्रिप्ट होती है।
6 buildDir फ़ाइल ProjectDir / निर्माण
7 समूह वस्तु अनिर्दिष्ट
8 संस्करण वस्तु अनिर्दिष्ट
9 चींटी AntBuilder एक AntBuilder उदाहरण

Groovy मूल बातें

ग्रैड बिल्ड स्क्रिप्ट पूरी लंबाई के ग्रूवी एपीआई का उपयोग करते हैं। एक स्टार्टअप के रूप में, निम्नलिखित उदाहरणों पर एक नज़र डालें।

निम्नलिखित उदाहरण एक स्ट्रिंग को ऊपरी मामले में परिवर्तित करने के बारे में बताते हैं।

नीचे दिए गए कोड को कॉपी करें और सहेजें build.gradle फ़ाइल।

task upper << {
   String expString = 'TUTORIALS point'
   println "Original: " + expString
   println "Upper case: " + expString.toUpperCase()
}

कमांड प्रॉम्प्ट में निम्न कमांड निष्पादित करें। यह ऊपर दी गई स्क्रिप्ट को निष्पादित करता है। आपको इसे निष्पादित करना चाहिए, जहां build.gradle फ़ाइल संग्रहीत है।

C:\> gradle –q upper

आउटपुट:

Original: TUTORIALS point
Upper case: TUTORIALS POINT

निम्नलिखित उदाहरण 4 बार के लिए एक अंतर्निहित पैरामीटर ($ इसे) के मूल्य को प्रिंट करने के बारे में बताता है।

निम्नलिखित कोड को कॉपी करें और सहेजें build.gradle फ़ाइल।

task count << {
   4.times { 
      print "$it " 
   }
}

कमांड प्रॉम्प्ट में निम्न कमांड निष्पादित करें। यह ऊपर दी गई स्क्रिप्ट को निष्पादित करता है। आपको इसे निष्पादित करना चाहिए, जहां build.gradle फ़ाइल संग्रहीत है।

$ gradle –q count

आउटपुट:

0 1 2 3

ग्रूवी भाषा उन विशेषताओं में बहुत कुछ प्रदान करती है जिन पर कुछ महत्वपूर्ण विशेषताएं नीचे चर्चा की गई हैं।

Groovy JDK के तरीके

ग्रूवी मानक जावा कक्षाओं में बहुत सारे उपयोगी तरीके जोड़ता है। उदाहरण के लिए, JDK से Iterable API एक को लागू करता हैeach() वह विधि जो Iterable Interface के तत्वों पर निर्भर करती है।

निम्नलिखित कोड को कॉपी करें और सहेजें build.gradle फ़ाइल।

task groovyJDK << {
   String myName = "Marc";
   myName.each() { 
      println "${it}" 
   };
}

कमांड प्रॉम्प्ट में निम्न कमांड निष्पादित करें। यह ऊपर दी गई स्क्रिप्ट को निष्पादित करता है। आपको इसे निष्पादित करना चाहिए, जहां build.gradle फ़ाइल स्टोर होती है।

C:\> gradle –q groovyJDK

आउटपुट:

M
a
r
c

प्रॉपर्टी ऐक्सेसर्स

आप अपने संदर्भ को निर्दिष्ट करके किसी विशेष संपत्ति के उपयुक्त गेट्टर और सेटर विधियों को स्वचालित रूप से एक्सेस कर सकते हैं।

निम्नलिखित स्निपेट एक संपत्ति के गेट्टर और सेटर विधियों के सिंटैक्स को परिभाषित करता है buildDir

// Using a getter method
println project.buildDir
println getProject().getBuildDir()

// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')

विधि कॉल पर वैकल्पिक कोष्ठक

ग्रूवी में कॉलिंग विधियों में एक विशेष सुविधा होती है जो कि कोष्ठक विधि-विधि कॉलिंग के लिए वैकल्पिक है। यह सुविधा ग्रैड स्क्रिप्टिंग पर भी लागू होती है।

निम्नलिखित सिंटैक्स पर एक नज़र डालें। यह एक कॉलिंग विधि को परिभाषित करता हैsystemProperty का test वस्तु।

test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')

विधि के अंतिम पैरामीटर के रूप में बंद करना

ग्रैड डीएसएल कई जगहों पर क्लोजर का उपयोग करता है। जहां विधि का अंतिम पैरामीटर एक बंद होता है, आप विधि को कॉल करने के बाद बंद कर सकते हैं।

निम्नलिखित स्निपेट सिंटैक्सक्स क्लोज़र को रिपॉजिटरी () विधि मापदंडों के रूप में उपयोग करता है।

repositories {
   println "in a closure"
}
repositories() { 
   println "in a closure" 
}
repositories({ println "in a closure" })

डिफ़ॉल्ट आयात

ग्रैडल स्वचालित रूप से ग्रैड स्क्रिप्ट में आयात विवरणों का एक सेट जोड़ता है। निम्न सूची आपको ग्रैडल स्क्रिप्ट में डिफ़ॉल्ट आयात पैकेज दिखाती है।

import org.gradle.*
import org.gradle.api.*
import org.gradle.api.artifacts.*
import org.gradle.api.artifacts.cache.*
import org.gradle.api.artifacts.component.*
import org.gradle.api.artifacts.dsl.*
import org.gradle.api.artifacts.ivy.*
import org.gradle.api.artifacts.maven.*
import org.gradle.api.artifacts.query.*
import org.gradle.api.artifacts.repositories.*
import org.gradle.api.artifacts.result.*
import org.gradle.api.component.*
import org.gradle.api.credentials.*
import org.gradle.api.distribution.*
import org.gradle.api.distribution.plugins.*
import org.gradle.api.dsl.*
import org.gradle.api.execution.*
import org.gradle.api.file.*
import org.gradle.api.initialization.*
import org.gradle.api.initialization.dsl.*
import org.gradle.api.invocation.*
import org.gradle.api.java.archives.*
import org.gradle.api.logging.*
import org.gradle.api.plugins.*
import org.gradle.api.plugins.announce.*
import org.gradle.api.plugins.antlr.*
import org.gradle.api.plugins.buildcomparison.gradle.*
import org.gradle.api.plugins.jetty.*
import org.gradle.api.plugins.osgi.*
import org.gradle.api.plugins.quality.*
import org.gradle.api.plugins.scala.*
import org.gradle.api.plugins.sonar.*
import org.gradle.api.plugins.sonar.model.*
import org.gradle.api.publish.*
import org.gradle.api.publish.ivy.*
import org.gradle.api.publish.ivy.plugins.*
import org.gradle.api.publish.ivy.tasks.*
import org.gradle.api.publish.maven.*
import org.gradle.api.publish.maven.plugins.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.plugins.*
import org.gradle.api.reporting.*
import org.gradle.api.reporting.components.*
import org.gradle.api.reporting.dependencies.*
import org.gradle.api.reporting.model.*
import org.gradle.api.reporting.plugins.*
import org.gradle.api.resources.*
import org.gradle.api.specs.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.ant.*
import org.gradle.api.tasks.application.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.compile.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.api.tasks.incremental.*
import org.gradle.api.tasks.javadoc.*
import org.gradle.api.tasks.scala.*
import org.gradle.api.tasks.testing.*
import org.gradle.api.tasks.testing.junit.*
import org.gradle.api.tasks.testing.testng.*
import org.gradle.api.tasks.util.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.authentication.*
import org.gradle.authentication.http.*
import org.gradle.buildinit.plugins.*
import org.gradle.buildinit.tasks.*
import org.gradle.external.javadoc.*
import org.gradle.ide.cdt.*
import org.gradle.ide.cdt.tasks.*
import org.gradle.ide.visualstudio.*
import org.gradle.ide.visualstudio.plugins.*
import org.gradle.ide.visualstudio.tasks.*
import org.gradle.ivy.*
import org.gradle.jvm.*
import org.gradle.jvm.application.scripts.*
import org.gradle.jvm.application.tasks.*
import org.gradle.jvm.platform.*
import org.gradle.jvm.plugins.*
import org.gradle.jvm.tasks.*
import org.gradle.jvm.tasks.api.*
import org.gradle.jvm.test.*
import org.gradle.jvm.toolchain.*
import org.gradle.language.assembler.*
import org.gradle.language.assembler.plugins.*
import org.gradle.language.assembler.tasks.*
import org.gradle.language.base.*
import org.gradle.language.base.artifact.*
import org.gradle.language.base.plugins.*
import org.gradle.language.base.sources.*
import org.gradle.language.c.*
import org.gradle.language.c.plugins.*
import org.gradle.language.c.tasks.*
import org.gradle.language.coffeescript.*
import org.gradle.language.cpp.*
import org.gradle.language.cpp.plugins.*
import org.gradle.language.cpp.tasks.*
import org.gradle.language.java.*
import org.gradle.language.java.artifact.*
import org.gradle.language.java.plugins.*
import org.gradle.language.java.tasks.*
import org.gradle.language.javascript.*
import org.gradle.language.jvm.*
import org.gradle.language.jvm.plugins.*
import org.gradle.language.jvm.tasks.*
import org.gradle.language.nativeplatform.*
import org.gradle.language.nativeplatform.tasks.*
import org.gradle.language.objectivec.*
import org.gradle.language.objectivec.plugins.*
import org.gradle.language.objectivec.tasks.*
import org.gradle.language.objectivecpp.*
import org.gradle.language.objectivecpp.plugins.*
import org.gradle.language.objectivecpp.tasks.*
import org.gradle.language.rc.*
import org.gradle.language.rc.plugins.*
import org.gradle.language.rc.tasks.*
import org.gradle.language.routes.*
import org.gradle.language.scala.*
import org.gradle.language.scala.plugins.*
import org.gradle.language.scala.tasks.*
import org.gradle.language.scala.toolchain.*
import org.gradle.language.twirl.*
import org.gradle.maven.*
import org.gradle.model.*
import org.gradle.nativeplatform.*
import org.gradle.nativeplatform.platform.*
import org.gradle.nativeplatform.plugins.*
import org.gradle.nativeplatform.tasks.*
import org.gradle.nativeplatform.test.*
import org.gradle.nativeplatform.test.cunit.*
import org.gradle.nativeplatform.test.cunit.plugins.*
import org.gradle.nativeplatform.test.cunit.tasks.*
import org.gradle.nativeplatform.test.googletest.*
import org.gradle.nativeplatform.test.googletest.plugins.*
import org.gradle.nativeplatform.test.plugins.*
import org.gradle.nativeplatform.test.tasks.*
import org.gradle.nativeplatform.toolchain.*
import org.gradle.nativeplatform.toolchain.plugins.*
import org.gradle.platform.base.*
import org.gradle.platform.base.binary
import org.gradle.platform.base.component.*
import org.gradle.platform.base.plugins.*
import org.gradle.platform.base.test.*
import org.gradle.play.*
import org.gradle.play.distribution.*
import org.gradle.play.platform.*
import org.gradle.play.plugins.*
import org.gradle.play.tasks.*
import org.gradle.play.toolchain.*
import org.gradle.plugin.use.*
import org.gradle.plugins.ear.*
import org.gradle.plugins.ear.descriptor.*
import org.gradle.plugins.ide.api.*
import org.gradle.plugins.ide.eclipse.*
import org.gradle.plugins.ide.idea.*
import org.gradle.plugins.javascript.base.*
import org.gradle.plugins.javascript.coffeescript.*
import org.gradle.plugins.javascript.envjs.*
import org.gradle.plugins.javascript.envjs.browser.*
import org.gradle.plugins.javascript.envjs.http.*
import org.gradle.plugins.javascript.envjs.http.simple.*
import org.gradle.plugins.javascript.jshint.*
import org.gradle.plugins.javascript.rhino.*
import org.gradle.plugins.javascript.rhino.worker.*
import org.gradle.plugins.signing.*
import org.gradle.plugins.signing.signatory.*
import org.gradle.plugins.signing.signatory.pgp.*
import org.gradle.plugins.signing.type.*
import org.gradle.plugins.signing.type.pgp.*
import org.gradle.process.*
import org.gradle.sonar.runner.*
import org.gradle.sonar.runner.plugins.*
import org.gradle.sonar.runner.tasks.*
import org.gradle.testing.jacoco.plugins.*
import org.gradle.testing.jacoco.tasks.*
import org.gradle.testkit.runner.*
import org.gradle.util.*