maven 2 - springframework - maven2: excluyendo el directorio de WAR
sec authorize (5)
Ambas soluciones no serían útiles, ya que agregarían un recurso adicional que luego se desactivará. La carpeta de origen de la aplicación web se copia de manera predeterminada, sin el mecanismo de recursos.
El mecanismo para desactivar una parte de eso es a través del parámetro <warSourceExcludes>
, como este:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>webscripts/**</warSourceExcludes>
</configuration>
</plugin>
Intenté excluir todo el directorio ($ {basedir} / src / main / webapp / webscripts) de mi archivo WAR pero falló. ¿Qué está mal?
esto no funciona:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/webscripts</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
</webResources>
</configuration>
esto también:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<excludes>
<exclude>**/webscripts</exclude>
</excludes>
</resource>
</webResources>
</configuration>
¿Alguien puede ayudar?
En la versión 2.1-alfa-1, esto se denominó incorrectamente warSourceExcludes. El parámetro correcto es packagingExcludes
Ejemplo de uso (excluye WEB-INF / statics / folder de WAR):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warName>searchservice-web</warName>
<packagingExcludes>WEB-INF/statics/</packagingExcludes>
</configuration>
</plugin>
Tuve un escenario en el que tuve que excluir dos carpetas que podrían coincidir con *scripts
y estaban en la carpeta de recursos. La primera confusión fue si proporcionar el valor de exclusión como src/main/resources/*scripts
o como WEB-INF/classes/*scripts
, es decir, estructura previa o posterior a la compilación.
Era muy importante proporcionar /**
para que todo el directorio se excluyera del archivo war. En mi caso, *scripts/**
.
Aquí está la configuración final que funcionó:
<packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
Para eliminar los archivos fuente he utilizado la siguiente configuración en maven
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<packagingExcludes>
eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
</packagingExcludes>
</configuration>
</plugin>
warSourceExcludes parece que no se acaba de renombrar packaging . Excluye .
warSourceExcludes : la lista de tokens separados por comas para excluir al copiar el contenido de warSourceDirectory.
packagingExcludes : la lista de tokens separados por comas para excluir del WAR antes del empaquetado. Esta opción se puede usar para implementar el caso de uso de WAR flaco.
Hay una gran diferencia: con el paquete Excluidos , los tokens están completamente excluidos del último archivo war. Con warSourceExcludes , los tokens simplemente se ignoran al copiar el directorio war en el archivo war. Como resultado, si los tokens están presentes en el webappDirectory por ejemplo, no se ignorarán cuando se usen warSourceExcludes, pero sí cuando se use packagingExcludes .
Y un ejemplo de sintaxis funcional:
<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>