2011-10-26 7 views
30

In quello che deve essere un evento comune, ho bisogno di includere una directory vuota in un assembly. Nel mio caso si tratta di log /.Come posso includere una directory vuota in un assembly di Maven?

Ho provato diverse varianti nel descrittore di montaggio come:

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

e la directory ottiene appena potato.

ho cercato di escludere pure, ma che comprendeva ancora un sacco di cose:

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

risposta

19

Cortesia, this SO answer e con alcuni tentativi ed errori, il seguente sembra di lavorare per me ...

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

La chiave sembra essere quello di garantire che <directory> tag specifica una valida esistente cartella, che non ha nessun sottocartelle/.

+5

Se la directory contiene cartelle, è possibile escluderle tutte (e tutti i file) utilizzando ' **/*'. – Leukipp

+0

Questa soluzione non ha funzionato per me. Christopher ha funzionato bene. – BlackEye

40

funziona questo sempre per me:

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

grazie per il suo utile campione. Inoltre, se la "directory" di input si basa su una sottodirectory di build, non dimenticare di inoltrare le directory vuote anche al passaggio delle risorse: cf.https: //stackoverflow.com/questions/2605747/maven-how-to-include- empty-directory – boly38

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

esempio

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

In questo caso, anche se ci sono alcuni contenuti all'interno directory Logs, non saranno inclusi in binario assemblati in directory Feed.

Problemi correlati