2010-10-08 13 views
5

Estoy desarrollando un proyecto Java basado en Servlet que se empaquetará como una guerra usando Maven. ¿Hay alguna manera de incluir archivos de JavaScript (JS) junto con este proyecto (deben estar disponibles en alguna url cuando el proyecto se carga en un servidor Tomcat).Embalaje de archivos Javascript en una guerra?

He mirado alrededor pero no he encontrado ninguna solución que funcione.

+0

Este es una pregunta similar http://stackoverflow.com/questions/8397357/copy-a-file-during-maven-build-phase –

Respuesta

12

Quizás la mejor solución es ceñirse a la convención Maven, que especifica que el directorio raíz de su aplicación web es src/main/webapp.

Si coloca todos sus archivos Javascript en src/main/webapp/javascript (o src/main/webapp/js), se integrarán en su paquete de guerra final.

En el complemento Maven WAR, dan algunas descripciones (ver here por ejemplo) sobre el contenido de los directorios. Por ejemplo:

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

Como se puede ver, se puede poner recursos en webapp/xxx directorio, como jsp archivo aquí.

Según lo declarado por cuh, también puede configurar el complemento Maven WAR si la estructura de su directorio es diferente.

+0

Tienes razón, mi configuración de ejemplo combina de alguna manera externa con la adición implícita de recursos. Todo en 'src/main/resources' se agrega de forma predeterminada a la carpeta' WEB-INF/classes'. Entonces se agregaría dos veces a la 'guerra'. Por cierto, la convención de maven es 'src/main/webapp' not webapps. – cuh

+0

@cuh Corregido. – romaintaz

3

Puede utilizar el maven-war-plugin y configurarlo para que algo como esto:

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

Ver here.

editar: Probablemente no desee incluir el js en la carpeta classes.

1

Colóquelos en directorios en src/main/webapp. Es decir, suponiendo que lo haya generado utilizando el arquetipo maven-archetype-webapp.

Mi aplicación actual les atribuya src/main/webapp/javascript y acceda a los mismos en las páginas JSP como este:

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

(para archivos JSP en src/main/webapp es)

Cuestiones relacionadas