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 directoriobuild/
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 comandobazel 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
- 🌐 "Build programs with Bazel." Accedido: 4 de octubre de 2024. [En línea]. Disponible en: https://bazel.build/run/build