
वितरित सिस्टम के लिए केंद्रीकृत कॉन्फ़िगरेशन सर्वर, जिसमें 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 वितरित प्रणाली में बाह्य कॉन्फ़िगरेशन (externalized configuration) के लिए सर्वर-साइड और क्लाइंट-साइड समर्थन प्रदान करता है। Config Server के साथ, आपके पास सभी वातावरणों में एप्लिकेशन के लिए बाहरी प्रॉपर्टी का प्रबंधन करने के लिए एक केंद्रीय स्थान होता है।
क्लाइंट और सर्वर दोनों पर अवधारणाएँ स्प्रिंग Environment और PropertySource अमूर्तताओं के साथ समान रूप से मैप होती हैं, इसलिए वे स्प्रिंग अनुप्रयोगों के साथ बहुत अच्छी तरह से फिट होती हैं लेकिन किसी भी भाषा में चलने वाले किसी भी एप्लिकेशन के साथ उपयोग की जा सकती हैं।
जब कोई एप्लिकेशन डेव से टेस्ट और प्रोडक्शन में डिप्लॉयमेंट पाइपलाइन से गुज़रता है, तो आप उन वातावरणों के बीच कॉन्फ़िगरेशन का प्रबंधन कर सकते हैं और सुनिश्चित कर सकते हैं कि जब वे माइग्रेट करें तो एप्लिकेशन के पास चलने के लिए आवश्यक सब कुछ हो।
सर्वर स्टोरेज बैकएंड के डिफ़ॉल्ट कार्यान्वयन में git का उपयोग होता है, इसलिए यह कॉन्फ़िगरेशन वातावरण के लेबल वाले संस्करणों को आसानी से समर्थन करता है और साथ ही सामग्री प्रबंधन के लिए उपकरणों की एक विस्तृत श्रृंखला के लिए सुलभ है।
वैकल्पिक कार्यान्वयन जोड़ना और उन्हें स्प्रिंग कॉन्फ़िगरेशन के साथ प्लग करना आसान है।
== विशेषताएँ
=== Spring Cloud Config Server
Spring Cloud Config Server निम्नलिखित लाभ प्रदान करता है:
@EnableConfigServer का उपयोग करके स्प्रिंग Boot एप्लिकेशन में आसानी से एम्बेड करने योग्य=== Spring Cloud Config Client
विशेष रूप से स्प्रिंग अनुप्रयोगों के लिए, Spring Cloud Config Client आपको निम्नलिखित की अनुमति देता है:
Environment को आरंभ करें।@RefreshScope उन Spring @Beans के लिए जो कॉन्फ़िगरेशन बदलने पर पुनः आरंभ होना चाहते हैं।/env - Environment को अपडेट करने और @ConfigurationProperties तथा लॉग स्तरों को पुनः बाइंड करने के लिए।
** /refresh - @RefreshScope बीन्स को रिफ्रेश करने के लिए।
** /restart - Spring संदर्भ को पुनरारंभ करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।
** /pause और /resume - Lifecycle विधियों (ApplicationContext पर और ) को कॉल करने के लिए।== त्वरित प्रारंभ
यह त्वरित प्रारंभ Spring Cloud Config Server के सर्वर और क्लाइंट दोनों के उपयोग के माध्यम से चलता है।
पहले, सर्वर को इस प्रकार प्रारंभ करें:
सर्वर एक 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 Server विभिन्न स्रोतों से दूरस्थ क्लाइंट के लिए कॉन्फ़िगरेशन खींचता है। निम्नलिखित उदाहरण 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 पर बाहरी कॉन्फ़िगरेशन उठाता है।
स्टार्टअप व्यवहार को संशोधित करने के लिए, आप bootstrap.properties (जो application.properties के समान है लेकिन एप्लिकेशन संदर्भ के बूटस्ट्रैप चरण के लिए) का उपयोग करके कॉन्फ़िग सर्वर का स्थान बदल सकते हैं, जैसा निम्नलिखित उदाहरण में दिखाया गया है:
डिफ़ॉल्ट रूप से, यदि कोई एप्लिकेशन नाम सेट नहीं है, तो application का उपयोग किया जाएगा। नाम बदलने के लिए, bootstrap.properties फ़ाइल में निम्नलिखित गुण जोड़ा जा सकता है:
NOTE: जब प्रॉपर्टी ${spring.application.name} सेट कर रहे हों तो अपने ऐप नाम को आरक्षित शब्द application- से उपसर्ग न करें ताकि सही प्रॉपर्टी स्रोत को हल करने में समस्याओं से बचा जा सके।
बूटस्ट्रैप गुण /env एंडपॉइंट पर उच्च-प्राथमिकता वाले प्रॉपर्टी स्रोत के रूप में दिखाई देते हैं, जैसा निम्नलिखित उदाहरण में दिखाया गया है:
एक प्रॉपर्टी स्रोत जिसे configService:<दूरस्थ रिपॉजिटरी का URL>/<फ़ाइल नाम> कहा जाता है, में foo प्रॉपर्टी है जिसका मान bar है और यह सबसे उच्च प्राथमिकता वाला है।
NOTE: प्रॉपर्टी स्रोत के नाम में URL git रिपॉजिटरी है, कॉन्फ़िग सर्वर URL नहीं।
=== नमूना एप्लिकेशन
आप एक नमूना एप्लिकेशन https://github.com/spring-cloud/spring-cloud-config/tree/master/spring-cloud-config-sample[यहाँ] पा सकते हैं।
यह एक Spring Boot एप्लिकेशन है, इसलिए आप इसे सामान्य तंत्रों का उपयोग करके चला सकते हैं (उदाहरण के लिए, mvn spring-boot:run)।
जब यह चलता है, तो यह http://localhost:8888 (एक कॉन्फ़िगरेबल डिफ़ॉल्ट) पर कॉन्फ़िग सर्वर की तलाश करता है, इसलिए आप इसे एक साथ काम करते हुए देखने के लिए सर्वर भी चला सकते हैं।
नमूने में एक परीक्षण मामला है जहां कॉन्फ़िग सर्वर भी उसी JVM में (एक अलग पोर्ट पर) शुरू होता है, और परीक्षण यह सुनिश्चित करता है कि git कॉन्फ़िगरेशन रिपॉजिटरी से एक वातावरण गुण मौजूद है।
कॉन्फ़िग सर्वर का स्थान बदलने के लिए, आप bootstrap.yml (या सिस्टम गुणों और अन्य स्थानों में) में spring.cloud.config.uri सेट कर सकते हैं।
परीक्षण मामले में एक main() विधि है जो उसी तरह से सर्वर चलाती है (इसके पोर्ट के लिए लॉग देखें), इसलिए आप पूरे सिस्टम को एक प्रक्रिया में चला सकते हैं और इसके साथ खेल सकते हैं (उदाहरण के लिए, आप अपने IDE में main() विधि चला सकते हैं)।
main() विधि git रिपॉजिटरी के कार्यशील निर्देशिका के लिए target/config का उपयोग करती है, इसलिए आप वहां स्थानीय परिवर्तन कर सकते हैं और उन्हें चल रहे ऐप में परिलक्षित देख सकते हैं। निम्नलिखित उदाहरण परीक्षण मामले के साथ छेड़छाड़ का एक सत्र दिखाता है:
refresh एंडपॉइंट रिपोर्ट करता है कि "sample" प्रॉपर्टी बदल गई।
== निर्माण
:jdkversion: 1.7
=== मूल संकलन और परीक्षण
स्रोत बनाने के लिए आपको JDK {jdkversion} स्थापित करने की आवश्यकता होगी।
Spring Cloud अधिकांश निर्माण-संबंधित गतिविधियों के लिए Maven का उपयोग करता है, और आपको जिस प्रोजेक्ट में रुचि है उसे क्लोन करके और टाइप करके काफी जल्दी शुरू हो जाना चाहिए
NOTE: आप स्वयं Maven (>=3.3.3) भी स्थापित कर सकते हैं और नीचे दिए गए उदाहरणों में ./mvnw के स्थान पर mvn कमांड चला सकते हैं। यदि आप ऐसा करते हैं तो आपको अपने स्थानीय Maven सेटिंग्स में स्प्रिंग प्री-रिलीज़ आर्टिफैक्ट्स के लिए रिपॉजिटरी घोषणाएँ नहीं हैं तो -P spring जोड़ने की भी आवश्यकता हो सकती है।
NOTE: ध्यान रखें कि आपको -Xmx512m -XX:MaxPermSize=128m जैसे मान के साथ MAVEN_OPTS पर्यावरण चर सेट करके 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 देखें।
NOTE: यदि सब कुछ विफल हो जाता है, तो .travis.yml से कमांड के साथ बिल्ड करें (आमतौर पर ./mvnw install)।
=== दस्तावेज़ीकरण
spring-cloud-build मॉड्यूल में एक "docs" प्रोफ़ाइल है, और यदि आप इसे चालू करते हैं तो यह src/main/asciidoc से asciidoc स्रोत बनाने का प्रयास करेगा। उस प्रक्रिया के भाग के रूप में यह एक README.adoc की तलाश करेगा और सभी इन्क्लूड को लोड करके इसे संसाधित करेगा, लेकिन इसे पार्स या रेंडर नहीं करेगा, बस इसे ${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" से उपलब्ध है।
NOTE: m2e के पुराने संस्करण Maven 3.3 का समर्थन नहीं करते हैं, इसलिए एक बार प्रोजेक्ट्स को Eclipse में आयात करने के बाद आपको m2eclipse को प्रोजेक्ट्स के लिए सही प्रोफ़ाइल का उपयोग करने के लिए भी कहना होगा। यदि आप प्रोजेक्ट्स में POM से संबंधित कई अलग-अलग त्रुटियाँ देखते हैं, तो जाँच करें कि आपके पास एक अद्यतन स्थापना है। यदि आप 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]
JCE फ़ाइलों को JDK/jre/lib/security फ़ोल्डर में निकालें, आपके द्वारा उपयोग किए जाने वाले JRE/JDK x64/x86 के किसी भी संस्करण के लिए।
== योगदान
:spring-cloud-build-branch: master
Spring Cloud गैर-प्रतिबंधात्मक Apache 2.0 लाइसेंस के तहत जारी किया गया है, और एक बहुत ही मानक Github विकास प्रक्रिया का अनुसरण करता है, जिसमें समस्याओं के लिए Github ट्रैकर का उपयोग और पुल अनुरोधों को मास्टर में मर्ज करना शामिल है। यदि आप कुछ भी छोटा योगदान देना चाहते हैं तो कृपया संकोच न करें, लेकिन नीचे दिए गए दिशानिर्देशों का पालन करें।
=== योगदानकर्ता लाइसेंस समझौते पर हस्ताक्षर करें इससे पहले कि हम एक गैर-तुच्छ पैच या पुल अनुरोध स्वीकार करें, हमें आपको https://cla.pivotal.io/sign/spring[Contributor License Agreement] पर हस्ताक्षर करने की आवश्यकता होगी। योगदानकर्ता समझौते पर हस्ताक्षर करने से किसी को मुख्य रिपॉजिटरी में कमिट अधिकार नहीं मिलते हैं, लेकिन इसका मतलब यह है कि हम आपके योगदान को स्वीकार कर सकते हैं, और यदि हम ऐसा करते हैं तो आपको लेखक का श्रेय मिलेगा। सक्रिय योगदानकर्ताओं को मुख्य टीम में शामिल होने के लिए कहा जा सकता है, और पुल अनुरोधों को मर्ज करने की क्षमता दी जा सकती है।
=== आचार संहिता यह प्रोजेक्ट योगदानकर्ता वाचा https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[आचार संहिता] का पालन करता है। भाग लेने से, आपसे इस आचार को बनाए रखने की अपेक्षा की जाती है। कृपया अस्वीकार्य व्यवहार की रिपोर्ट [email protected] पर करें।
=== कोड परंपराएँ और घरेलू कार्य पुल अनुरोध के लिए इनमें से कोई भी आवश्यक नहीं है, लेकिन ये सभी मदद करेंगे। इन्हें मूल पुल अनुरोध के बाद लेकिन मर्ज से पहले भी जोड़ा जा सकता है।
eclipse-code-formatter.xml फ़ाइल का उपयोग करके फ़ॉर्मेटर सेटिंग्स आयात कर सकते हैं। यदि IntelliJ का उपयोग कर रहे हैं, तो आप उसी फ़ाइल को आयात करने के लिए
https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter Plugin] का उपयोग कर सकते हैं।.java फ़ाइलों में कम से कम एक @author टैग के साथ एक सरल Javadoc वर्ग टिप्पणी हो जो आपको पहचानती है, और अधिमानतः कम से कम एक पैराग्राफ हो जो बताता है कि वर्ग किसके लिए है।.java फ़ाइलों में ASF लाइसेंस हेडर टिप्पणी जोड़ें (प्रोजेक्ट में मौजूदा फ़ाइलों से कॉपी करें)@author के रूप में जोड़ें जिन्हें आप काफी हद तक संशोधित करते हैं (कॉस्मेटिक परिवर्तनों से अधिक)।Fixes gh-XXXX जोड़ें (जहां XXXX समस्या संख्या है)।=== 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 को सेटअप करने के लिए आपको हमारे कोडिंग कन्वेंशन, इंस्पेक्शन प्रोफाइल आयात करने और चेकस्टाइल प्लगइन सेट करना चाहिए।
निम्नलिखित फ़ाइलें 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` फ़ाइल आयात करें।
.चेकस्टाइल
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` अनुभाग में `+` आइकन पर क्लिक करें। वहाँ, आपको यह परिभाषित करना होगा कि चेकस्टाइल नियम कहाँ से लिए जाएँ। ऊपर दी गई छवि में, हमने क्लोन किए गए 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` पर सेट करें क्योंकि हम प्रोडक्शन और टेस्ट स्रोतों के लिए चेकस्टाइल नियम लागू करते हैं।
stop()start()