shade plugin org groupid files exclude example maven maven-assembly-plugin

plugin - ¿Cómo incluyo un directorio vacío en un ensamblaje de maven?



maven-jar-plugin (3)

En lo que debe ser una ocurrencia común, necesito incluir un directorio vacío en un ensamblaje. En mi caso, es logs /.

He intentado diferentes variaciones en el descriptor de ensamblaje como:

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

y el directorio simplemente se borra.

Traté de excluir también, pero eso aún incluía muchas cosas:

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


Cortesía, esta respuesta SO y con un poco de prueba y error, la siguiente parece funcionar para mí ...

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

La clave parece ser asegurar que la etiqueta <directory> especifique una carpeta válida / existente , que no tiene subcarpetas .


Esto siempre funciona para mí:

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


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

p.ej

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

En este caso, aunque haya algún contenido dentro del directorio Logs, no se incluirá en el binario ensamblado en el directorio Feed.