sábado, 8 de octubre de 2011

Compresión y comprobación de archivos JavaScript desde Maven

Estos últimos días he estado probando YUI Compressor Maven Mojo para la gestión de los archivos javascript de mis proyectos.

YUI Compressor permite, en primer lugar, comprobar la corrección del código javascript mediante JSLint. En segundo lugar, permite comprimir y ofuscar los archivos javascript, de forma que se reduce su peso y se dificulta la introducción de ataques a través del código javascript.

Todo ello, a través de la siguiente configuración del pom.xml:
<pluginRepositories>
<pluginRepository>
<name>oss.sonatype.org</name>
<id>oss.sonatype.org</id>
<url>http://oss.sonatype.org/content/groups/public</url>
</pluginRepository>
</pluginRepositories>

<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</execution>
</executions>
<configuration>
<jswarn>true</jswarn>
<failOnWarning>false</failOnWarning>
<nomunge>false</nomunge>
<excludes>
<exclude>**/jquery.js</exclude>
</excludes>
<aggregations>
<aggregation>
<includes>
<include>**/*-min.js</include>
</includes>
<output>${project.build.directory}/${project.artifactId}-
${project.version}/js/revistero.js</output>
</aggregation>
<aggregation>
<includes>
<include>**/*-min.css</include>
</includes>
<output>${project.build.directory}/${project.artifactId}-
${project.version}/css/revistero.css</output>
</aggregation>
</aggregations>
</configuration>
</plugin>

<build>

La configuración de los atributos jswarn y failonwarning hace que se realice la comprobación de los archivos javascript pero sin parar la ejecución en caso de error. El atributo nomunge indica que se debe ofuscar el archivo ("munge": Modify Until Not Guessed Easily).

Tanto la verificación como la compresión de los archivos se ejecutarán cada vez que se construya el proyecto mediante:
mvn package

O se despliegue con:
mvn jetty:run-war

Pero se pueden ejecutar de forma independiente. Para lanzar la compresión de los archivos javascript y css se ejecutará:
mvn net.alchim31.maven:yuicompressor-maven-plugin:compress

Y para realizar la verificación de los archivos javascript:
mvn net.alchim31.maven:yuicompressor-maven-plugin:jslint

Referencias:
YUI Compressor Maven Mojo
Minimizando el tiempo de carga: Maven YUI Compressor

1 comentario:

  1. Maven es la caña. Y cada día aumenta el número de MOJO's para hacerlo aún más completo y versátil. Una maravilla.
    Saludos Jorge!.

    ResponderEliminar