
वितरित प्रणालियों के लिए केंद्रीकृत कॉन्फ़िगरेशन सर्वर, जिसमें HTTP API, Git-आधारित स्टोरेज, प्रॉपर्टी एन्क्रिप्शन/डिक्रिप्शन, और Vault, JDBC तथा स्थानीय फ़ाइलसिस्टम के साथ एकीकरण शामिल है।
//// इस फ़ाइल को संपादित न करें। यह जनरेट की गई है। इस फ़ाइल में किए गए मैन्युअल परिवर्तन पुनः जनरेट होने पर खो जाएंगे। इसके बजाय src/main/asciidoc/ निर्देशिका में फ़ाइलों को संपादित करें। ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]
Spring Cloud Config वितरित प्रणाली में बाहरी कॉन्फ़िगरेशन के लिए सर्वर-साइड और क्लाइंट-साइड समर्थन प्रदान करता है। Config Server के साथ, आपके पास सभी वातावरणों में अनुप्रयोगों के लिए बाहरी प्रॉपर्टी प्रबंधित करने के लिए एक केंद्रीय स्थान होता है।
क्लाइंट और सर्वर दोनों पर अवधारणाएँ Spring Environment और PropertySource एब्स्ट्रैक्शन से समान रूप से मेल खाती हैं, इसलिए वे Spring अनुप्रयोगों के साथ बहुत अच्छी तरह से फिट होती हैं, लेकिन इन्हें किसी भी भाषा में चलने वाले किसी भी अनुप्रयोग के साथ उपयोग किया जा सकता है।
जब कोई अनुप्रयोग डेवलपमेंट से टेस्ट और फिर प्रोडक्शन तक डिप्लॉयमेंट पाइपलाइन से गुजरता है, तो आप उन वातावरणों के बीच कॉन्फ़िगरेशन प्रबंधित कर सकते हैं और निश्चिंत रह सकते हैं कि माइग्रेट करते समय अनुप्रयोगों के पास चलने के लिए आवश्यक सब कुछ है।
सर्वर स्टोरेज बैकएंड का डिफ़ॉल्ट कार्यान्वयन git का उपयोग करता है, इसलिए यह कॉन्फ़िगरेशन वातावरण के लेबल किए गए संस्करणों को आसानी से समर्थन देता है और सामग्री प्रबंधित करने के लिए कई प्रकार के टूलिंग के लिए सुलभ होता है।
वैकल्पिक कार्यान्वयन जोड़ना और उन्हें Spring कॉन्फ़िगरेशन के साथ प्लग करना आसान है।
== विशेषताएँ
=== Spring Cloud Config सर्वर
Spring Cloud Config सर्वर निम्नलिखित लाभ प्रदान करता है:
@EnableConfigServer का उपयोग करके Spring Boot अनुप्रयोग में आसानी से एम्बेड करने योग्य=== Spring Cloud Config क्लाइंट
विशेष रूप से Spring अनुप्रयोगों के लिए, Spring Cloud Config क्लाइंट आपको निम्न की अनुमति देता है:
Environment को आरंभ करें।@Beans के लिए @RefreshScope, जिन्हें कॉन्फ़िगरेशन बदलने पर पुनः आरंभ करना हो।/env — Environment अपडेट करने और @ConfigurationProperties तथा लॉग स्तरों को पुनः बाइंड करने के लिए।
** /refresh — @RefreshScope बीन्स को रिफ्रेश करने के लिए।
** /restart — Spring कॉन्टेक्स्ट को पुनः आरंभ करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।
** /pause और /resume — Lifecycle विधियों को कॉल करने के लिए (ApplicationContext पर और )।== त्वरित आरंभ
यह त्वरित आरंभ Spring Cloud Config सर्वर के सर्वर और क्लाइंट दोनों के उपयोग के बारे में बताता है।
सबसे पहले, सर्वर को निम्नानुसार प्रारंभ करें:
सर्वर एक Spring Boot अनुप्रयोग है, इसलिए यदि आप चाहें तो इसे अपने IDE से चला सकते हैं (मुख्य क्लास ConfigServerApplication है)।
इसके बाद एक क्लाइंट को निम्नानुसार आज़माएँ:
प्रॉपर्टी स्रोतों का पता लगाने की डिफ़ॉल्ट रणनीति एक git रिपॉज़िटरी (spring.cloud.config.server.git.uri पर) क्लोन करना और उसे एक मिनी SpringApplication आरंभ करने के लिए उपयोग करना है।
मिनी-एप्लिकेशन के Environment का उपयोग प्रॉपर्टी स्रोतों को सूचीबद्ध करने और उन्हें JSON एंडपॉइंट पर प्रकाशित करने के लिए किया जाता है।
HTTP सेवा में निम्नलिखित रूप के रिसोर्स होते हैं:
जहाँ application को SpringApplication में spring.config.name के रूप में इंजेक्ट किया जाता है (जो सामान्य Spring Boot ऐप में सामान्यतः application होता है), profile एक सक्रिय प्रोफ़ाइल (या प्रॉपर्टी की कॉमा-सेपरेटेड सूची) है, और label एक वैकल्पिक git लेबल है (डिफ़ॉल्ट master है।)
Spring Cloud Config सर्वर दूरस्थ क्लाइंट्स के लिए विभिन्न स्रोतों से कॉन्फ़िगरेशन प्राप्त करता है। निम्नलिखित उदाहरण एक git रिपॉज़िटरी से कॉन्फ़िगरेशन लेता है (जो प्रदान की जानी चाहिए), जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
अन्य स्रोतों में कोई भी JDBC संगत डेटाबेस, Subversion, Hashicorp Vault, Credhub और स्थानीय फ़ाइल सिस्टम शामिल हैं।
=== क्लाइंट साइड उपयोग
किसी अनुप्रयोग में इन सुविधाओं का उपयोग करने के लिए, आप इसे एक Spring Boot अनुप्रयोग के रूप में बना सकते हैं जो spring-cloud-config-client पर निर्भर करता है (उदाहरण के लिए, config-client के टेस्ट केस या सैंपल अनुप्रयोग देखें)।
डिपेंडेंसी जोड़ने का सबसे सुविधाजनक तरीका Spring Boot स्टार्टर org.springframework.cloud:spring-cloud-starter-config है।
Maven उपयोगकर्ताओं के लिए एक पैरेंट pom और BOM (spring-cloud-starter-parent) भी है, और Gradle व Spring CLI उपयोगकर्ताओं के लिए Spring IO संस्करण प्रबंधन प्रॉपर्टी फ़ाइल भी है। निम्नलिखित उदाहरण एक विशिष्ट Maven कॉन्फ़िगरेशन दिखाता है:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-docs-version}</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>{spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- repositories also needed for snapshots and milestones -->
अब आप एक मानक Spring Boot अनुप्रयोग बना सकते हैं, जैसे निम्नलिखित HTTP सर्वर:
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
जब यह HTTP सर्वर चलता है, तो यह पोर्ट 8888 पर डिफ़ॉल्ट लोकल config सर्वर (यदि चल रहा है) से बाहरी कॉन्फ़िगरेशन प्राप्त करता है।
स्टार्टअप व्यवहार को संशोधित करने के लिए, आप bootstrap.properties का उपयोग करके config सर्वर का स्थान बदल सकते हैं (application.properties के समान, लेकिन एप्लिकेशन कॉन्टेक्स्ट के बूटस्ट्रैप चरण के लिए), जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
डिफ़ॉल्ट रूप से, यदि कोई एप्लिकेशन नाम सेट नहीं है, तो application का उपयोग किया जाएगा। नाम संशोधित करने के लिए, bootstrap.properties फ़ाइल में निम्नलिखित प्रॉपर्टी जोड़ी जा सकती है:
नोट: ${spring.application.name} प्रॉपर्टी सेट करते समय, सही प्रॉपर्टी स्रोत को हल करने में समस्याओं से बचने के लिए अपने ऐप नाम को आरक्षित शब्द application- से उपसर्ग न करें।
बूटस्ट्रैप प्रॉपर्टीज़ /env एंडपॉइंट पर उच्च-प्राथमिकता वाले प्रॉपर्टी स्रोत के रूप में दिखाई देती हैं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है।
एक प्रॉपर्टी स्रोत जिसे ```configService:/कहा जाता है, उसमेंfooप्रॉपर्टीbar` मान के साथ होती है और वह सर्वोच्च प्राथमिकता वाला होता है।
नोट: प्रॉपर्टी स्रोत नाम में URL git रिपॉज़िटरी है, config सर्वर URL नहीं।
=== सैंपल अनुप्रयोग
आप एक सैंपल अनुप्रयोग https://github.com/spring-cloud/spring-cloud-config/tree/master/spring-cloud-config-sample[यहाँ] पा सकते हैं।
यह एक Spring Boot अनुप्रयोग है, इसलिए आप इसे सामान्य तंत्रों का उपयोग करके चला सकते हैं (उदाहरण के लिए, mvn spring-boot:run)।
जब यह चलता है, तो यह http://localhost:8888 पर config सर्वर की खोज करता है (एक कॉन्फ़िगर करने योग्य डिफ़ॉल्ट), इसलिए आप सर्वर को भी चला सकते हैं और यह सब एक साथ काम करते हुए देख सकते हैं।
सैंपल में एक टेस्ट केस है जहाँ config सर्वर उसी JVM में (एक अलग पोर्ट के साथ) भी प्रारंभ होता है, और टेस्ट यह सुनिश्चित करता है कि git कॉन्फ़िगरेशन रिपॉज़िटरी से एक एनवायरनमेंट प्रॉपर्टी मौजूद है।
config सर्वर का स्थान बदलने के लिए, आप bootstrap.yml में spring.cloud.config.uri सेट कर सकते हैं (या सिस्टम प्रॉपर्टी और अन्य स्थानों में)।
टेस्ट केस में एक main() विधि है जो सर्वर को उसी तरह चलाती है (इसके पोर्ट के लिए लॉग देखें), ताकि आप पूरे सिस्टम को एक प्रोसेस में चला सकें और उसके साथ प्रयोग कर सकें (उदाहरण के लिए, आप अपने IDE में main() विधि चला सकते हैं)।
main() विधि git रिपॉज़िटरी की वर्किंग डायरेक्टरी के लिए target/config का उपयोग करती है, इसलिए आप वहाँ स्थानीय परिवर्तन कर सकते हैं और उन्हें चल रहे ऐप में प्रतिबिंबित देख सकते हैं। निम्नलिखित उदाहरण टेस्ट केस के साथ प्रयोग करने का एक सत्र दिखाता है:
refresh एंडपॉइंट बताता है कि "sample" प्रॉपर्टी बदल गई है।
== निर्माण
:jdkversion: 1.7
=== बेसिक कंपाइल और टेस्ट
स्रोत को बनाने के लिए आपको JDK {jdkversion} स्थापित करने की आवश्यकता होगी।
Spring Cloud अधिकांश बिल्ड-संबंधित गतिविधियों के लिए Maven का उपयोग करता है, और आप जिस प्रोजेक्ट में रुचि रखते हैं उसे क्लोन करके और निम्न टाइप करके काफी जल्दी शुरुआत कर सकते हैं
नोट: आप स्वयं Maven (>=3.3.3) भी स्थापित कर सकते हैं और नीचे दिए गए उदाहरणों में ./mvnw के स्थान पर mvn कमांड चला सकते हैं। यदि आप ऐसा करते हैं, तो आपको -P spring जोड़ने की भी आवश्यकता हो सकती है, यदि आपकी स्थानीय Maven सेटिंग्स में spring प्री-रिलीज़ आर्टिफैक्ट्स के लिए रिपॉज़िटरी घोषणाएँ नहीं हैं।
नोट: ध्यान रखें कि MAVEN_OPTS एनवायरनमेंट वेरिएबल को -Xmx512m -XX:MaxPermSize=128m जैसे मान के साथ सेट करके आपको Maven के लिए उपलब्ध मेमोरी की मात्रा बढ़ाने की आवश्यकता हो सकती है। हम .mvn कॉन्फ़िगरेशन में इसे कवर करने का प्रयास करते हैं, इसलिए यदि आप पाते हैं कि बिल्ड सफल बनाने के लिए आपको ऐसा करना पड़ता है, तो कृपया सोर्स कंट्रोल में सेटिंग्स जोड़ने के लिए एक टिकट दर्ज करें।
प्रोजेक्ट बनाने के तरीके के संकेतों के लिए .travis.yml देखें, यदि कोई है। वहाँ एक "script" और शायद "install" कमांड होना चाहिए। साथ ही "services" अनुभाग देखें कि क्या कोई सेवाएँ स्थानीय रूप से चलाने की आवश्यकता हैं (जैसे mongo या rabbit)। "before_install" में मिलने वाले git-संबंधित भागों को अनदेखा करें क्योंकि वे git क्रेडेंशियल सेट करने से संबंधित हैं और वे आपके पास पहले से हैं।
जिन प्रोजेक्ट्स को मिडलवेयर की आवश्यकता होती है, उनमें आमतौर पर docker-compose.yml शामिल होता है, इसलिए Docker कंटेनरों में मिडलवेयर सर्वर चलाने के लिए https://docs.docker.com/compose/[Docker Compose] का उपयोग करने पर विचार करें। mongo, rabbit और redis के सामान्य मामलों के विशिष्ट निर्देशों के लिए https://github.com/spring-cloud-samples/scripts[scripts डेमो रिपॉज़िटरी] में README देखें।
नोट: यदि कुछ भी काम न करे, तो .travis.yml से कमांड के साथ बिल्ड करें (आमतौर पर ./mvnw install)।
=== दस्तावेज़ीकरण
spring-cloud-build मॉड्यूल में एक "docs" प्रोफ़ाइल है, और यदि आप इसे चालू करते हैं तो यह src/main/asciidoc से asciidoc स्रोत बनाने का प्रयास करेगा। उस प्रक्रिया के भाग के रूप में यह README.adoc की तलाश करेगा और उसे सभी includes लोड करके संसाधित करेगा, लेकिन उसे पार्स या रेंडर नहीं करेगा, केवल उसे ${main.basedir} (डिफ़ॉल्ट ${basedir}, यानी प्रोजेक्ट की रूट) पर कॉपी करेगा। यदि README में कोई परिवर्तन हैं, तो वे Maven बिल्ड के बाद सही स्थान पर संशोधित फ़ाइल के रूप में दिखाई देंगे। बस उसे कमिट करें और परिवर्तन पुश करें।
=== कोड के साथ कार्य करना
यदि आपके पास कोई IDE प्राथमिकता नहीं है, तो हम अनुशंसा करते हैं कि कोड के साथ काम करते समय आप https://www.springsource.com/developer/sts[Spring Tools Suite] या https://eclipse.org[Eclipse] का उपयोग करें। हम Maven समर्थन के लिए https://eclipse.org/m2e/[m2eclipse] eclipse प्लगइन का उपयोग करते हैं। अन्य IDE और टूल भी बिना किसी समस्या के काम करने चाहिए, जब तक वे Maven 3.3.3 या बेहतर का उपयोग करते हैं।
==== m2eclipse के साथ eclipse में इम्पोर्ट करना
eclipse के साथ काम करते समय हम https://eclipse.org/m2e/[m2eclipse] eclipse प्लगइन की अनुशंसा करते हैं। यदि आपने पहले से m2eclipse स्थापित नहीं किया है, तो यह "eclipse marketplace" से उपलब्ध है।
नोट: m2e के पुराने संस्करण Maven 3.3 का समर्थन नहीं करते हैं, इसलिए एक बार प्रोजेक्ट्स को Eclipse में इम्पोर्ट करने के बाद आपको m2eclipse को प्रोजेक्ट्स के लिए सही प्रोफ़ाइल का उपयोग करने के लिए भी बताना होगा। यदि आप प्रोजेक्ट्स में POMs से संबंधित कई अलग-अलग त्रुटियाँ देखते हैं, तो जाँच करें कि आपके पास अद्यतित इंस्टॉलेशन है। यदि आप m2e को अपग्रेड नहीं कर सकते हैं, तो अपने settings.xml में "spring" प्रोफ़ाइल जोड़ें। वैकल्पिक रूप से, आप पैरेंट pom के "spring" प्रोफ़ाइल से रिपॉज़िटरी सेटिंग्स को अपने settings.xml में कॉपी कर सकते हैं।
==== m2eclipse के बिना eclipse में इम्पोर्ट करना
यदि आप m2eclipse का उपयोग नहीं करना चाहते हैं, तो आप निम्नलिखित कमांड का उपयोग करके eclipse प्रोजेक्ट मेटाडेटा जनरेट कर सकते हैं:
$ ./mvnw eclipse:eclipse
जनरेट किए गए eclipse प्रोजेक्ट्स को file मेनू से import existing projects चुनकर इम्पोर्ट किया जा सकता है।
=== JCE
यदि आपको "Illegal key size" के कारण कोई अपवाद मिलता है और आप Sun के JDK का उपयोग कर रहे हैं, तो आपको Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files स्थापित करने की आवश्यकता है। अधिक जानकारी के लिए निम्नलिखित लिंक देखें:
https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html[Java 6 JCE]
https://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html[Java 7 JCE]
https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html[Java 8 JCE]
आप जिस भी JRE/JDK x64/x86 संस्करण का उपयोग करते हैं, उसके लिए JCE फ़ाइलों को JDK/jre/lib/security फ़ोल्डर में निकालें।
== योगदान देना
:spring-cloud-build-branch: master
Spring Cloud गैर-प्रतिबंधात्मक Apache 2.0 लाइसेंस के तहत जारी किया गया है, और यह एक बहुत ही मानक Github विकास प्रक्रिया का पालन करता है, जिसमें मुद्दों के लिए Github ट्रैकर का उपयोग और pull requests को master में मर्ज करना शामिल है। यदि आप कुछ भी, यहाँ तक कि मामूली, योगदान देना चाहते हैं तो कृपया संकोच न करें, लेकिन नीचे दिए गए दिशानिर्देशों का पालन करें।
=== योगदानकर्ता लाइसेंस समझौते पर हस्ताक्षर करें
इससे पहले कि हम कोई गैर-मामूली पैच या pull request स्वीकार करें, हमें आपसे https://cla.pivotal.io/sign/spring[Contributor License Agreement] पर हस्ताक्षर करने की आवश्यकता होगी। योगदानकर्ता समझौते पर हस्ताक्षर करने से किसी को मुख्य रिपॉज़िटरी में कमिट अधिकार नहीं मिलते हैं, लेकिन इसका अर्थ है कि हम आपके योगदान स्वीकार कर सकते हैं, और यदि हम ऐसा करते हैं तो आपको लेखक का श्रेय मिलेगा। सक्रिय योगदानकर्ताओं को कोर टीम में शामिल होने के लिए कहा जा सकता है, और pull requests मर्ज करने की क्षमता दी जा सकती है।
=== आचार संहिता
यह प्रोजेक्ट Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[code of conduct] का पालन करता है। भाग लेने से, आपसे इस संहिता को बनाए रखने की अपेक्षा की जाती है। कृपया अस्वीकार्य व्यवहार की रिपोर्ट [email protected] पर करें।
=== कोड परंपराएँ और रखरखाव
इनमें से कोई भी pull request के लिए आवश्यक नहीं है, लेकिन ये सभी सहायक होंगे। इन्हें मूल pull request के बाद लेकिन मर्ज से पहले भी जोड़ा जा सकता है।
eclipse-code-formatter.xml फ़ाइल को
https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring
Cloud Build] प्रोजेक्ट से। यदि IntelliJ का उपयोग कर रहे हैं, तो आप
https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter
Plugin] का उपयोग करके उसी फ़ाइल को इम्पोर्ट कर सकते हैं।.java फ़ाइलों में कम से कम एक साधारण Javadoc क्लास टिप्पणी हो
@author टैग के साथ जो आपकी पहचान करता है, और अधिमानतः क्लास किस बारे में है इस पर कम से कम एक पैराग्राफ
हो।.java फ़ाइलों में ASF लाइसेंस हेडर टिप्पणी जोड़ें (प्रोजेक्ट की मौजूदा फ़ाइलों से कॉपी करें
प्रोजेक्ट में).java फ़ाइलों में स्वयं को @author के रूप में जोड़ें जिन्हें आप काफी हद तक संशोधित करते हैं (केवल
कॉस्मेटिक परिवर्तनों से अधिक)।=== Checkstyle
Spring Cloud Build में checkstyle नियमों का एक सेट शामिल है। आप उन्हें spring-cloud-build-tools मॉड्यूल में पा सकते हैं। मॉड्यूल के अंतर्गत सबसे उल्लेखनीय फ़ाइलें ये हैं:
<1> डिफ़ॉल्ट Checkstyle नियम <2> फ़ाइल हेडर सेटअप <3> डिफ़ॉल्ट सप्रेशन नियम
==== Checkstyle कॉन्फ़िगरेशन
Checkstyle नियम डिफ़ॉल्ट रूप से अक्षम हैं। अपने प्रोजेक्ट में checkstyle जोड़ने के लिए, बस निम्नलिखित प्रॉपर्टी और प्लगइन्स परिभाषित करें।
<reporting>
<plugins>
<plugin> <5>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</reporting>
${project.root}/src/checkstyle/checkstyle-suppressions.xml के अंतर्गत एक फ़ाइल परिभाषित करना पर्याप्त है। उदाहरण:.projectRoot/src/checkstyle/checkstyle-suppresions.xmlअपने प्रोजेक्ट में ${spring-cloud-build.rootFolder}/.editorconfig और ${spring-cloud-build.rootFolder}/.springformat को कॉपी करना उचित है। इस तरह, कुछ डिफ़ॉल्ट फ़ॉर्मेटिंग नियम लागू हो जाएंगे। आप यह स्क्रिप्ट चलाकर ऐसा कर सकते हैं:```bash
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat
=== IDE सेटअप
==== Intellij IDEA
Intellij को सेटअप करने के लिए आपको हमारी कोडिंग परंपराओं, निरीक्षण प्रोफाइल को आयात करना चाहिए और Checkstyle प्लगइन को सेटअप करना चाहिए।
निम्नलिखित फ़ाइलें https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] प्रोजेक्ट में मिल सकती हैं।
.spring-cloud-build-tools/
----
└── src
├── checkstyle
│ └── checkstyle-suppressions.xml <3>
└── main
└── resources
├── checkstyle-header.txt <2>
├── checkstyle.xml <1>
└── intellij
├── Intellij_Project_Defaults.xml <4>
└── Intellij_Spring_Boot_Java_Conventions.xml <5>
----
<1> डिफ़ॉल्ट Checkstyle नियम।
<2> फ़ाइल हेडर सेटअप।
<3> डिफ़ॉल्ट सप्रेशन नियम।
<4> Intellij के लिए प्रोजेक्ट डिफ़ॉल्ट जो अधिकांश Checkstyle नियम लागू करते हैं।
<5> Intellij के लिए प्रोजेक्ट शैली परंपराएँ जो अधिकांश Checkstyle नियम लागू करती हैं।
.कोड शैली
image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-code-style.png[कोड शैली]
जाएँ `File` -> `Settings` -> `Editor` -> `Code style` पर। वहाँ `Scheme` अनुभाग के बगल में आइकन पर क्लिक करें। वहाँ, `Import Scheme` मान पर क्लिक करें और `Intellij IDEA code style XML` विकल्प चुनें। `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml` फ़ाइल आयात करें।
.निरीक्षण प्रोफाइल
image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-inspections.png[कोड शैली]
जाएँ `File` -> `Settings` -> `Editor` -> `Inspections` पर। वहाँ `Profile` अनुभाग के बगल में आइकन पर क्लिक करें। वहाँ, `Import Profile` पर क्लिक करें और `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml` फ़ाइल आयात करें।
.Checkstyle
Intellij को Checkstyle के साथ काम करने के लिए, आपको `Checkstyle` प्लगइन स्थापित करना होगा। JUnit assertions को स्वचालित रूप से परिवर्तित करने के लिए `Assertions2Assertj` भी स्थापित करना उचित है।
image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-checkstyle.png[Checkstyle]
जाएँ `File` -> `Settings` -> `Other settings` -> `Checkstyle` पर। वहाँ `Configuration file` अनुभाग में `+` आइकन पर क्लिक करें। वहाँ, आपको परिभाषित करना होगा कि Checkstyle नियम कहाँ से लिए जाएँ। ऊपर दी गई छवि में, हमने नियमों को क्लोन किए गए Spring Cloud Build रिपॉजिटरी से लिया है। हालाँकि, आप Spring Cloud Build के GitHub रिपॉजिटरी की ओर इंगित कर सकते हैं (उदा. `checkstyle.xml` के लिए: `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`)। हमें निम्नलिखित वेरिएबल प्रदान करने होंगे:
- `checkstyle.header.file` - कृपया इसे Spring Cloud Build की `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` फ़ाइल पर इंगित करें, या तो आपकी क्लोन की गई रिपॉजिटरी में या `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL के माध्यम से।
- `checkstyle.suppressions.file` - डिफ़ॉल्ट सप्रेशन। कृपया इसे Spring Cloud Build की `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` फ़ाइल पर इंगित करें, या तो आपकी क्लोन की गई रिपॉजिटरी में या `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL के माध्यम से।
- `checkstyle.additional.suppressions.file` - यह वेरिएबल आपके स्थानीय प्रोजेक्ट में सप्रेशन के अनुरूप है। उदा. आप `spring-cloud-contract` पर काम कर रहे हैं। फिर `project-root/src/checkstyle/checkstyle-suppressions.xml` फ़ोल्डर की ओर इंगित करें। `spring-cloud-contract` के लिए उदाहरण होगा: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`.
महत्वपूर्ण: `Scan Scope` को `All sources` पर सेट करना याद रखें, क्योंकि हम प्रोडक्शन और टेस्ट स्रोतों के लिए Checkstyle नियम लागू करते हैं।
stop()start()Fixes gh-XXXX