Objetivo del tema
Descubrirás cómo Gradle estructura un proyecto en Java, desde la compilación inicial hasta la ejecución y el empaquetado final.
Al completar este tema podrás preparar builds reproducibles, definir la clase principal de tu aplicación y generar artefactos listos para distribución.
El plugin java aporta la estructura convencional src/main/java y tareas como compileJava y test. El comando gradle build ejecuta el ciclo completo (compilar, procesar recursos, pruebas y ensamblado).
compileJava respeta el directorio fuente estándar; puedes agregar directorios adicionales mediante sourceSets.plugins {
id 'java'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
sourceSets {
main {
java.srcDirs('src/main/java', 'src/main/generated')
}
}
Ejecuta gradle build para validar que el código compile y que las pruebas automáticas se ejecuten de forma satisfactoria.
mainClassNameEl plugin application agrega la extensión application, donde defines la clase con el método main que se usará al ejecutar la aplicación.
plugins {
id 'java'
id 'application'
}
application {
mainClass = 'com.ejemplo.App'
applicationDefaultJvmArgs = ['-Denv=dev']
}
Añadir argumentos por defecto facilita ajustar la configuración de la JVM sin modificar scripts externos.

gradle run)Con la clase principal definida, puedes iniciar la aplicación con la tarea run. Esta tarea compila el proyecto si hay cambios pendientes y luego invoca el main.
gradle run durante el desarrollo para validar cambios rápidamente.--args="--modo batch" para adaptar el comportamiento del programa.Gradle Wrapper (./gradlew run) para asegurar la versión correcta.# Ejecutar la aplicación
./gradlew run
# Ejecutar con argumentos
./gradlew run --args="--modo batch --nivel INFO"
La salida de la tarea se muestra en la consola de Gradle, lo que facilita depurar e integrar el comando en scripts automatizados.
gradle jarLa tarea jar genera el archivo JAR con las clases compiladas y los recursos. Puedes personalizar el manifiesto para incluir metadatos como la clase de entrada, la versión y la autoría.
tasks.named('jar') {
archiveBaseName.set('demo-app')
archiveVersion.set(project.version)
manifest {
attributes(
'Main-Class': 'com.ejemplo.App',
'Implementation-Version': project.version
)
}
}
// Generar el paquete
// gradle jar
El artefacto resultante se ubica en build/libs; puedes distribuirlo o usarlo como insumo para empaquetados más avanzados como Shadow.
Gestionar un proyecto Java con Gradle implica dominar las tareas de compilación, definir la clase principal para la ejecución directa y configurar el empaquetado final. Con estas prácticas obtienes builds reproducibles y listos para integrarse en pipelines de despliegue continuo.