2011-09-08 13 views
6

Ho un progetto web Maven e ho alcuni file CSS e Javascript sotto la cartella src \ main \ webapp \. Apporto costantemente modifiche a questi file e vorrei vedere le mie modifiche rapidamente. Se corro maven install, ci vogliono secoli a causa delle dipendenze del progetto. A volte tutto ciò che voglio cambiare è una riga di codice nel mio file CSS e non voglio ricompilare tutto il resto. Ho un plugin Maven che pubblica il mio file war di output sulla mia istanza JBoss. Idealmente, mi piacerebbe eseguire uno script di esecuzione di tipo Maven che copierà rapidamente le mie risorse Web nella cartella di output e replicherà il file di guerra modificato senza ricompilare tutto il resto.Maven web resources question

Ho provato invocando le generare le risorse- gol, ma che non sembra guardare in src \ directory principale \ webapp in quanto si aspetta le mie risorse di essere sotto lo src \ cartella principale \ risorse. Cosa mi manca qui?

Grazie

risposta

5

Se si desidera aggiungere più risorse da copiare durante il plugin generate-risorse, è possibile modificare le cartelle delle risorse utilizzate dalla build. La proprietà project.build.resources controlla quali cartelle vengono cercate per le risorse. Si potrebbe aggiungere:

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

Si potrebbe quindi eseguire mvn resources per copiare i file.

Questo approccio è che questi file verranno sempre copiati durante la fase di risorse di qualsiasi build. Puoi aggirare questo problema utilizzando l'obiettivo copy-resources invece delle risorse. In questo caso si può usare la seguente configurazione:

<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> 

È quindi possibile eseguire mvn resources:copy-resources per copiare i file.

+0

Grazie per quello. Ho provato la configurazione che hai fornito per l'obiettivo delle risorse di copia ma ricevo questo errore quando eseguo le risorse: copy-resources: "I parametri 'resources', 'outputDirectory' per l'obiettivo org.apache.maven.plugins: maven-resources -plugin: 2.5: copy-resources sono mancanti o non valide ". Qualche idea su come risolverlo? – Ayyoudy

+0

Dovrei vedere la tua configurazione. Non vedo errori in quello che ho lì solo guardandolo. –

+0

non importa. Penso che non sia piaciuto il formato * .css per qualche ragione! L'ho modificato in css/** ed è felice con quello ... strano! – Ayyoudy

2

Penso che si potrebbe ottenere questo risultato utilizzando l'obiettivo war:war. Questo dovrebbe generare per te un file war nella cartella di output senza ricompilare la fonte.

+0

In realtà, sfortunatamente, questo non ha copiato la modifica alla mia risorsa. L'ho provato due volte con due risorse diverse che ho modificato e le modifiche non sono state trasferite nella cartella di output o nel file war. Non c'è modo di essere selettivi in ​​ciò che viene copiato nuovamente nel file di guerra? La guerra: l'obiettivo di guerra impiega circa 5 minuti per essere eseguito perché esiste una grande cartella di risorse che viene nuovamente copiata ogni volta che non è cambiata. A volte sto lavorando su un file CSS e voglio continuare a fare cambiamenti finché non sono soddisfatto di quello che vedo. Non penso che questo ritardo sia l'ideale in questi casi. Altre idee? – Ayyoudy