Integrar JTE en Quarkus con Gradle
Guía paso a paso para usar el motor de plantillas JTE en un proyecto Quarkus con Gradle.
1. Configurar dependencias
plugins {
id 'java'
id 'io.quarkus'
}
repositories {
mavenCentral()
}
dependencies {
implementation enforcedPlatform("io.quarkus.platform:quarkus-bom:3.28.1")
implementation "io.quarkus:quarkus-resteasy-reactive"
implementation "gg.jte:jte:3.2.1"
}
2. Crear carpeta de plantillas
src/main/resources/templates
└── hello.jte
Contenido de hello.jte
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${title}</title>
</head>
<body>
<h1>Hola ${name} desde JTE!</h1>
</body>
</html>
3. Configuración separada para JTE
Si deseas aislar la configuración en una clase aparte y apuntar a un grupo de plantillas, crea src/main/java/app/quebracho/config/JteConfig.java
:
package app.quebracho.config;
import gg.jte.TemplateEngine;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
import java.nio.file.Path;
@ApplicationScoped
public class JteConfig {
@Produces
TemplateEngine templateEngine() {
return TemplateEngine.createPrecompiled(
Path.of("src/main/resources/templates/grupo1"),
Path.of("build/jte-classes")
);
}
}
4. Servicio para renderizar JTE
package app.quebracho.service;
import gg.jte.TemplateEngine;
import gg.jte.output.StringOutput;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.Map;
@ApplicationScoped
public class TemplateService {
@Inject
TemplateEngine engine; // inyectado desde JteConfig
public String render(String template, Map<String, Object> data) {
StringOutput out = new StringOutput();
engine.render(template, data, out);
return out.toString();
}
}
5. Recurso REST que entrega HTML
package app.quebracho;
import app.quebracho.service.TemplateService;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/")
public class HomeResource {
@Inject
TemplateService templateService;
@GET
@Produces(MediaType.TEXT_HTML)
public String home() {
return templateService.render("hello.jte",
java.util.Map.of("title", "Inicio", "name", "Hugo"));
}
}
6. Ejecutar en modo desarrollo
./gradlew quarkusDev
Abre en el navegador: http://localhost:8080
Deberías ver: Hola Hugo desde JTE!
Comentarios
Publicar un comentario