Pom.xml में <निर्भरता> के तहत <गुंजाइश> क्या है?


179

प्रलेखन देख रहे हैं http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html , हम <scope>नीचे टैग देख सकते हैं<dependency>

वह क्या है और हम इसे परीक्षण चलाने के लिए कैसे उपयोग कर सकते हैं?


15
: यह सब बहुत अच्छी तरह से किए गए दस्तावेज़ों में विस्तार से बताया है maven.apache.org/guides/introduction/...
गुइडो

जवाबों:


266

<scope>: तत्व 6 मान ले जा सकते हैं संकलन , प्रदान की , क्रम , परीक्षण , प्रणाली और आयात

इस गुंजाइश का उपयोग एक निर्भरता की संवेदनशीलता को सीमित करने के लिए किया जाता है, और विभिन्न निर्माण कार्यों के लिए उपयोग किए जाने वाले क्लासपैथ को प्रभावित करने के लिए भी किया जाता है।

संकलन

यह डिफ़ॉल्ट स्कोप है, यदि कोई भी निर्दिष्ट नहीं किया जाता है। किसी परियोजना के सभी वर्गपथों में संकलन निर्भरताएँ उपलब्ध हैं। इसके अलावा, उन आश्रितों को आश्रित परियोजनाओं के लिए प्रचारित किया जाता है।

प्रदान की

यह बहुत कुछ संकलन जैसा है, लेकिन संकेत देता है कि आप JDK या कंटेनर को रनटाइम पर निर्भरता प्रदान करने की उम्मीद करते हैं। उदाहरण के लिए, जावा एंटरप्राइज एडिशन के लिए एक वेब एप्लिकेशन का निर्माण करते समय, आप सर्वलेट एपीआई और संबंधित जावा ईई एपीआई पर निर्भरता निर्धारित करेंगे, क्योंकि वेब कंटेनर उन कक्षाओं को प्रदान करता है। यह गुंजाइश केवल संकलन और परीक्षण वर्गपथ पर उपलब्ध है, और संक्रमणीय नहीं है।

क्रम

यह गुंजाइश इंगित करती है कि संकलन के लिए निर्भरता की आवश्यकता नहीं है, लेकिन निष्पादन के लिए है। यह रनटाइम और टेस्ट क्लासपैथ में है, लेकिन कंपाइल क्लासपाथ नहीं।

परीक्षा

यह गुंजाइश इंगित करती है कि आवेदन के सामान्य उपयोग के लिए निर्भरता की आवश्यकता नहीं है, और केवल परीक्षण संकलन और निष्पादन चरणों के लिए उपलब्ध है।

प्रणाली

यह गुंजाइश प्रदान करने के समान है सिवाय इसके कि आपको JAR प्रदान करना होगा जिसमें यह स्पष्ट रूप से शामिल हो। कलाकृति हमेशा उपलब्ध है और एक भंडार में नहीं देखा जाता है।

आयात (केवल मावेन 2.0.9 या बाद में उपलब्ध)

इस दायरे का उपयोग केवल अनुभाग में टाइप पोम की निर्भरता पर किया जाता है। यह इंगित करता है कि निर्दिष्ट पोम को उस पोम के अनुभाग में निर्भरता के साथ प्रतिस्थापित किया जाना चाहिए। चूंकि उन्हें प्रतिस्थापित किया जाता है, आयात के दायरे के साथ निर्भरताएं वास्तव में एक निर्भरता की सकारात्मकता को सीमित करने में भाग नहीं लेती हैं।

अपने प्रश्न के दूसरे भाग का उत्तर देने के लिए:

हम इसे रनिंग टेस्ट के लिए कैसे उपयोग कर सकते हैं?

ध्यान दें कि testगुंजाइश केवल परीक्षण चरण के लिए निर्भरता का उपयोग करने की अनुमति देती है।

पूर्ण विवरण के लिए प्रलेखन पढ़ें ।


तो अगर आप "परीक्षण" का उपयोग करते हैं तो क्या यह .jar में समाप्त होता है?
21

1
क्या होगा यदि संकलन और रनटाइम पर निर्भरता की आवश्यकता है?
एल्बिन


12

छह निर्भरता स्कोप:

  • संकलित करें : डिफ़ॉल्ट गुंजाइश, classpath दोनों के लिए उपलब्ध है src/mainऔरsrc/test
  • परीक्षण : classpath के लिए उपलब्ध हैsrc/test
  • प्रदान की गई : जैसे कि कॉम्प्लीमेंट लेकिन JDK या रनटाइम पर एक कंटेनर द्वारा प्रदान किया गया
  • रनटाइम : केवल रनटाइम के लिए संकलन की आवश्यकता नहीं है
  • प्रणाली : स्थानीय रूप से प्रदान की जाने वाली क्लासपैथ
  • आयात : केवल <dependencyManagement/>मावेन 2.0.9 में या बाद में उपलब्ध अन्य पीओएम को आयात कर सकता है


4

स्कोप टैग हमेशा क्लास पथ स्तर पर सकरात्मक निर्भरता और जार की उपलब्धता को सीमित करने के लिए उपयोग किया जाता है। यदि हम कोई गुंजाइश नहीं प्रदान करते हैं, तो डिफ़ॉल्ट गुंजाइश काम करेगी अर्थात कंपाइल


11
कंपाइल का मतलब है कि ऐप को कंपाइल करने और चलाने के लिए आपको JAR की जरूरत है। एक वेब अनुप्रयोग के लिए, एक उदाहरण के रूप में, JAR को WEB-INF / lib निर्देशिका में रखा जाएगा। बशर्ते कि आपको संकलन के लिए JAR की आवश्यकता है, लेकिन रन समय में पहले से ही एक JAR पर्यावरण द्वारा प्रदान किया जाता है, इसलिए आपको इसे अपने ऐप के साथ पैक करने की आवश्यकता नहीं है। एक वेब ऐप के लिए, इसका मतलब है कि JAR फाइल को WEB-INF / lib डायरेक्टरी में नहीं रखा जाएगा। एक वेब ऐप के लिए, यदि ऐप सर्वर पहले से ही JAR (या इसकी कार्यक्षमता) प्रदान करता है, तो "प्रदान" का उपयोग करें अन्यथा "संकलन" का उपयोग करें।
मुकेश

1
कृपया Yhis टिप्पणी अपने जवाब के अंदर जोड़ने
Supun Wijerathne

0

यदि हम कोई गुंजाइश प्रदान नहीं करते हैं तो डिफ़ॉल्ट गुंजाइश संकलित है, यदि आप पुष्टि करना चाहते हैं, तो बस ग्रहण संपादक में प्रभावी पोम टैब पर जाएं, यह आपको संकलन के रूप में दिखाएगा।


ओपी ने पूछा कि स्कोप क्या है और क्या नहीं है , डिफॉल्ट स्कोप क्या है , यह नहीं पता।
वाउचर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.