Integración con Maven
Con el plugin de Maven para Allure, puedes generar reportes de Allure como parte de tu build de Maven añadiendo un bloque <plugin> a tu pom.xml. El plugin soporta tanto Allure 3 (por defecto, basado en Node.js) como Allure 2 (basado en Java, legado).
- Requiere JDK 17 o superior
- Requiere Maven 3.1.1 o superior
Configuración inicial
Añade el plugin a la sección <reporting> de tu pom.xml:
<reporting>
<plugins>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>3.0.2</version>
</plugin>
</plugins>
</reporting>Después de esto, ejecuta tus pruebas para producir archivos de resultados de Allure:
mvn clean testEl adaptador de Allure de tu framework de pruebas (por ejemplo, allure-jupiter, allure-testng) escribe archivos de resultados sin procesar en target/allure-results/ durante la ejecución de prueba. El plugin luego lee esos archivos y genera el reporte.
Ejecutar el plugin como plugin de build
Para invocar los objetivos de Allure directamente (por ejemplo, mvn allure:report, mvn allure:serve), también declara el plugin en la sección <build>. Maven solo resuelve los prefijos de plugins desde <build> — una declaración solo en <reporting> soporta mvn site pero no invocaciones directas.
<build>
<plugins>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>3.0.2</version>
</plugin>
</plugins>
</build>También puedes usar la declaración en <build> para vincular un objetivo a una fase específica del ciclo de vida, por ejemplo para generar el reporte automáticamente durante mvn verify:
<build>
<plugins>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>Generar un reporte
Ver el reporte localmente
mvn allure:serveEl plugin genera el reporte y lo abre en un servidor web local. Pulsa Ctrl+C para detener el servidor cuando termines. Para Allure 3, el reporte se escribe en el directorio de reporte configurado (por defecto: target/site/allure-maven-plugin/) antes de que el servidor inicie y permanece allí después de detenerse.
Para usar un puerto específico:
mvn -Dallure.serve.port=8080 allure:servePara vincular el servidor a una interfaz de red específica (solo Allure 2, acepta una dirección IPv4):
mvn -Dreport.version=2.39.0 -Dallure.serve.host=192.168.1.10 allure:serveallure.serve.host no está soportado para Allure 3. Usa reportVersion 2.x si necesitas vincular el host.
Generar un reporte estático
mvn allure:reportEl reporte se escribe en target/site/allure-maven-plugin/index.html.
También puedes generar el reporte como parte del ciclo de vida estándar de Maven site:
mvn siteObjetivos del plugin
| Objetivo | Fase por defecto | Descripción |
|---|---|---|
allure:report | site | Genera un reporte HTML estático desde allure-results/ |
allure:serve | site | Genera un reporte y lo abre en un servidor web local |
allure:aggregate | site | Agrega resultados de todos los módulos en un proyecto multi-módulo |
allure:install | generate-resources | Descarga y almacena en caché el CLI de Allure sin generar un reporte |
Selección del entorno de ejecución
El parámetro reportVersion controla qué versión de Allure se usa para generar reportes.
Valor de reportVersion | Entorno de ejecución usado |
|---|---|
| No establecido (por defecto) | Allure 3, versión 3.4.1 |
3.x (por ejemplo, 3.4.1) | Allure 3 |
2.x (por ejemplo, 2.39.0) | Allure 2 |
En pom.xml:
<configuration>
<reportVersion>3.4.1</reportVersion>
</configuration>En la línea de comandos:
mvn -Dreport.version=3.4.1 allure:reportCualquier cadena de versión que no comience con 2. o 3. es rechazada con un error.
Provisión del entorno de Allure 3
Para Allure 3, el plugin gestiona su propio entorno de Node.js. No necesitas tener Node.js instalado en tu sistema.
En el primer uso, el plugin descarga Node.js y el paquete de Allure y los almacena en caché bajo ${project.basedir}/.allure (configurable vía allure.install.directory). Las ejecuciones posteriores reutilizan la caché y omiten la descarga.
Builds aislados y sin conexión
El modo offline de Maven (mvn -o) está soportado. Si el entorno de Node.js y el paquete de Allure ya están en caché, el plugin los usa sin acceso a la red. Si alguno falta mientras estás offline, el build falla con un error claro.
Para pre-llenar la caché, ejecuta mvn allure:install una vez con acceso a la red antes de cambiar a modo offline.
Ubicación personalizada de descarga de Node.js
Para descargar Node.js desde un mirror en vez de nodejs.org (por ejemplo, en una red restringida):
<configuration>
<nodeDownloadUrl>https://my-mirror.example.com/node/v%s/node-v%s-%s.%s</nodeDownloadUrl>
</configuration>El patrón de URL recibe cuatro argumentos: {version}, {version}, {os-classifier}, {archive-extension}.
El plugin también obtiene un archivo de suma de verificación desde https://nodejs.org/dist/v{version}/SHASUMS256.txt para verificar la descarga. Si tu mirror reemplaza nodejs.org, debe servir este archivo en la ruta equivalente — de lo contrario el build fallará con un error de suma de verificación incluso si el archivo se descargó correctamente.
Versión personalizada de Node.js
La versión por defecto de Node.js es 24.14.1. Para usar una versión diferente:
<configuration>
<nodeVersion>22.0.0</nodeVersion>
</configuration>Registro npm personalizado
<configuration>
<npmRegistry>https://npm.example.com</npmRegistry>
</configuration>Archivo local del paquete de Allure 3
Para instalar Allure 3 desde un archivo .tgz o .tar.gz local en vez del registro npm (útil para entornos aislados o pruebas de builds personalizados):
<configuration>
<packagePath>packages/allure-custom.tgz</packagePath>
</configuration>Las rutas relativas se resuelven desde la raíz del proyecto. Este parámetro solo está soportado para Allure 3.
Configuración de Allure 3
Para Allure 3, el plugin lee un archivo de configuración allurerc para personalizar el reporte. Puedes proporcionarlo como archivo auto-detectado en la raíz del proyecto o apuntar a él explícitamente.
Archivos de configuración auto-detectados
El plugin busca cualquiera de los siguientes archivos en la raíz del proyecto, en este orden:
allurerc.jsallurerc.mjsallurerc.cjsallurerc.jsonallurerc.yamlallurerc.yml
Se usa el primer archivo que coincida. Ejemplo de allurerc.yml:
plugins:
awesome:
options:
reportLanguage: enRuta explícita de configuración
Usa allure.config.path para apuntar a un archivo de configuración en cualquier parte del sistema de archivos. Las rutas relativas se resuelven desde la raíz del proyecto.
En pom.xml:
<configuration>
<configPath>config/allure3.yml</configPath>
</configuration>En la línea de comandos:
mvn -Dallure.config.path=config/allure3.yml allure:reportCuando se proporciona una ruta explícita, se omite la auto-detección.
Este parámetro solo está soportado para Allure 3.
Claves gestionadas por el plugin
El plugin siempre controla output y name — establecer estos en tu propia configuración no tiene efecto. Todo lo demás en tu configuración se preserva. Los valores por defecto gestionados por el plugin (como historyPath y appendHistory para el historial) solo se aplican cuando tu configuración no establece esas claves, así que tus valores siempre tienen prioridad.
Fuentes de descarga de Allure 2 Allure 2
Para Allure 2, el plugin descarga el CLI usando la resolución estándar de dependencias de Maven, así que tus mirrors de repositorio, proxies y credenciales configuradas en settings.xml se aplican automáticamente.
URL de descarga personalizada
Para descargar Allure 2 desde una ubicación personalizada (por ejemplo, un mirror local en una red restringida):
<configuration>
<allureDownloadUrl>https://my-mirror.example.com/allure-%s/allure-%s.zip</allureDownloadUrl>
<reportVersion>2.39.0</reportVersion>
</configuration>El patrón de URL recibe la cadena de versión dos veces (una para el directorio, otra para el nombre de archivo). Este parámetro solo está soportado para Allure 2 — usa nodeDownloadUrl para el entorno de Node.js de Allure 3.
allureDownloadUrl también es respetado por el objetivo allure:install cuando se usa Allure 2.
Soporte de proxy
El plugin respeta la configuración de proxy establecida en tu settings.xml de Maven. No se necesita configuración adicional para descargas de Allure 2 ni para descargas de Node.js y npm de Allure 3.
Historial de tendencias
Para el objetivo allure:report, el plugin preserva el historial de tendencias entre builds automáticamente. El historial se almacena en caché en el directorio de instalación y se transfiere a cada nuevo reporte.
El historial está habilitado por defecto. Para deshabilitarlo:
<configuration>
<historyEnabled>false</historyEnabled>
</configuration>O en la línea de comandos:
mvn -Dallure.history.enabled=false allure:reportLa preservación del historial se aplica solo a allure:report. Los objetivos allure:serve y allure:aggregate no se ven afectados.
Para Allure 3, si tu archivo allurerc establece historyPath o appendHistory, tus valores tienen prioridad sobre los valores por defecto del plugin.
Proyectos multi-módulo
Para proyectos Maven multi-módulo, usa allure:aggregate para combinar resultados de todos los módulos en un solo reporte.
En el pom.xml del padre:
<reporting>
<plugins>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>3.0.2</version>
<reportSets>
<reportSet>
<id>aggregate</id>
<inherited>true</inherited>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>Luego ejecuta:
mvn siteEl objetivo aggregate recoge allure-results/ de cada módulo hijo y produce un solo reporte combinado en el target/site/allure-maven-plugin/ del padre.
También puedes invocar aggregate directamente sin el ciclo de vida site:
mvn -Dreport.version=2.39.0 allure:aggregateDirectorio de resultados por módulo
Si un módulo escribe resultados en una ubicación no predeterminada, configúralo usando la propiedad allure.results.directory en el pom.xml de ese módulo:
<properties>
<allure.results.directory>my-results</allure.results.directory>
</properties>El objetivo aggregate lee esta propiedad de cada POM efectivo de los módulos. El valor debe ser una ruta relativa (relativa al directorio de build del módulo) — las rutas absolutas son rechazadas.
Configuración avanzada
Directorio de resultados personalizado
Por defecto, el plugin lee resultados desde target/allure-results/. Para cambiarlo:
<configuration>
<resultsDirectory>my-results</resultsDirectory>
</configuration>O en la línea de comandos:
mvn -Dallure.results.directory=my-results allure:reportEl valor se resuelve relativo al directorio de build de Maven (target), así que my-results corresponde a target/my-results. Usa una ruta absoluta para apuntar fuera del directorio de build.
Múltiples directorios de entrada (allure:report solo) Allure 2
Para fusionar resultados de múltiples directorios en un solo reporte:
mvn -Dallure.results.inputDirectories=/path/one,/path/two allure:reportDirectorio de salida del reporte personalizado
<configuration>
<reportDirectory>${project.build.directory}/my-report</reportDirectory>
</configuration>O en la línea de comandos:
mvn -Dallure.report.directory=target/my-report allure:reportReporte de archivo único
Para generar un archivo HTML autocontenido en vez de un directorio:
<configuration>
<singleFile>true</singleFile>
</configuration>Esto funciona tanto para Allure 2 como para Allure 3. Para allure:serve, singleFile se ignora — usa allure:report o allure:aggregate para producir un reporte de archivo único. Allure 3 serve muestra una advertencia cuando se establece singleFile; Allure 2 serve lo ignora silenciosamente.
Tiempo de espera para la generación del reporte
El tiempo de espera por defecto para la generación del reporte es de 60 segundos. Para ampliarlo:
<configuration>
<reportTimeout>300</reportTimeout>
</configuration>El objetivo allure:serve usa un tiempo de espera separado (por defecto: 3600 segundos, una hora) que cubre tanto la generación como el tiempo que el servidor está en ejecución:
<configuration>
<serveTimeout>7200</serveTimeout>
</configuration>Propiedades de Allure
El plugin pasa propiedades a Allure en el momento de generar el reporte. Puedes usarlas para configurar cosas como patrones de URL de rastreadores de problemas.
Desde un archivo de propiedades (ruta de búsqueda por defecto: report.properties en la raíz del proyecto, es decir, el directorio desde el que ejecutas Maven):
allure.issues.tracker.pattern=https://jira.example.com/browse/%s
allure.link.tms.pattern=https://tms.example.com/case/%sDesde la configuración del plugin:
<configuration>
<properties>
<allure.issues.tracker.pattern>https://jira.example.com/browse/%s</allure.issues.tracker.pattern>
</properties>
</configuration>Desde el classpath (tanto allure.properties como report.properties se descubren automáticamente desde el classpath de pruebas).
Las propiedades de todas las fuentes se fusionan. Las propiedades de la configuración del plugin tienen la mayor prioridad. Los valores de placeholder como ${project.version} en los valores de propiedad se expanden usando propiedades de Maven y del sistema.
Categorías
Coloca un archivo categories.json en el classpath de pruebas (por ejemplo, bajo src/test/resources/) para definir categorías personalizadas de fallos de prueba. El plugin lo copia al directorio de resultados antes de invocar Allure. Esto funciona tanto para Allure 2 como para Allure 3.
Directorio de instalación
El directorio de instalación por defecto para el entorno de Allure es ${project.basedir}/.allure. Para compartir una instalación entre varios proyectos o ubicarla fuera del árbol del proyecto:
<configuration>
<installDirectory>/opt/allure-cache</installDirectory>
</configuration>O en la línea de comandos:
mvn -Dallure.install.directory=/opt/allure-cache allure:reportUso en CI
GitHub Actions
En un workflow de GitHub Actions, ejecuta tus pruebas y luego genera el reporte de Allure. El directorio de instalación se almacena en caché entre ejecuciones del workflow para evitar descargar Node.js y el paquete de Allure en cada ejecución.
- name: Ejecutar pruebas
run: mvn test
- name: Cachear entorno de Allure
uses: actions/cache@v4
with:
path: .allure
key: allure-${{ hashFiles('pom.xml') }}
- name: Generar reporte de Allure
run: mvn allure:report
- name: Subir reporte de Allure
uses: actions/upload-artifact@v4
with:
name: allure-report
path: target/site/allure-maven-plugin/Jenkins Pipeline
pipeline {
agent any
stages {
stage('Prueba') {
steps {
sh 'mvn clean test'
}
}
stage('Reporte') {
steps {
sh 'mvn allure:report'
publishHTML(target: [
reportDir: 'target/site/allure-maven-plugin',
reportFiles: 'index.html',
reportName: 'Allure Report'
])
}
}
}
}Alternativamente, si usas el plugin de Jenkins para Allure, puedes dejar que Jenkins genere y muestre el reporte directamente en vez de invocar allure:report en el pipeline.
Compartir el directorio de instalación de Allure entre builds
En agentes de CI que ejecutan varios proyectos, apunta todos ellos a un directorio de instalación compartido para evitar descargas redundantes:
mvn -Dallure.install.directory=/var/cache/allure allure:reportO pre-llena la caché una vez por agente usando el objetivo allure:install:
mvn -Dallure.install.directory=/var/cache/allure allure:install