Skip to main content

Tareas Predefinidas en Bazel

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


Si bien Gradle es un sistema de automatización de construcción flexible y ampliamente utilizado en proyectos Java y Kotlin, Bazel es otro sistema de construcción que se enfoca en la escalabilidad y velocidad, ideal para proyectos de gran envergadura que incluyen múltiples lenguajes y plataformas.

Tarea build vs. bazel build

Ambos sistemas tienen la capacidad de compilar y construir proyectos, pero el enfoque es diferente:

  • En Gradle, la tarea build ejecuta la compilación de código, pruebas y generación de artefactos.

    ./gradlew build
  • En Bazel, el comando bazel build ejecuta una construcción declarativa basada en un archivo de configuración (BUILD file), que define cómo se deben construir los artefactos. No necesariamente incluye las pruebas, que deben ejecutarse con un comando separado.

    bazel build //:target

Tarea clean vs. bazel clean

Ambos sistemas incluyen una tarea para limpiar los archivos generados durante la construcción:

  • En Gradle, la tarea clean elimina el directorio build/ y otros archivos temporales generados:

    ./gradlew clean
  • En Bazel, el comando bazel clean también elimina archivos temporales, pero mantiene el caché de artefactos compilados, lo que puede acelerar construcciones futuras. Para una limpieza completa, existe el comando bazel clean --expunge.

    bazel clean

Tarea test vs. bazel test

La diferencia principal entre ambos sistemas radica en cómo manejan las pruebas:

  • En Gradle, la tarea test se puede configurar para ejecutar pruebas con frameworks como JUnit, configurando fácilmente el registro de eventos y otras opciones:

    ./gradlew test
  • En Bazel, las pruebas también se definen explícitamente en los archivos de construcción. El comando bazel test ejecuta las pruebas, compilando solo los archivos necesarios para esas pruebas, lo que puede acelerar el proceso.

    bazel test //:target_test

Tarea assemble vs. bazel build

Mientras que Gradle tiene la tarea assemble para compilar y empaquetar sin ejecutar pruebas:

./gradlew assemble

En Bazel, no existe una distinción clara entre build y assemble. El comando bazel build realiza la construcción del proyecto, y cualquier artefacto empaquetado se define explícitamente en el archivo de configuración.

Flexibilidad y Escalabilidad

  • Gradle es conocido por su flexibilidad en la personalización y configuración de tareas, lo que lo hace adecuado para una variedad de proyectos de distintos tamaños.
  • Bazel, por su parte, está optimizado para proyectos masivos con grandes bases de código, múltiples lenguajes y dependencias distribuidas. Sus construcciones paralelas y el sistema de cacheo son ideales para proyectos de alto rendimiento.

Bibliografías Recomendadas