- Uma ferramenta de build multilíngue rápida e escalável com suporte a Java, Scala e Kotlin
- Ferramentas de build para JVM costumam ser vistas como lentas e confusas, mas o Mill busca aproveitar ao máximo o desempenho e a usabilidade da JVM
- É possível compilar a mesma base de código Java de 5 a 10 vezes mais rápido que o Maven e de 2 a 4 vezes mais rápido que o Gradle
- Usa uma linguagem de configuração tipada e um grafo de tarefas imutável para manter o build limpo e fácil de entender
- Escala bem desde pequenos projetos de módulo único até grandes monorepos com centenas de módulos
Vantagens do Mill
- Desempenho: o grafo de build do Mill faz cache e paraleliza automaticamente as tarefas de build para manter o fluxo de trabalho rápido e responsivo. Também fornece ferramentas para identificar e resolver gargalos no build, adicionando o mínimo possível de sobrecarga à lógica necessária para compilar o projeto
- Manutenibilidade: vai além de YAML e Bash, permitindo escrever configuração e lógica de personalização em código conciso com verificação de tipos, usando uma árvore de módulos imutável e um grafo de tarefas imutável. Isso ajuda a detectar problemas de configuração cedo e permite que a IDE (IntelliJ ou VSCode) entenda melhor os builds do Mill do que em outros sistemas de build
- Flexibilidade: as tarefas e os módulos do Mill permitem desde a adição de etapas simples de build até cadeias completas de ferramentas de linguagem. É possível importar qualquer biblioteca JVM no build, usar o rico ecossistema de plugins de terceiros para Mill ou criar seus próprios plugins e publicá-los no Maven Central para que outras pessoas usem
Mill vs. outras ferramentas de build
- O Mill aproveita ideias de outras ferramentas como Maven, Gradle e Bazel, mas busca aprender com os pontos fortes de cada uma e melhorar seus pontos fracos
- Mill vs. Maven
- O Mill segue a inovação do Maven de oferecer bons padrões por padrão
- O
JavaModule embutido do Mill segue o estilo de "convenção em vez de configuração" do Maven, então projetos pequenos em Mill exigem esforço mínimo para começar, enquanto projetos maiores em Mill mantêm uma estrutura consistente com base nesses padrões
- O Mill faz cache e paraleliza builds automaticamente, oferecendo ganhos de velocidade de 3 a 10 vezes
- Isso vale não só para as tarefas embutidas fornecidas com o Mill, mas também para tarefas ou módulos personalizados. Isso ajuda a maximizar a agilidade do fluxo de build na linha de comando e manter a produtividade, especialmente em bases de código maiores, onde a velocidade do build tende a cair. Enquanto o fluxo "clean install" do Maven pode levar mais de 1 minuto, no Mill pode levar apenas alguns segundos
- O Mill torna muito mais fácil personalizar a ferramenta de build do que o Maven
- Os projetos geralmente crescem além da simples compilação de uma única linguagem. Eles passam a precisar de geração de código personalizada, fluxos de lint, integração com ferramentas, artefatos de saída ou suporte a linguagens adicionais. A extensibilidade do Mill e sua experiência com IDE tornam isso fácil e seguro de fazer diretamente, com código verificado por tipos e tarefas em sandbox
- Mill vs. Gradle
- O Mill segue a concisão e a extensibilidade do Gradle
- Em vez de páginas verbosas de XML, cada linha de um build em Mill tem significado. Por exemplo, adicionar uma dependência ocupa uma linha no Mill, assim como no Gradle, ao contrário das 5 linhas de declaração
<dependency> que você encontra no Maven. Como no Gradle, o usuário final pode personalizar facilmente o build para suas necessidades exatas sem precisar passar pelo processo de escrever um plugin
- O Mill pode ser de 2 a 3 vezes mais rápido que o Gradle
- Mill e Gradle fazem cache e paralelizam builds automaticamente, mas o Mill faz isso com muito menos sobrecarga fixa. Isso significa menos tempo esperando pela ferramenta de build e mais tempo para o que realmente importa no projeto
- O Mill aplica boas práticas por padrão
- Todas as partes de um build em Mill são cacheadas e incrementais por padrão. Toda tarefa do Mill escreve sua saída em um local padrão. Todas as dependências entre tarefas são capturadas automaticamente sem anotações manuais. Enquanto o Gradle exige esforço e conhecimento consideráveis para entender o build e configurá-lo corretamente, a excelente experiência de IDE do Mill facilita o entendimento do build e seu modelo de extensibilidade ajuda a evitar erros de configuração, de modo que, no Mill, o caminho mais fácil normalmente também é o caminho certo
Ainda não há comentários.