2011-02-11 9 views
10

Maven के पोम संदर्भ राज्यों निम्नलिखित:क्या मेवेन 'सिस्टम' गुंजाइश ट्रांजिटिव है, लेकिन 'प्रदान नहीं किया गया' है?

प्रदान की - इतना संकलन तरह है, लेकिन यह संकेत करता है कि आप JDK या एक कंटेनर कार्यावधि में इसे प्रदान करने की उम्मीद है। यह केवल संकलन और परीक्षण कक्षापथ पर उपलब्ध है, और संक्रमणीय नहीं है।

...

प्रणाली - इस दायरे के लिए प्रदान की छोड़कर आप करने के लिए है कि जार जिसमें यह स्पष्ट रूप से प्रदान समान है। आर्टिफैक्ट हमेशा उपलब्ध है और भंडार में नहीं देखा गया है।

अब मैंने 'प्रोजेक्ट' पर कई 'सिस्टम' निर्भरताओं के साथ एक परियोजना को परिवर्तित कर दिया है। हालांकि, ऐसा प्रतीत होता है कि सिस्टम निर्भरता संक्रमणीय हैं, जो उन्हें प्रदान करने के लिए बहुत ही समान बनाती है, और अब मेरे निर्माण में कई लापता निर्भरताओं का कारण बन रही है। मेरा सवाल दो गुना है:

  1. सिस्टम स्कोप संक्रमणीय है? यदि हां, तो क्या मैवेन गलत या अधूरा संदर्भ है?
  2. निर्भरता को अंतिम असेंबली में पैकेज किए बिना, निर्भरता को संक्रमित करने का कोई तरीका है?
+1

आप "बनाने निर्भरता सकर्मक" क्या मतलब है? (सिस्टम स्कोप के लिए, इसका औचित्य यह है कि "सिस्टम निर्भरता विशेष रूप से जेडीके द्वारा प्रदान की जाने वाली कलाकृतियों पर निर्भरताओं को हल करने के लिए उपयोगी होती है, लेकिन जहां पहले अलग डाउनलोड के रूप में उपलब्ध है" ... जो मुझे बिल्कुल समझ में नहीं आता है, क्योंकि आपको आवश्यकता है एक बार जेडीके द्वारा प्रदान किए जाने के बाद पीओएम को बदलने के लिए, तो प्रदान किए जाने के दायरे को भी बदल सकते हैं।) –

+0

'सिस्टम' गुंजाइश 'प्रदान की गई' के समान है जिसमें यह कहा गया है कि निर्भरता मेवेन के अलावा किसी अन्य चीज़ द्वारा प्रदान की जाएगी । –

उत्तर

2

ट्रांजिटिव निर्भरता हमेशा असेंबली का हिस्सा होगी। आपके इरादे से व्यवहार करने के लिए कोई गुंजाइश नहीं है।

सवाल यह है कि: एक परियोजना क्यों है जिसे अन्य परियोजनाओं में शामिल किया जाना है (जैसा कि आपने संक्रमणशील निर्भरताओं के इरादे से कहा है) एक असेंबली? आम तौर पर एक परियोजना जिसमें एक वार्ड-असेंबली है, को अन्य परियोजनाओं में निर्भरता के रूप में शामिल नहीं किया जाएगा (डब्ल्यूएआर-निर्भरताएं उनकी पारस्परिक निर्भरताओं को बिल्कुल उपलब्ध नहीं कराती हैं क्योंकि वे केवल वार ओवरले के लिए लक्षित हैं)।

यदि यह एक मेवेन असेंबली है तो यह आसान है। मेवेन असेंबली प्लगइन की प्रतिलिपि बनाने वाली फ़ाइलों को फ़िल्टर करने के लिए "बहिष्कृत" किया गया है।

यदि यह एक युद्ध-परियोजना आप इन शामिल नहीं के साथ युद्ध से कुछ जार बाहर कर सकते हैं होगा:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <packagingExcludes>WEB-INF/lib/*-[toExclude1]-*.jar,WEB-INF/lib/[toExclude2]*.jar</packagingExcludes> 
    </configuration> 
</plugin> 
संबंधित मुद्दे