2010-10-08 11 views
5

Sto sviluppando un progetto Java basato su Servlet che deve essere impacchettato come una guerra usando Maven. C'è un modo per includere file JavaScript (JS) insieme a questo progetto (dovrebbero essere disponibili in qualche url quando il progetto viene caricato su un server Tomcat).Confezione di file Javascript in una guerra?

Mi sono guardato intorno ma non ho trovato nessuna soluzione funzionante.

+0

Questo è una domanda simile. http://stackoverflow.com/questions/8397357/copy-a-file-during-maven-build-phase –

risposta

12

Forse la soluzione migliore è attenersi alla convenzione di Maven, che specifica che la directory principale dell'applicazione Web è src/main/webapp.

Quindi se si inseriscono tutti i file Javascript in src/main/webapp/javascript (o src/main/webapp/js), saranno integrati nel pacchetto di guerra finale.

Nel plug-in Maven WAR, forniscono alcune descrizioni (vedere here per esempio) sul contenuto delle directory. Per esempio:

|-- pom.xml 
`-- src 
    `-- main 
     |-- java 
     | `-- com 
     |  `-- example 
     |   `-- projects 
     |    `-- SampleAction.java 
     |-- resources 
     | `-- images 
     |  `-- sampleimage.jpg 
     `-- webapp 
      |-- WEB-INF 
      | `-- web.xml 
      |-- index.jsp 
      `-- jsp 
       `-- websource.jsp 

Come si può vedere, si può mettere risorse in webapp/xxx directory, ad esempio jsp di file qui.

Come indicato da cuh, è anche possibile configurare il plug-in Maven WAR se la struttura della directory è diversa.

+0

Hai ragione, il mio esempio-config in qualche modo si mescola con l'aggiunta di risorse implicite esterne. Tutto sotto 'src/main/resources' viene aggiunto di default alla cartella' WEB-INF/classes'. Quindi verrebbe aggiunto due volte al 'war'. btw la convenzione di maven è 'src/main/webapp' non webapps. – cuh

+0

@cuh corretto. – romaintaz

3

È possibile utilizzare la maven-war-plugin e configurarlo qualcosa di simile:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0.2</version> 
     <configuration> 
      <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory> 
      <webResources> 
       <resource> 
        <directory>your/path/to/js</directory> 
        <targetPath>js</targetPath> 
       </resource> 
      </webResources> 
     </configuration> 
</plugin> 

Vedi here.

modificare: Probabilmente non si vuole includere il js nella cartella classes.

1

Inserirli nelle directory in src/main/webapp. Cioè, supponendo che tu lo abbia generato usando l'archetipo maven-archetype-webapp.

Il mio attuale applicazione li ha sotto src/main/webapp/javascript, e vi accede in JSP come questo:

<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script> 

(per i file JSP in src/main/webapp che è)

Problemi correlati