तीन साल पहले मैंने संस्करण 99 का उपयोग नहीं करने की सिफारिश की थी , लेकिन अब मैंने एक बेहतर तरीका खोज लिया है, खासकर जब से संस्करण 99 ऑफ़लाइन है:
अपने प्रोजेक्ट के मूल POM में, बिल्ड को विफल करने के लिए maven-enforcer- प्लगइन का उपयोग करें यदि निर्माण में अवांछित निर्भरता रेंगती है। यह प्लगइन के प्रतिबंधित निर्भरता नियम का उपयोग करके किया जा सकता है :
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>only-junit-dep-is-used</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
फिर जब वह आपको एक अवांछित निर्भरता के बारे में सचेत करता है, तो उसे मूल POM के <dependencyManagement>
अनुभाग में बाहर करें :
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<version>2.1.8.RELEASE</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
इस तरह अनचाहे निर्भरता गलती से दिखाई नहीं देगी (केवल एक व्यक्ति <exclusion>
को भूलना आसान है), यह संकलन समय ( provided
गुंजाइश के विपरीत ) के दौरान भी उपलब्ध नहीं होगा , कोई फर्जी निर्भरता नहीं हैं (संस्करण 99 के विपरीत) और यह ' कस्टम रिपॉजिटरी के बिना काम करेंगे (संस्करण 99 के विपरीत)। यह दृष्टिकोण विरूपण साक्ष्य के संस्करण, क्लासिफायर, स्कोप या पूरे समूहीकरण के आधार पर भी काम करेगा - विवरण के लिए प्रलेखन देखें।