- Una herramienta de build rápida, escalable y multilenguaje compatible con Java, Scala y Kotlin
- Aunque las herramientas de build para JVM suelen considerarse lentas y confusas, Mill busca aprovechar al máximo el rendimiento y la usabilidad de la JVM
- Puede compilar la misma base de código Java entre 5 y 10 veces más rápido que Maven, y entre 2 y 4 veces más rápido que Gradle
- Mantiene los builds limpios y fáciles de entender con un lenguaje de configuración tipado y un grafo de tareas inmutable
- Escala bien desde proyectos pequeños de un solo módulo hasta grandes monorepos con cientos de módulos
Ventajas de Mill
- Rendimiento: el grafo de build de Mill almacena en caché y paraleliza automáticamente las tareas de compilación para mantener el flujo de trabajo rápido y con buena respuesta. Proporciona herramientas para identificar y resolver cuellos de botella en el build, añadiendo el mínimo overhead posible a la lógica necesaria para compilar el proyecto
- Mantenibilidad: permite escribir la configuración y la lógica de personalización con código conciso y con verificación de tipos, y usar árboles de módulos inmutables y grafos de tareas, dejando atrás YAML y Bash. Esto ayuda a detectar problemas de configuración desde temprano y permite que el IDE (IntelliJ o VSCode) entienda mejor los builds de Mill que los de otros sistemas de build
- Flexibilidad: las tareas y módulos de Mill permiten desde agregar pasos simples al build hasta construir toolchains completos de lenguaje. Puedes incorporar cualquier librería de JVM en el build, usar el amplio ecosistema de plugins de terceros para Mill o escribir tus propios plugins y publicarlos en Maven Central para que otros los usen
Mill vs otras herramientas de build
- Mill toma ideas de otras herramientas como Maven, Gradle y Bazel, pero busca aprender de las fortalezas de cada una y mejorar sus debilidades
- Mill vs Maven
- Mill sigue la innovación de Maven de ofrecer buenos valores predeterminados
- El
JavaModule integrado de Mill sigue el estilo de "convención sobre configuración" de Maven, por lo que los proyectos pequeños en Mill requieren un esfuerzo mínimo para empezar, y los proyectos más grandes mantienen una estructura consistente basada en esos valores predeterminados
- Mill almacena en caché y paraleliza los builds automáticamente para ofrecer mejoras de velocidad de 3 a 10 veces
- Esto aplica no solo a las tareas integradas que vienen con Mill, sino también a tareas o módulos personalizados. Ayuda a maximizar la agilidad del flujo de trabajo de build desde la línea de comandos y a mantener la productividad, algo especialmente importante en bases de código más grandes donde la velocidad del build tiende a degradarse. Mientras que el flujo de trabajo
clean install de Maven puede tardar más de un minuto, en Mill puede tomar solo unos segundos
- Mill hace que personalizar la herramienta de build sea mucho más fácil que en Maven
- Los proyectos suelen crecer más allá de simplemente compilar un solo lenguaje. Se necesita generación de código personalizada, flujos de linting, integración de herramientas, artefactos de salida o soporte para lenguajes adicionales. La extensibilidad de Mill y su experiencia con IDE permiten hacerlo de forma fácil y segura mediante código con verificación de tipos y tareas aisladas
- Mill vs Gradle
- Mill sigue la concisión y extensibilidad de Gradle
- En lugar de páginas de XML verboso, cada línea en un build de Mill tiene significado. Por ejemplo, agregar una dependencia ocupa una sola línea en Mill, igual que en Gradle, a diferencia de las 5 líneas de una declaración
<dependency> que se encuentran en Maven. Al igual que en Gradle, el usuario final puede personalizar fácilmente el build según sus necesidades exactas sin tener que pasar por el proceso de escribir un plugin
- Mill puede ser entre 2 y 3 veces más rápido que Gradle
- Tanto Mill como Gradle almacenan en caché y paralelizan los builds automáticamente, pero Mill lo hace con mucho menos overhead fijo. Eso significa menos tiempo esperando a la herramienta de build y más tiempo para lo que realmente importa en el proyecto
- Mill aplica buenas prácticas por defecto
- Cada parte de un build en Mill usa caché y es incremental por defecto. Todas las tareas de Mill escriben sus salidas en ubicaciones estándar. Todas las dependencias entre tareas se capturan automáticamente sin anotaciones manuales. Mientras que Gradle requiere un esfuerzo y conocimiento considerables para entender el build y configurarlo correctamente, la buena experiencia de IDE de Mill facilita comprenderlo, y su modelo de extensibilidad ayuda a evitar errores en la configuración del build, por lo que en Mill lo más fácil suele ser también lo correcto
Aún no hay comentarios.