Usar JTE con Quarkus y Gradle (Java 21)
Este tutorial muestra cómo integrar el motor de plantillas JTE en un proyecto Quarkus usando Gradle, con plantillas precompiladas para un rendimiento óptimo.
1. Crear el proyecto Quarkus
mvn io.quarkus.platform:quarkus-maven-plugin:3.15.1:create \
-DprojectGroupId=app.quebracho \
-DprojectArtifactId=quebracho \
-DclassName="app.quebracho.service.HelloResource" \
-Dpath="/hello"
2. Configurar build.gradle
plugins {
id 'java'
id 'io.quarkus'
id 'gg.jte.gradle' version '3.1.9'
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-rest'
implementation 'io.quarkus:quarkus-arc'
implementation "gg.jte:jte:3.1.9"
testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured'
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
sourceSets {
main {
java {
srcDir "$buildDir/generated-sources/jte"
}
}
}
tasks.named('compileJava') {
dependsOn tasks.named('generateJte')
}
jte {
contentType = 'Html'
}
3. Estructura de directorios
src
└── main
├── java
│ └── app
│ └── quebracho
│ ├── infra
│ │ └── JteProducer.java
│ └── service
│ └── HelloResource.java
└── jte
└── hello.jte
4. Clase Productora de TemplateEngine
package app.quebracho.infra;
import gg.jte.TemplateEngine;
import gg.jte.ContentType;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
@ApplicationScoped
public class JteProducer {
@Produces
public TemplateEngine templateEngine() {
return TemplateEngine.createPrecompiled(ContentType.Html);
}
}
5. Recurso REST que renderiza la vista
package app.quebracho.service;
import gg.jte.TemplateEngine;
import gg.jte.output.WriterOutput;
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;
import java.io.StringWriter;
import java.util.Map;
@Path("/hello")
public class HelloResource {
@Inject
TemplateEngine jte;
@GET
@Produces(MediaType.TEXT_HTML)
public String hello() {
StringWriter writer = new StringWriter();
jte.render("hello.jte", Map.of("name", "Hugo"), new WriterOutput(writer));
return writer.toString();
}
}
6. Plantilla JTE
<!DOCTYPE html>
<html>
<body>
<h1>Hola ${name}!</h1>
</body>
</html>
7. Generar clases de plantillas
./gradlew clean generateJte compileJava
8. Ejecutar en modo desarrollo
./gradlew quarkusDev
Abre http://localhost:8080/hello y verás Hola Hugo! renderizado por JTE.
Mantén la carpeta
src/main/jte
para las plantillas y ejecuta ./gradlew generateJte
cuando agregues nuevas.
Comentarios
Publicar un comentario