Importar librerias JS como web resources Spring.

Spring MVC permite mapear las peticiones a una determinada ruta URL, hacia contenidos estáticos (JS, CSS, imagenes, …) que se encuentren en otra localización como el classpath, otro servidor, etc. Esto se consigue mediante la anotación del fichero webmvc-config.xml.

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources -->
<mvc:resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**"/>

Conociendo lo anterior podemos poner en juego una buena práctica, que consiste en empaquetar en un .jar las librerias JS que utilize nuestra aplicación, por ejemplo el framework JS Dojo. Y publicarlas como recurso web con Spring. De esta forma no tenemos que incluir en el código fuente de nuestra aplicación dichas librerias (con miles de ficheros .js). Lo que a la vez supone tener que versionar esos ficheros en nuestro SVN, dificulta el cambio de version de la libreria en cuestión, etc.

Como ejemplo creamos la libreria dojo-js-resources-1.7.1.jar con la estructura:
/META-INF/web-resources/
/dijit/
/dojo/
/dojox/

y la publico en mi repositorio maven. Podemos añadirla a cualquier proyecto con esta dependencia maven:

<dependency>
  <groupId>com.mylibs.dojo</groupId>
  <artifactId>dojo-js-resources</artifactId>
  <version>1.7.1</version>
</dependency>

lo que hará que este disponible en nuestro classpath, y que spring la publique en resources. Una URL de ejemplo sería: http://localhost:8080/myapp/resources/dojo/dojo.js