परिचय: मोनोरेपॉजिटरी क्या है और Java डेवलपर को इसकी आवश्यकता क्यों है?
\n\nकल्पना करें कि आप एक बड़ा Java एप्लिकेशन लिख रहे हैं: एक वेब सेवा, डेटाबेस के साथ काम करने के लिए एक लाइब्रेरी और लॉगिंग के लिए एक अलग मॉड्यूल। परंपरागत रूप से, प्रत्येक घटक अपने स्वयं के Git रिपॉजिटरी में संग्रहीत होता है। लेकिन एक और दृष्टिकोण भी है — मोनोरेपॉजिटरी (monorepo)। यह एक रणनीति है जिसमें प्रोजेक्ट का सारा कोड (या कई संबंधित प्रोजेक्ट भी) एक ही रिपॉजिटरी में संग्रहीत होता है।
\n\nशुरुआती Java डेवलपर्स के लिए, मोनोरेपॉजिटरी असामान्य लग सकता है, लेकिन यह महत्वपूर्ण लाभ प्रदान करता है:
\n- \n
- निर्भरताओं का एकीकृत संस्करण — सभी मॉड्यूल लाइब्रेरी के समान संस्करणों का उपयोग करते हैं, जो विरोधों को समाप्त करता है। \n
- सरलीकृत रीफैक्टरिंग — एक मॉड्यूल में API परिवर्तन तुरंत सभी आश्रित मॉड्यूल में दिखाई देता है। \n
- साझा सेटिंग्स — लिंटर, फ़ॉर्मेटिंग और CI/CD के लिए एक कॉन्फ़िगरेशन फ़ाइल। \n
- आसान शुरुआत — छोटे प्रोजेक्ट के लिए कई रिपॉजिटरी सेट करने की आवश्यकता नहीं है। \n
इस लेख में, हम जानेंगे कि लोकप्रिय बिल्ड टूल्स: Maven और Gradle का उपयोग करके Java में मोनोरेपॉजिटरी कैसे व्यवस्थित करें। आप सीखेंगे कि फ़ोल्डरों की संरचना कैसे करें, मल्टी-मॉड्यूल बिल्ड कैसे सेट करें और सामान्य गलतियों से कैसे बचें।
\n\nमुख्य भाग
\n\n1. मोनोरेपॉजिटरी संरचना: सरल से जटिल तक
\n\nसही फ़ोल्डर संरचना एक सफल मोनोरेपॉजिटरी का आधार है। Java प्रोजेक्ट के लिए अनुशंसित टेम्पलेट यहाँ दिया गया है:
\n\nmy-monorepo/\n├── build.gradle # रूट बिल्ड फ़ाइल (Gradle के लिए)\n├── settings.gradle # मॉड्यूल की सूची\n├── pom.xml # रूट POM (Maven के लिए)\n├── README.md\n├── .gitignore\n├── libs/ # साझा लाइब्रेरी\n│ ├── common-utils/\n│ └── logging-framework/\n├── services/ # माइक्रोसर्विस या एप्लिकेशन\n│ ├── user-service/\n│ └── payment-service/\n└── tools/ # उपयोगिताएँ और स्क्रिप्ट\n └── code-generator/\n\n\nप्रत्येक मॉड्यूल अपने स्वयं के pom.xml या build.gradle के साथ एक स्वतंत्र Java प्रोजेक्ट है। रूट कॉन्फ़िगरेशन फ़ाइलें निर्भरताओं और संस्करणों का प्रबंधन करती हैं। आइए दोनों विकल्पों पर विस्तार से विचार करें।
2. Maven के साथ मोनोरेपॉजिटरी: मल्टी-मॉड्यूल प्रोजेक्ट
\n\nMaven आउट-ऑफ-द-बॉक्स मल्टी-मॉड्यूल प्रोजेक्ट का समर्थन करता है। मॉड्यूल निर्दिष्ट करते हुए एक रूट pom.xml बनाएँ:
<project>\n <modelVersion>4.0.0</modelVersion>\n <groupId>com.example</groupId>\n <artifactId>my-monorepo</artifactId>\n <packaging>pom</packaging>\n <version>1.0.0</version>\n \n <modules>\n <module>libs/common-utils</module>\n <module>services/user-service</module>\n <module>services/payment-service</module>\n </modules>\n\n <dependencyManagement>\n <dependencies>\n <dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-dependencies</artifactId>\n <version>3.2.0</version>\n <type>pom</type>\n <scope>import</scope>\n </dependency>\n </dependencies>\n </dependencyManagement>\n</project>\n\n\ncommon-utils मॉड्यूल (फ़ोल्डर libs/common-utils) में, हम अपना स्वयं का pom.xml बनाते हैं जो पैरेंट प्रोजेक्ट को संदर्भित करता है:
<project>\n <parent>\n <groupId>com.example</groupId>\n <artifactId>my-monorepo</artifactId>\n <version>1.0.0</version>\n </parent>\n <artifactId>common-utils</artifactId>\n \n <dependencies>\n <dependency>\n