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.
mainClassName
El 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 jar
La 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.