2012-01-16 14 views
13

मैं एक साधारण मैवेन प्रोजेक्ट के लिए मेवेन-शेड-प्लगइन का उपयोग कर रहा हूं, प्लगइन सफलतापूर्वक सभी निर्भरताओं को अंतिम "छायांकित" जार में शामिल करता है। प्रक्रिया हर बार अच्छी तरह से काम करती है और मुझे वही चीज़ बनाती है जो मुझे चाहिए।मैवेन-शेड-प्लगइन का उपयोग करते समय अधूरा चेतावनी

जब "पहला" समय चलाएं (clean के बाद), प्लगइन शांत है और बहुत कम आउटपुट उत्पन्न करता है। हालांकि, जब पुन: चलाया जाता है (अंतिम निर्माण से clean के बिना), इस तरह के कई चेतावनी संदेश हैं;

[WARNING] We have a duplicate package/a/b/foo.class 
[WARNING] We have a duplicate package/c/d/bar.class 

यह केवल चेतावनी संदेश जाता है और अंतिम विरूपण साक्ष्य ठीक काम करता है।

मेरा प्रश्न सरल है: मैं clean को चलाने के बिना इन चेतावनी संदेशों को सुरक्षित रूप से कैसे काम कर सकता हूं या दबा सकता हूं?


ध्यान दें: सम्भावित समाधान Maven-विधानसभा-प्लगइन को स्थानांतरित करने के लिए होगा, लेकिन मैं नहीं है क्योंकि के लिए Maven-छाया-प्लगइन के लिए विन्यास बहुत अच्छा और सरल है पसंद करेंगे ।

+1

मुझे लगता है कि रिपोर्ट किए गए डुप्लिकेट सभी निर्भरता वर्ग हैं, है ना? उस स्थिति में वे सबसे पहले कुछ फ़ोल्डर में निकाले जाते हैं ताकि आप संकुल चरण से पहले या बाद में उन फ़ोल्डर्स के लिए एक साफ कदम जोड़ना चाहें (इस पर निर्भर करता है कि आपको बिल्डों के बीच में उन वर्गों की आवश्यकता है या नहीं)। – Thomas

+0

मेरे ऊपर उपरोक्त प्रश्न है ... चेतावनियों को दबाने के लिए कैसे। मेरे मामले में मैं कई वसंत पैकेज जार से निर्भरताएं शामिल कर रहा हूं जिन पर मेरा कोई नियंत्रण नहीं है - यानी मैं पहले "साफ" नहीं कर सकता। –

+0

यह बिल्कुल मेरी समस्या है! [ओह प्रिय!] (Http://xkcd.com/979/) – plasma147

उत्तर

10

ऐसा इसलिए है क्योंकि यह फ़ाइलों को पहले से छायांकित जार में छायांकन कर रहा है।

पहली बार जब आप एक साफ के बाद पैकेज चलाते हैं तो यह जार बना देगा। दूसरी बार जब आप इसे चलाते हैं तो यह परेशान नहीं होता क्योंकि जार पहले से मौजूद है।

छाया प्लगइन्स परिप्रेक्ष्य से यह नहीं जानता कि यह पहले ही छायांकित हो चुका है, इसलिए यह कक्षाओं को फिर से जोड़ने की कोशिश करता है।

हम जार प्लगइन कॉन्फ़िगर करके जार हर बनाने के लिए Maven मजबूर कर सकते हैं:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <forceCreation>true</forceCreation> 
    </configuration> 
</plugin> 

और यह मेरे लिए काम करता है। या तो वह या केवल एक साफ इंस्टॉल करें

+0

इस टिप के लिए धन्यवाद, कष्टप्रद लेकिन यह काम करता है। –

+0

इसके लिए धन्यवाद। 'मूल' जार का उपयोग करने के लिए प्लगइन पाने का कोई और तरीका है? मैं 'मेवेन-जार-प्लगइन' और 'मेवेन-शेड-प्लगइन' के बीच गतिशीलता को समझ नहीं पा रहा हूं –

संबंधित मुद्दे