Ir al contenido principal

Ejecutar cualquier clase Main con Gradle y Quarkus en Windows

Ejecutar cualquier clase Main con Gradle y Quarkus en Windows

Objetivo

Cuando trabajas en un laboratorio de Java con muchas clases, muchas veces quieres probar rápidamente cualquier clase con un main sin depender del IDE ni marcar una clase por defecto.

En este flujo:

  • Usamos Gradle para manejar compilación, classpath y dependencias.
  • Creamos tareas personalizadas (runMain y runTest) para ejecutar cualquier clase main.
  • Evitar definir mainClass por defecto en build.gradle.
  • Todo funciona desde la consola en Windows, sin depender del IDE.

1️⃣ Configurar build.gradle

plugins {
    id 'java'
    id 'io.quarkus'
    id 'application'   // permite usar gradlew run si quieres
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'io.quarkus:quarkus-rest'
    implementation 'com.google.code.gson:gson:2.10.1'
    implementation 'org.json:json:20230227'
    testImplementation 'io.quarkus:quarkus-junit5'
}

2️⃣ Crear tareas para ejecutar cualquier clase main

// Ejecutar clases main del código principal
tasks.register('runMain', JavaExec) {
    description = 'Ejecuta cualquier clase main pasando el nombre como parámetro.'
    classpath = sourceSets.main.runtimeClasspath
    if (project.hasProperty('mainClassName')) {
        mainClass = project.property('mainClassName')
    }
}

// Ejecutar clases main del código de prueba
tasks.register('runTest', JavaExec) {
    description = 'Ejecuta una clase con un método main desde el classpath de prueba.'
    classpath = sourceSets.test.runtimeClasspath
    if (project.hasProperty('mainClassName')) {
        mainClass = project.property('mainClassName')
    }
}

3️⃣ Cómo ejecutar tus clases en Windows

Código principal (src/main/java/...):

.\gradlew runMain "-PmainClassName=py.com.lab.MainLab"

Código de prueba (src/test/java/...):

.\gradlew runTest "-PmainClassName=py.com.lab.MainTestLab"
🔹 Observación: En Windows conviene usar comillas " " alrededor de -PmainClassName=….

4️⃣ Beneficios de este enfoque

  • Flexibilidad total: puedes ejecutar cualquier clase main sin cambiar build.gradle.
  • Independencia del IDE: todo se hace desde la consola, ideal para laboratorio.
  • Gestión automática del classpath: Gradle carga automáticamente todas las librerías y clases del proyecto.
  • Separación de entornos: puedes ejecutar clases de prueba y código principal de forma independiente.
  • Escalable: incluso si tu laboratorio crece a muchas clases, sigue siendo fácil de manejar.

Consejos

  • Mantén tus clases organizadas en paquetes como py.com.lab o py.com.lab.tests para evitar conflictos.
  • Para agregar nuevas librerías, solo añádelas en dependencies {}.
  • Puedes combinar este flujo con pruebas unitarias, Quarkus Dev Mode y tareas personalizadas para laboratorio.

Comentarios

Entradas populares de este blog

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...

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 ...

Instalar Jasper Studio 6.21 para Ubuntu 24.04

Instalar js-studiocomm_6.21.3 en Ubuntu 24.4 Para instalar Jaspersoft Studio en Ubuntu 24.4, sigue estos pasos: 1. Descargar Jasper Studio Descarga la versión js-studiocomm_6.21.3 desde el siguiente enlace: Jaspersoft Studio 6.21.3 2. Crear el directorio de instalación mkdir /opt/jasperstudio 3. Mover el archivo descargado mv /dir_descarga/js-studiocomm_6.21.3_linux_x86_64.tgz /opt/jasperstudio/ cd /opt/jasperstudio 4. Extraer el archivo tar -xvzf js-studiocomm_6.21.3_linux_x86_64.tgz cd js-studiocomm_6.21.3 5. Ejecutar Jaspersoft Studio ./Jaspersoft\ Studio 6. Crear acceso directo en el escritorio Para facilitar el acceso, crea un archivo .desktop en el escritorio: gedit ~/Escritorio/jaspersoft-studio.desktop En el archivo jaspersoft-studio.desktop , agrega lo siguiente: [Desktop Entry] Version=1.0 Ty...