java - commands - Maven: cómo incluir directorios vacíos
maven resources folder (5)
¿Por qué necesita carpetas vacías en target / test-classes?
Por otro lado, puede usar el complemento de ensamblaje para crear carpetas vacías en archivos zip / tar.gz.
Simplemente cree una entrada en su descriptor de ensamblaje que haga referencia a una carpeta existente (en este caso src / main / resources / bin ...
<fileSet>
<directory>src/main/resources/bin</directory>
<outputDirectory>/logs</outputDirectory>
<directoryMode>0755</directoryMode>
<excludes>
<exclude>*</exclude>
</excludes>
</fileSet>
Lo anterior también funciona para archivos .tar.gz y zip. El modo de directorio anterior solo es necesario si crea archivos .tar.gz.
La segunda posibilidad es crear una carpeta vacía en la estructura de su carpeta que se incluye con el plugin de ensamblaje (como zip, tar.gz, etc.) ... Por cierto, zip, tar.gz permite carpetas vacías.
Por defecto, durante el proceso de compilación maven está eliminando los directorios vacíos.
¿Sabes si se puede especificar un parámetro en el pom para indicarle a maven que incluya directorios vacíos en la carpeta objetivo / clases de prueba generadas?
Por lo general, hemos solucionado este problema al incluir un archivo de marcador de posición vacío en los directorios que necesitamos crear pero que no tienen contenido útil en tiempo de compilación.
Esto también tiene la ventaja de que los formatos de archivos (por ejemplo, archivos zip) que no permiten el concepto de directorios vacíos seguirán creando la estructura de directorios correcta.
Si no funciona, puede usar Maven Resources Plugin 2.7 .
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>
Utilicé el Complemento de ensamblaje como se sugirió en khmarbaise, pero para que funcionara necesitaba usar una exclusión de estilo Ant para asegurarme de que ningún archivo o directorio se deslizara dentro del archivo:
<excludes>
<exclude>**/*</exclude>
</excludes>
De acuerdo con este boleto MRESOURCES-36 , debe haber un elemento <includeEmptyDirs>
, pero solo para 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>
Para las versiones de Maven que incluían una versión anterior del plugin de Recursos:
Hasta que se resuelva este problema, aquí hay una solución que he estado usando con éxito.
Agregue este elemento de complemento aproject/build/plugins
en supom.xml
, y cambie el directorio en la tarea mkdir.Puede tener múltiples elementos
<mkdir>
para múltiples directorios. La tareamkdir
no hace nada si el directorio ya ha sido copiado por el complemento de recursos.
<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>
Esto originalmente vino del pom.xml
autónomo pom.xml
en el proyecto openejb.