2010-03-04 24 views
6

Estoy buscando la forma de copiar cualquier archivo a mi servidor web usando maven. Tengo un proyecto maven que contiene un conjunto de html, js, propiedades y archivos de configuración.¿Cómo descomprimir artefactos y filtrar recursos?

Me gustaría empacar mis cosas e implementarlas en el repositorio. Después de eso, en otro proyecto de maven me gustaría descomprimir archivos de artefactos, filtrar recursos y copiarlos a las carpetas específicas en el servidor.

¿Cuál es la mejor manera de hacerlo?

maven-dependency-plugin puede descomponer el artefacto, pero no encontré cómo usar el filtrado de recursos en este caso y cómo especificar varios directorios de salida.

Respuesta

1

me gustaría crear tantas distribuciones como lo requiere el uso de la maven assembly plugin y utilizar filteringen el tiempo de montaje. A continuación, puede implementar estos ensamblajes en un repositorio y, de hecho, usar el complemento de dependencia maven para recuperar y descomprimir un ensamblaje de una máquina determinada. Más sobre asambleas en el Chapter 8. Maven Assemblies del libro de Sonatype.

Actualización: Una alternativa si no desea implementar "filtrados" asambleas sería la creación de la Asamblea de la máquina objetivo (siendo el uso de perfiles de filtrado y como se sugiere). La distribución creada contendría el contenido correcto en las carpetas correctas (puede hacerlo con ensamblajes) y solo tendría que descomprimir el archivo para el último paso.

+0

Supongo que no es una buena idea almacenar en el repositorio los artefactos filtrados. El filtrado es algo específico del entorno. – eugenn

+0

@eugenn ¿Cuál es el problema con el almacenamiento de artefactos "filtrados" o artefactos específicos del entorno? En realidad, esto ocurre mucho, especialmente con distribuciones que pueden ser específicas de la plataforma (este es un ejemplo trivial, pero un archivo .zip o .tar.gz puede usar un carácter de final de línea diferente). Los artefactos no filtrados son inútiles de todos modos. –

+0

Por ejemplo, tengo docenas de entornos para implementar mi aplicación. Si aplicara el filtrado de cualquier artefacto en tiempo de construcción, entonces necesitaría desplegar en un repositorio docenas de artefactos diferentes. O puedo mantener una versión "sin filtrar" (en bruto) en el repositorio y usar el filtrado, luego solo produzco una aplicación final. Me gustaría poder generar un artefacto "sin filtrar" en un proyecto (está bien) y producir, personalizar la aplicación final en el segundo proyecto. El segundo proyecto debería eliminar los marcadores de posición de los artefactos que se generaron en el primer proyecto. – eugenn

Cuestiones relacionadas