2011-10-26 8 views
30

En lo que debe ser una ocurrencia común, necesito incluir un directorio vacío en un ensamblaje. En mi caso, es logs /.¿Cómo incluyo un directorio vacío en un ensamblaje de maven?

He probado diferentes variaciones en el descriptor de asamblea como:

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

y el directorio sólo se pone podadas.

Traté de excluir también, pero que todavía incluía un montón de cosas:

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

Respuesta

19

Cortesía, this SO answer y con un poco de ensayo y error, la siguiente parece que funciona para mí ...

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

La clave parece ser la de asegurar que <directory> etiqueta especifica un válido/ carpeta existente , que no tiene ningún subcarpetas.

+5

Si su directorio contiene carpetas, puede excluirlas todas (y todos los archivos) usando ' **/*'. – Leukipp

+0

Esta solución no funcionó para mí. Christopher funcionó bien. – BlackEye

40

Esto siempre funciona para mí:

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

gracias por su útil muestra. Además, si su 'directorio' de entrada depende de un subdirectorio de compilación, no olvide reenviar los directorios vacíos en el paso de recursos también: cf.https: //stackoverflow.com/questions/2605747/maven-how-to-include- directorios vacíos – boly38

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

por ejemplo,

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

En este caso, a pesar de que existen algunos contenidos dentro del directorio de registros, no se incluirán en el sistema binario montado en el directorio RSS.

Cuestiones relacionadas