Maven Tailwind Plugin - Tailwind CSS 4 en Spring Boot sin Node.js
Guía completa para integrar Tailwind CSS 4 de manera muy sencilla en proyectos Spring Boot usando Maven. Sin Node.js, sin npm, compilación automática en el build de Maven.
¿Por qué el integrar Tailwind CSS en Spring Boot es un dolor de cabeza?
Si estás desarrollando una aplicación Spring Boot y quieres usar Tailwind CSS, normalmente tienes que:
- Instalar Node.js y npm
- Mantener dependencias adicionales fuera de Maven
- Configurar un workflow con múltiples herramientas
- Resolver conflictos entre comandos de Maven y npm
¿Tedioso, verdad?
Solución: Maven Tailwind Plugin
Maven Tailwind Plugin resuelve esto de forma elegante. Te permite compilar Tailwind CSS v4 directamente desde Maven, sin necesidad de Node.js.
¿Qué lo hace especial?
- Sin dependencias externas - No necesitas Node.js ni npm
- Integración perfecta con Maven - La compilación ocurre automáticamente
- Watch mode para desarrollo - Recompilación instantánea mientras trabajas
- Optimizado para producción - Minificación automática
- Decargas el binario una sola vez - Se cachea en tu sistema
Requisitos previos
- Java 17+
- Maven 3.6.0+
- Conexión a Internet (solo la primera vez para descargar el binario)
Instalación rápida
Paso 1: Añadir el plugin a pom.xml
<build>
<plugins>
<plugin>
<groupId>io.github.4ndreidev</groupId>
<artifactId>tailwind-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Paso 2: Inicializar Tailwind
mvn tailwind:init
Esto crea automáticamente:
- Carpeta:
src/main/resources/static/css/ - Archivo:
input.csscon los imports de Tailwind CSS v4
Paso 3: Crear tu template HTML
Crea src/main/resources/templates/index.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- IMPORTANTE: Link al CSS compilado -->
<link rel="stylesheet" href="/tailwind.css">
<title>Mi Aplicación Spring Boot</title>
</head>
<body>
<div class="flex h-screen items-center justify-center bg-gradient-to-r from-blue-500 to-purple-600">
<h1 class="text-4xl font-bold text-white">¡Hola, Tailwind CSS!</h1>
</div>
</body>
</html>
Paso 4: Ejecutar tu aplicación
mvn spring-boot:run
Visita http://localhost:8080 y verás tu página estilizada.
Paso 5: Desarrollo en tiempo real
En otra terminal, activa el modo watch:
mvn tailwind:watch
Ahora el CSS se recompila automáticamente cada vez que modificas tu HTML o añades clases de Tailwind.
Comandos disponibles
✅ Configuración inicial
Crea la estructura de directorios y el archivo input.css. Seguro ejecutar varias veces.
mvn tailwind:init
🔨 Compilación manual
Compila el CSS. Ejecuta automáticamente durante el build, pero útil para triggear manualmente.
mvn tailwind:compile
👀 Modo desarrollo
Monitorea cambios y recompila al instante. Ideales para desarrollo.
mvn tailwind:watch
Para deshabilitar minificación en watch:
mvn tailwind:watch -Dtailwind.minify=false
⬇️ Descargar binario
Descarga el binario de Tailwind para tu sistema operativo.
mvn tailwind:download
Forzar descarga (ignorar cache):
mvn tailwind:download -Dtailwind.forceDownload=true
Configuración personalizada
En pom.xml
<plugin>
<groupId>io.github.4ndreidev</groupId>
<artifactId>tailwind-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<inputFile>${project.basedir}/src/main/resources/css/styles.css</inputFile>
<outputFile>${project.build.outputDirectory}/css/tailwind.css</outputFile>
<minify>true</minify>
<version>v4.1.18</version>
</configuration>
</plugin>
Desde línea de comandos
# Compilar con archivo HTML personalizado
mvn tailwind:compile -Dtailwind.inputFile=src/main/resources/css/custom.css
# Version específica de Tailwind
mvn tailwind:download -Dtailwind.version=v4.0.0
# Desminificado en desarrollo
mvn tailwind:watch -Dtailwind.minify=false
Parámetros de configuración
| Parámetro | Opción Maven | Valor por Defecto | Descripción |
|---|---|---|---|
| inputFile | tailwind.inputFile | src/main/resources/static/css/input.css | Ruta del archivo de entrada |
| outputFile | tailwind.outputFile | target/classes/static/tailwind.css | Ruta del archivo compilado |
| minify | tailwind.minify | true (compile), false (watch) | Minificar CSS |
| version | tailwind.version | v4.1.18 | Versión de Tailwind CSS |
| downloadDirectory | tailwind.downloadDirectory | ~/.m2/tailwindcss | Directorio de caché |
| forceDownload | tailwind.forceDownload | false | Forzar descarga/ignorar caché |
Estructura de directorios esperada
tu-proyecto/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── resources/
│ │ │ ├── static/
│ │ │ │ └── css/
│ │ │ │ └── input.css ← Archivo de entrada
│ │ │ └── templates/
│ │ │ └── index.html
│ │ └── java/
│ │ └── com/example/
│ │ └── Application.java
│ └── test/
└── target/
└── classes/
└── static/
└── tailwind.css ← Archivo compilado
Solución de problemas
Error: “Input file not found”
Problema: El plugin no encuentra input.css
Solución:
mkdir -p src/main/resources/static/css
echo "@import 'tailwindcss';" > src/main/resources/static/css/input.css
Error: “Binary download failed”
Problema: No puede descargar el binario de Tailwind
Solución:
- Verifica tu conexión a Internet
- Intenta con otra versión:
mvn tailwind:download -Dtailwind.version=v4.0.0 - Fuerza la descarga:
mvn tailwind:download -Dtailwind.forceDownload=true
El CSS compilado está vacío
Problema: El archivo tailwind.css no contiene estilos
Solución:
- Asegúrate que
input.csstiene@import 'tailwindcss'; - Verifica que tienes clases de Tailwind en tu HTML
- En Tailwind CSS v4,
tailwind.config.jses opcional
Limpieza de caché
El plugin almacena los binarios en caché en: ~/.m2/tailwindcss/
Para limpiar:
rm -rf ~/.m2/tailwindcss/
mvn tailwind:download -Dtailwind.forceDownload=true
Ciclo de vida de Maven
El plugin se integra automáticamente:
- initialize phase: Descarga el binario (opcional)
- generate-resources phase: Compila CSS automáticamente
- manual:
mvn tailwind:watchpara desarrollo
Casos de uso ideales
- Proyectos Spring Boot existentes
- Equipos que usan Maven como herramienta primaria
- Organizaciones con políticas de seguridad estrictas respecto a npm
- Aplicaciones web completas (Thymeleaf, JTE)
- Desarrolladores que prefieren un único tool (Maven)
Conclusión
El Maven Tailwind Plugin elimina la complejidad de integrar Tailwind CSS en aplicaciones Spring Boot. No necesitas aprender otra herramienta de build, no necesitas Node.js, solo Maven.
Ahora puedes desarrollar interfaces modernas con Tailwind CSS dentro de tu flujo de trabajo Maven habitual.
¿Listo para empezar? Descarga el plugin hoy mismo y simplifica tu stack de desarrollo.
Enlaces útiles: