2011-10-26 14 views
30

एक आम अवसर होने पर, मुझे एक असेंबली में एक खाली निर्देशिका शामिल करने की आवश्यकता है। मेरे मामले में यह लॉग/है।मैवेन असेंबली में एक खाली निर्देशिका कैसे शामिल करूं?

मैं की तरह विधानसभा डिस्क्रिप्टर में विभिन्न रूपों की कोशिश की है:

<fileSet> 
    <directory>${basedir}/target</directory> 
    <includes> 
    <include>doesntexist</include> 
    </includes> 
    <outputDirectory>/logs</outputDirectory> 
    <fileMode>0644</fileMode> 
</fileSet> 

और निर्देशिका सिर्फ कम कर दिए हैं हो जाता है।

मैं भी बाहर करने के लिए कोशिश की, लेकिन है कि अभी भी सामान के बहुत सारे शामिल:

<fileSet> 
    <directory>${basedir}/target</directory> 
    <excludes> 
    <exclude>*</exclude> 
    </excludes> 
    <outputDirectory>/logs</outputDirectory> 
    <fileMode>0644</fileMode> 
</fileSet> 

उत्तर

19

सौजन्य, this SO answer और कुछ परीक्षण और त्रुटि, के बाद एक मेरे लिए काम करने लगता है के साथ ...

<fileSet> 
    <directory>src/main/assembly</directory> 
    <outputDirectory>/logs</outputDirectory> 
    <excludes> 
    <exclude>*</exclude> 
    </excludes> 
</fileSet> 

कुंजी सुनिश्चित करना है कि <directory> टैग एक वैध/मौजूदा फ़ोल्डर, जो उप- नहीं है निर्दिष्ट करता है लगता है।

+5

यदि आपकी निर्देशिका में फ़ोल्डर्स हैं तो आप ' **/*' का उपयोग करके उन सभी (और सभी फ़ाइलों) को बाहर कर सकते हैं। – Leukipp

+0

यह समाधान मेरे लिए काम नहीं किया था। क्रिस्टोफर ने ठीक काम किया। – BlackEye

40

यह हमेशा मेरे लिए काम करता है:

<fileSets> 
    <fileSet> 
    <directory>.</directory> 
    <outputDirectory>logs</outputDirectory> 
    <excludes> 
     <exclude>*/**</exclude> 
    </excludes> 
    </fileSet> 
</fileSets> 
+0

उनके उपयोगी नमूने के लिए धन्यवाद। इसके अतिरिक्त, यदि आपका इनपुट 'निर्देशिका' एक बिल्ड उपनिर्देशिका पर भरोसा करता है, तो संसाधनों पर खाली निर्देशिकाओं को भी आगे बढ़ना न भूलें: cf.https: //stackoverflow.com/questions/2605747/maven-how-to-include- खाली-निर्देशिका – boly38

1
<fileSets> 
    <fileSet> 
     <directory>./EMPTY_DIRECTORY_NAME</directory> 
     <outputDirectory>/REQUIRED_DIRECTORY_NAME in Assembly </outputDirectory> 
     <excludes> 
      <exclude>*/**</exclude> 
     </excludes> 
    </fileSet> 
</fileSets> 

उदा

<fileSets> 
    <fileSet> 
     <directory>./Logs</directory> 
     <outputDirectory>/Feed</outputDirectory> 
     <excludes> 
      <exclude>*/**</exclude> 
     </excludes> 
    </fileSet> 
</fileSets> 

इस मामले भले ही लॉग्स निर्देशिका के अंदर कुछ सामग्री देखते हैं में, यह फ़ीड निर्देशिका में इकट्ठे बाइनरी में शामिल नहीं किया जाएगा।

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