Compilación de ficheros LESS en Maven

A la hora de desarrollar una aplicación web, una práctica muy extendida es trabajar con LESS en vez de directamente con CSS.

1. Introducción

A la hora de desarrollar una aplicación web, una práctica muy extendida es trabajar con LESS en vez de directamente con CSS. LESS es un lenguaje que extiende CSS dotándolo de comportamientos dinámicos como el uso de variables, operaciones o funciones. Pero si estamos trabajando en Maven, tener que compilar los ficheros .less a parte no es lo más práctico del mundo y muy propenso a errores humanos, sobre todo si estamos hablando de un proceso de despliegue continuo. Por suerte tenemos un plugin de Maven (https://github.com/marceloverdijk/lesscss-maven-plugin) que nos permite compilar los ficheros .less junto con el resto de nuestra aplicación. En la documentación del proyecto en GitHub tenemos las opciones de configuración disponibles (en inglés), aquí vamos a ver las opciones más comunes.

2. Entorno

El tutorial está escrito en el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15’’ (2.3 GHz Intel i7, 8GB 1333 Mhz DDR3, 500GB Solid State SATA Storage)

  • Sistema Operativo: Mac OS X Yosemite 10.10.3

  • Java Virtual Machine (JVM) 8

  • Maven 3.3.3

3. Configuración de Maven

Para compilar nuestros ficheros LESS en Maven, hemos de añadir el plugin al pom.xml:

pom.xml

Text
<span class="tag">&lt;properties&gt;</span>
    <span class="tag">&lt;lesscss-maven-plugin.version&gt;</span>1.7.0.1.1<span class="tag">&lt;/lesscss-maven-plugin.version&gt;</span>
    ...
<span class="tag">&lt;/properties&gt;</span>

<span class="tag">&lt;build&gt;</span>
    ...
    <span class="tag">&lt;plugins&gt;</span>
        ...
        <span class="tag">&lt;plugin&gt;</span>
            <span class="tag">&lt;groupId&gt;</span>org.lesscss<span class="tag">&lt;/groupId&gt;</span>
            <span class="tag">&lt;artifactId&gt;</span>lesscss-maven-plugin<span class="tag">&lt;/artifactId&gt;</span>
            <span class="tag">&lt;version&gt;</span>${lesscss-maven-plugin.version}<span class="tag">&lt;/version&gt;</span>
            <span class="tag">&lt;executions&gt;</span>
                <span class="tag">&lt;execution&gt;</span>
                <span class="tag">&lt;goals&gt;</span>
                    <span class="tag">&lt;goal&gt;</span>compile<span class="tag">&lt;/goal&gt;</span>
                <span class="tag">&lt;/goals&gt;</span>
                <span class="tag">&lt;/execution&gt;</span>
            <span class="tag">&lt;/executions&gt;</span>
        <span class="tag">&lt;/plugin&gt;</span>
        ...
    <span class="tag">&lt;/plugins&gt;</span>
    ...
<span class="tag">&lt;/build&gt;</span>

Si queremos modificar la configuración por defecto del plugin, podemos hacerlo mediante las opciones de configuración (la documentación del plugin recoge todas las opciones). Un ejemplo sería:

pom.xml

Text
<span class="tag">&lt;plugin&gt;</span>
    <span class="tag">&lt;groupId&gt;</span>org.lesscss<span class="tag">&lt;/groupId&gt;</span>
    <span class="tag">&lt;artifactId&gt;</span>lesscss-maven-plugin<span class="tag">&lt;/artifactId&gt;</span>
    <span class="tag">&lt;version&gt;</span>${lesscss-maven-plugin.version}<span class="tag">&lt;/version&gt;</span>
    <span class="tag">&lt;configuration&gt;</span>
        <span class="tag">&lt;sourceDirectory&gt;</span>${project.basedir}/src/main/resources/less<span class="tag">&lt;/sourceDirectory&gt;</span>
        <span class="tag">&lt;outputDirectory&gt;</span>${project.basedir}/target/css<span class="tag">&lt;/outputDirectory&gt;</span>
        <span class="tag">&lt;compress&gt;</span>true<span class="tag">&lt;/compress&gt;</span>
        <span class="tag">&lt;force&gt;</span>true<span class="tag">&lt;/force&gt;</span>
        <span class="tag">&lt;includes&gt;</span>
            <span class="tag">&lt;include&gt;</span>fan.less<span class="tag">&lt;/include&gt;</span>
        <span class="tag">&lt;/includes&gt;</span>
    <span class="tag">&lt;/configuration&gt;</span>
    <span class="tag">&lt;executions&gt;</span>
        <span class="tag">&lt;execution&gt;</span>
        <span class="tag">&lt;goals&gt;</span>
            <span class="tag">&lt;goal&gt;</span>compile<span class="tag">&lt;/goal&gt;</span>
        <span class="tag">&lt;/goals&gt;</span>
        <span class="tag">&lt;/execution&gt;</span>
    <span class="tag">&lt;/executions&gt;</span>
<span class="tag">&lt;/plugin&gt;</span>

La opción sourceDirectory nos permite indicar el directorio donde se encuentran los ficheros .less, y con outputDirectory indicamos dónde dejar los .css resultantes.

Si queremos minimizar el CSS obtenido (esto es, sin saltos de línea ni espacios innecesarios), lo conseguimos marcando la opción compress a true (por defecto es false).

Por defecto, el plugin sólo compila los .less si detecta que ha habido algún cambio en ellos. Para forzar la compilación independientemente de si han cambiado o no, sólo hay que añadir la opción force a true.

Por último, dentro de includes podemos añadir todos los ficheros .less que queremos compilar, añadiendo una línea de include para cada uno. IMPORTANTE: el plugin crea un fichero CSS por cada fichero LESS. Así que si queremos obtener un único .css lo mejor es tener un .less que importe todos los demás e incluir únicamente este .less “padre” en la configuración del plugin.

4. Conclusiones

El plugin de Maven para LESS nos permite compilar los distintos ficheros .less para generar el CSS final y permite cierto grado de configuración como la elección de los directorios fuente y origen, la opción de minimizar el CSS, etc. Sin embargo, el plugin nos creará un fichero .css por cada .less que tengamos sin tener ninguna opción (en el momento de escribir este tutorial) para generar un sólo .css. Pero esto lo podemos conseguir con un fichero .less principal que incluya imports al resto de ficheros e incluyendo únicamente ese fichero principal a la lista de compilación.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultora tecnológica de desarrollo de proyectos informáticos.
Doctora en Inteligencia Artificial.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.