2009-10-12 5 views
8

मेवेन की लक्षित निर्देशिका से उत्पन्न निर्माण कलाकृतियों को कैसे हटाया जाए? मेवेन निर्देशिका को लक्षित करने के लिए एक जार या युद्ध फ़ाइल उत्पन्न करता है। मैवेन ने स्थानीय भंडार में जार/युद्ध फ़ाइल स्थापित करने के बाद उस फ़ाइल को हटाना चाहूंगा (यानी, मैवेन ने 'इंस्टॉल' लक्ष्य निष्पादित करने के बाद)। निकालें या तो इंस्टॉल लक्ष्य या अलग-अलग लक्ष्य पर मैन्युअल रूप से निष्पादित हो सकता है।मेवेन की लक्षित निर्देशिका से उत्पन्न निर्माण कलाकृतियों को कैसे हटाया जाए?

नोट, कि मैं लक्ष्य निर्देशिका के अन्य हिस्सों को बरकरार रखना चाहता हूं, उदाहरण के लिए लक्ष्य/साइट और लक्ष्य/surefire-reports।

+1

जिज्ञासा से, इसके पीछे क्या कारण है? –

+0

मैंने यह देखा है कि जब कोई एनएसआईएस एक्सई फ़ाइल जैसे आर्टिफैक्ट बनाना चाहता है लेकिन जार आर्टिफैक्ट प्रकार का उपयोग कर रहा है क्योंकि इसका जीवन चक्र बाइंडिंग का सुविधाजनक सेट है, या यदि उन्हें इंटरमीडिएट आर्टिफैक्ट की परवाह नहीं है (उदाहरण के लिए जार फ़ाइल जिसमें से exe का उत्पादन होता है।) –

+0

असल में मैं एक सतत एकीकरण सर्वर के अंदर मेवेन बिल्ड चला रहा हूं, और मुझे केवल स्थानीय रिपो में स्थापित रिपोर्ट और सामान में रूचि है। बाकी की फाइलें बस जगह बर्बाद कर रही हैं और मेरी जार फाइलें बड़ी हैं। –

उत्तर

18

बस स्वच्छ प्लगइन का उपयोग करें और स्थापित करें चरण के बाद एक निष्पादन चलाएँ:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${project.build.outputDirectory}</directory> 
       <includes> 
       <include>**/*.jar</include> 
       </includes> 
      </fileset> 
      </filesets> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

+1, लेकिन निर्देशिका तत्व $ {project.build.outputDirectory} होना चाहिए ताकि ओवरराइड मानों की अनुमति हो सके –

+5

मुझे परिणामों से केवल एक विशेष निर्देशिका को हटाना होगा। संस्करण 2.3 के बाद से प्लगइन पूरी निर्देशिका को डिफ़ॉल्ट रूप से हटा देता है जब तक आप टैग के भीतर बहिष्कृत DefaultDirectories प्रॉपर्टी निर्दिष्ट नहीं करते हैं। – Danny

0

मेवेन में कुछ भी नहीं बनाया गया है जो यह कर सकता है। आप आर्टिफैक्ट को हटाए जाने के बाद एंटी स्क्रिप्ट निष्पादित करने के लिए antrun प्लगइन का उपयोग कर सकते हैं, या आर्टिफैक्ट को हटाने के लिए कमांड लाइन का उपयोग करने के लिए exec प्लगइन का उपयोग करें या अपना स्वयं का प्लग-इन लिखें।

मेरा सुझाव है कि इनमें से कोई भी काम करने में कोई मूल्य नहीं है, यदि कोई है। मेवेन को target में मध्यवर्ती और अंतिम कलाकृतियों को और अधिक कुशल बनाने के लिए डिज़ाइन किया गया है। ऐसा करने के लिए कुछ भी उपलब्ध नहीं है क्योंकि यह संकेतक है कि यह बहुत कम मूल्य है। यदि यह आपके लिए मूल्यवान है, तो आपके पास कुछ विकल्प हैं।

+1

अच्छा, यह सच नहीं है। डोमी का जवाब देखें। ऐसा कहकर, मुझे अभी भी आश्चर्य है कि ऐसा क्यों करेगा। फिल्टर के लिए –

0

मैं जानता हूँ कि मैं थोड़ा देर से कर रहा हूँ। लेकिन मुझे लगता है कि मुद्दा यह था कि एक मैवेन प्रोजेक्ट स्वचालित रूप से कलाकृतियों को संग्रहित करता है। मेरे मामले में, मैंने स्वचालित संग्रह को अक्षम कर दिया और पोस्ट बिल्ड क्रियाओं का उपयोग करके मैन्युअल रूप से कलाकृतियों को संग्रहीत किया। इस तरह, केवल उन कलाकृतियों में जो मुझे रूचि है, संग्रहीत हैं। मैं अगली बिल्ड रन तक डिस्क पर जेनरेट की गई कलाकृतियों को छोड़ने के लिए तैयार हूं।