2011-09-08 10 views
6

Tengo un proyecto web Maven y tengo algunos archivos CSS y Javascript en la carpeta src \ main \ webapp \. Constantemente hago cambios en esos archivos y me gustaría ver mis cambios rápidamente. Si ejecuto maven install, lleva años debido a las dependencias del proyecto. A veces, todo lo que quiero cambiar es una línea de código en mi archivo CSS y no quiero volver a compilar todo lo demás. Tengo un plugin maven que publica mi archivo war de salida en mi instancia de JBoss. Idealmente, me gustaría ejecutar una secuencia de comandos de ejecución maven que copie rápidamente mis recursos web en la carpeta de salida y replantee el archivo war modificado sin volver a compilar todo lo demás.Pregunta de recursos web de Maven

he intentado invocar los generar recursos-objetivo, pero que no parece que buscar en el directorio src \ directorio principal \ webapp, ya que está a la espera de mis recursos para estar bajo el src \ \ carpeta principal de recursos. ¿Que me estoy perdiendo aqui?

Gracias

Respuesta

5

Si desea agregar más recursos para copiar durante el plugin de generar recursos, puede cambiar las carpetas de recursos utilizados por su compilación. La propiedad project.build.resources controla en qué carpetas se buscan recursos. Se podría añadir:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
     <directory>src/main/webApp</directory> 
     <includes> 
      <include>*.css</include> 
      <include>*.js</include> 

A continuación, ejecutar mvn resources para copiar los archivos.

Este enfoque es que estos archivos siempre se copiarán durante la fase de recursos de cualquier compilación. Puede evitar esto utilizando el objetivo copy-resources en lugar de recursos. En este caso se utilizaría la siguiente configuración:

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.5</version> 
     <executions> 
      <execution> 
      <id>copy-web-resources</id> 
      <!-- here the phase you need --> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/webApp</outputDirectory> 
       <resources> 
       <resource> 
       <directory>src/main/webApp</directory> 
       <includes> 
        <include>*.css</include> 
        <include>*.js</include> 

entonces se podría ejecutar mvn resources:copy-resources para copiar los archivos.

+0

Gracias por eso. Probé la configuración que proporcionaste para el objetivo copy-resources pero obtengo este error cuando ejecuto los recursos: copy-resources: "Los parámetros 'resources', 'outputDirectory' para goal org.apache.maven.plugins: maven-resources -plugin: 2.5: copy-resources falta o no es válido ". ¿Alguna idea de cómo resolver eso? – Ayyoudy

+0

Tendría que ver su configuración. No veo ningún error en lo que tengo allí solo mirándolo. –

+0

no importa eso. ¡Creo que simplemente no le gustó el formato * .css por alguna razón! Lo modifiqué a css/** y está contento con eso ... ¡extraño! – Ayyoudy

2

Creo que se podría lograr esto mediante el uso de la meta war:war. Esto debería generar un archivo de guerra en la carpeta de salida para usted sin volver a compilar la fuente.

+0

En realidad, desafortunadamente, eso no copió el cambio en mi recurso. Lo intenté dos veces con dos recursos diferentes que modifiqué y los cambios no se llevaron a la carpeta de salida o al archivo war. ¿No hay forma de ser selectivo en lo que se vuelve a copiar en el archivo war? El objetivo de war: war toma como 5 minutos ejecutarlo porque hay una gran carpeta de recursos que vuelve a copiar cada vez que no ha cambiado. A veces estoy trabajando en un archivo CSS y quiero seguir haciendo cambios hasta que esté satisfecho con lo que veo. No creo que este retraso sea ideal en tales casos. ¿Alguna idea más? – Ayyoudy

Cuestiones relacionadas