परिचय

लक्षित दर्शक : शुरुआती से मध्यम स्तर के डेवलपर Gradle के साथ

एक नया Gradle प्लगइन प्रोजेक्ट शुरू करने की प्रक्रिया डरावनी लग सकती है। सौभाग्य से, Gradle एक शक्तिशाली इंटरैक्टिव सहायक प्रदान करता है, कार्य`init`, जो एक पूर्ण, स्वच्छ और उपयोग के लिए तैयार प्रोजेक्ट संरचना उत्पन्न करता है। यह गाइड आपको दिखाएगा कि इस टूल का उपयोग करके एक स्वस्थ प्लगइन आधार कैसे बनाया जाए, इसकी संरचना समझाएगा और आपको दिखाएगा कि पहले बिल्ड कार्य कैसे चलाएँ जाएँ।

चरण 1: परियोजना सहायक शुरू करें

कमांड`gradle init`यह प्रारम्भ बिंदु है। यह एक कमांड-लाइन असिस्टेंट शुरू करता है जो आपको परियोजना को कॉन्फ़िगर करने के लिए प्रश्नों की एक श्रृंखला पूछता है।

खाली फ़ोल्डर में अपना टर्मिनल खोलें और चलाएँ :

gradle init

सहायक आपको मार्गदर्शन करेगा। यहाँ एक कोटलिन में लिखे गए Gradle प्लगिन के लिए किए जाने वाले विकल्प हैं :

  1. जनरेट करने के लिए परियोजना के प्रकार का चयन करें:चुनें`Gradle plugin`.

  2. कार्यान्वयन भाषा चुनें:चुनें`Kotlin`।

  3. बिल्ड स्क्रिप्ट DSL चुनें:चुनिए`Kotlin`.

  4. परियोजना का नाम:अपने प्रोजेक्ट के लिए एक नाम दर्ज करें (उदाहरण:`site-baker`).

  5. **# ग्रैडल एकीकरण

JBake को JBake Gradle प्लगिन का उपयोग करके या JBake CLI को सीधे कॉल करके Gradle बिल्ड में एकीकृत किया जा सकता है:

----
tasks.register<JavaExec>("bake") {
    mainClass.set("org.jbake.launcher.Main")
    classpath = configurations["jbake"]
    args = listOf(projectDir.absolutePath, "$buildDir/jbake")
}**### ग्रेडल इंटीग्रेशन
JBake को JBake Gradle प्लगिन का उपयोग करके या JBake CLI को सीधे बुलाकर Gradle बिल्ड में इंटीग्रेट किया जा सकता है:

----

tasks.register<JavaExec>("bake") { mainClass.set("org.jbake.launcher.Main") classpath = configurations["jbake"] args = listOf(projectDir.absolutePath, "$buildDir/jbake") } ```

अपने प्लगिन के लिए एक विशिष्ट पहचानकर्ता दें (उदाहरण के लिए:`com.cheroliv.site-baker`).

1.  **### gradle एकीकरण

JBake को JBake Gradle प्लगिन का उपयोग करके या JBake CLI को सीधे बुलाकर Gradle बिल्ड में एकीकृत किया जा सकता है:

```kotlin
----
tasks.register<JavaExec>("bake") {
    mainClass.set("org.jbake.launcher.Main")
    classpath = configurations["jbake"]
    args = listOf(projectDir.absolutePath, "$buildDir/jbake")
}
----

प्लगिन वर्ग:**कार्यान्वयन कक्षा का नाम निर्दिष्ट करें (उदाहरण:`com.cheroliv.SiteBakerPlugin`).

एक बार पूरा हो जाने के बाद, Gradle एक पूर्ण फ़ाइल पदानुक्रम उत्पन्न करता है।

.प्रारंभीकरण प्रक्रिया का आरेख

[plantuml, init-gradle, svg]
----
@startuml
start
:Lancer `gradle init`;
:Choisir "Gradle plugin";
:Choisir "### Gradle इंटीग्रेशन
JBake को Gradle बिल्ड्स में JBake Gradle प्लगइन का उपयोग करके या JBake CLI को सीधे बुलाकर एकीकृत किया जा सकता है:

```kotlin
tasks.register<JavaExec>("bake") {
    mainClass.set("org.jbake.launcher.Main")
    classpath = configurations["jbake"]
    args = listOf(projectDir.absolutePath, "$buildDir/jbake")
}" (langage);
:Choisir "### Gradle इंटीग्रेशन
JBake को Gradle बिल्ड्स में JBake Gradle प्लगइन का उपयोग करके या JBake CLI को सीधे बुलाकर एकीकृत किया जा सकता है:

```kotlin
tasks.register<JavaExec>("bake") {
    mainClass.set("org.jbake.launcher.Main")
    classpath = configurations["jbake"]
    args = listOf(projectDir.absolutePath, "$buildDir/jbake")
}" (DSL);
:Saisir nom, ID, et classe;
:Projet généré;
stop
@enduml
----

== चरण 2 : जनरेट की गई संरचना को समझना

असिस्टेंट एक मल्टी‑मॉड्यूल प्रोजेक्ट संरचना बनाता है, मूल प्रोजेक्ट को प्लगिन के स्रोत कोड से अलग करते हुए।

[source,text]
----
.
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── plugin/
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── kotlin/
│       │       └── com/cheroliv/SiteBakerPlugin.kt
│       ├── test/
│       │   └── kotlin/
│       │       └── com/cheroliv/SiteBakerPluginTest.kt
│       └── functionalTest/
│           └── kotlin/
│               └── com/cheroliv/SiteBakerPluginFunctionalTest.kt
└── settings.gradle.kts
----

=== मुख्य फ़ाइलें और फ़ोल्डर

*   `settings.gradle.kts`यह फ़ाइल रूट में बिल्ड में शामिल मॉड्यूल को परिभाषित करती है। यहाँ, यह उप-प्रोजेक्ट शामिल करता है।`plugin`.

[source,kotlin] ---- rootProject.name = "site-baker include("plugin") ----
----

----

संबंधित लेख