2010-04-09 7 views
27

बिल्ड प्रक्रिया के दौरान डिफ़ॉल्ट रूप से मैवेन खाली निर्देशिका को हटा रहा है।
क्या आप जानते हैं कि उत्पन्न पैरामीटर/टेस्ट-क्लास फ़ोल्डर में खाली निर्देशिकाओं को शामिल करने के लिए मेवेन को निर्देश देने के लिए पोम में पैरामीटर निर्दिष्ट किया जा सकता है?मेवेन - खाली निर्देशिकाएं कैसे शामिल करें

उत्तर

31

this ticket MRESOURCES-36 के अनुसार, <includeEmptyDirs> तत्व होना चाहिए, लेकिन केवल Maven Resources Plugin 2.3 के लिए होना चाहिए।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
    <includeEmptyDirs>true</includeEmptyDirs> 
    </configuration> 
</plugin> 

Maven संस्करणों जो संसाधन प्लगइन के एक पुराने संस्करण शामिल के लिए:

तक इस मुद्दे को तय हो गई है, यहाँ एक समाधान मैं सफलतापूर्वक प्रयोग कर रहे है।
इस प्लगइन तत्व को project/build/plugins में अपने pom.xml में जोड़ें, और mkdir कार्य में dir को बदलें।

आप एकाधिक निर्देशिकाओं के लिए एकाधिक <mkdir> तत्व प्राप्त कर सकते हैं। mkdir कार्य कुछ भी नहीं करता है अगर निर्देशिका पहले ही संसाधन प्लगइन द्वारा कॉपी की गई है।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>create-empty-directory</id> 
     <phase>process-classes</phase> 
     <goals> 
     <goal>run</goal> 
     </goals> 
     <configuration> 
     <tasks> 
      <mkdir dir="${basedir}/target/classes/empty" /> 
     </tasks> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

यह मूल रूप से openejb-standalone pom.xml openejb परियोजना में से आया है।

+1

नाइस (और तुम हो मेरी +1) लेकिन मैं एक टिप्पणी छोड़ने के लिए भूल गया: हो सकता है स्पष्ट है कि 2.3 संसाधन प्लगइन का संस्करण है, न ही (और antrun वैकल्पिक हल Maven के रिलीज से पहले उपयोगी था संसाधन प्लगइन का संस्करण 2.3) –

+0

@ पास्कल: ठीक है आप हैं, और मैंने आपकी टिप्पणियों को बेहतर ढंग से प्रतिबिंबित करने के लिए अपना उत्तर अपडेट कर दिया है। – VonC

+0

मैंने इसे 'scr \ main \ webapp \' में एक खाली फ़ोल्डर के लिए आजमाया है और यह प्लगइन संस्करण 2.6 (उपरोक्त पहले दृष्टिकोण का उपयोग करके) के साथ काम नहीं कर रहा है। इसे होना चाहिए? – Bizmarck

2

हमें आमतौर पर किसी भी निर्देशिका में खाली प्लेसहोल्डर फ़ाइल शामिल करके इस समस्या को हल किया गया है जिसे हमें बनाने की आवश्यकता है, लेकिन निर्माण समय पर कोई उपयोगी सामग्री नहीं है।

यह भी लाभ है कि फ़ाइल प्रारूप (उदा। ज़िप फ़ाइलें) जो खाली निर्देशिकाओं की अवधारणा को अनुमति नहीं देते हैं, फिर भी सही निर्देशिका संरचना बनायेंगे।

14

आपको लक्ष्य/परीक्षण-वर्गों के तहत खाली फ़ोल्डर क्यों चाहिए?

दूसरी ओर आप ज़िप/tar.gz फ़ाइलों में खाली फ़ोल्डर बनाने के लिए असेंबली प्लगइन का उपयोग कर सकते हैं।

बस अपने विधानसभा वर्णनकर्ता में एक प्रविष्टि एक मौजूदा फ़ोल्डर का संदर्भ जो (इस मामले src/मुख्य/संसाधन/bin में ... के रूप में .tar.gz और ज़िप फ़ाइलों के लिए

<fileSet> 
    <directory>src/main/resources/bin</directory> 
    <outputDirectory>/logs</outputDirectory> 
    <directoryMode>0755</directoryMode> 
    <excludes> 
    <exclude>*</exclude> 
    </excludes> 
</fileSet> 

ऊपर कार्य बनाने ठीक है। उपरोक्त निर्देशिका मोड केवल तभी जरूरी है जब आप .tar.gz फाइलें बनाते हैं।

दूसरी संभावना है कि आपके फ़ोल्डर संरचना में एक खाली फ़ोल्डर बनाना है जो असेंबली प्लगइन (जैसे ज़िप, tar.gz इत्यादि) के साथ शामिल है।) ... बीटीडब्ल्यू: ज़िप, tar.gz खाली फ़ोल्डर्स को अनुमति दें।

+4

के लिए https://jira.codehaus.org/browse/MWAR-128 देखें, आपको मेरा +1 मिलता है क्योंकि मुझे इस असेंबली-चाल की आवश्यकता है, लेकिन आप ओपी की ज़रूरतों पर सवाल क्यों करते हैं? – Superole

1

मैं khmarbaise तरह का सुझाव दिया विधानसभा प्लगइन का इस्तेमाल किया है, लेकिन यह काम करने के लिए मैं एक चींटी शैली है कि कोई फाइल या निर्देशिका संग्रह में crept सुनिश्चित करने के लिए बाहर निकालने के उपयोग करने के लिए उसे प्राप्त कर: यह काम नहीं कर रहा है, तो

<excludes> 
    <exclude>**/*</exclude> 
</excludes> 
1

आप मेवेन संसाधन प्लगइन 2.7 का उपयोग कर सकते हैं।

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <includeEmptyDirs>true</includeEmptyDirs> 
      </configuration> 
     </plugin> 
+0

कृपया OP – JackWhiteIII

+0

के लिए जानकारी जोड़ें कृपया इसका क्या मतलब है? – Belkasmi