Ir al contenido principal

Usar JTE con Quarkus y Gradle

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

Entradas populares de este blog

Instalar Evolution API en Docker con Redis y PostgreSQL Local

Instalar Evolution API en Docker con Redis y PostgreSQL Local En este tutorial vamos a levantar Evolution API usando Docker , con soporte de Redis para sesiones y PostgreSQL local para almacenar datos de manera persistente y compartida entre varios usuarios. 1. Estructura del proyecto Crea una carpeta para tu proyecto y colócate en ella: mkdir -p ~/docker/evolution-api cd ~/docker/evolution-api 2. Archivo docker-compose.yml Este compose levanta Redis y Evolution API : version: "3.9" services: # ✅ SERVICIO REDIS redis: container_name: evolution_redis image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --save 60 1 --loglevel warning # ✅ SERVICIO EVOLUTION API evolution-api: container_name: evolution_api image: atendai/evolution-api restart: unless-stopped ports: - "8085:8080" env_file: - .env ...

Instalación y Configuración de MySQL 5.7 en Ubuntu 24.04 LTS

Instalar MySQL 5.7 en Ubuntu 24.04 1. Descargar e instalar MySQL Copiar mkdir ~/mysql57 cd ~/mysql57 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql 2. Instalar dependencias necesarias IMPORTANTE: Se descargan las versiones nuevas de las librerías y se las vincula con las librerías que necesita MySQL. Copiar sudo apt update # Reemplazo de libaio sudo apt install libaio1t64 # Reemplazo de libtinfo y ncurses sudo apt install libtinfo6 libncurses6 Copiar # Crear los enlaces simbólicos sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/libaio.so.1 sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5 sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64...

Tutorial: n8n con Docker Compose en Linux

Tutorial Completo: Instalar y correr n8n en Linux con Docker Compose Este tutorial te guiará paso a paso para instalar y ejecutar n8n usando Docker Compose en un sistema Linux (como Ubuntu), con buenas prácticas y configuraciones recomendadas. --- 1. Actualizar el sistema Es buena práctica empezar actualizando los paquetes y sistema: Copiar sudo apt update sudo apt upgrade -y --- 2. Instalar dependencias necesarias para Docker Copiar sudo apt install -y ca-certificates curl gnupg lsb-release --- 3. Agregar repositorio oficial de Docker Copiar sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update --- 4. ...