Mill: A fast JVM build tool for Java and Scala

Overall impressions of Mill

  • Many are excited about a faster, type-safe JVM build tool and like Mill’s “tasks as pure functions” model with caching and parallelism.
  • Some report very positive real-world use, especially compared to Maven/Gradle/SBT.
  • Others tried Mill and struggled to get even basic Java builds working, concluding Java support and documentation were (at that time) immature.

JVM build pain vs. Go/Rust/JS

  • A recurring theme: JVM build tooling (especially Gradle, Maven, Kotlin Multiplatform) is seen as unusually complex and slow compared to Go (go build/go test), Rust (cargo), and even npm.
  • Publishing JVM artifacts (Maven Central, signing, CI, multiplatform) is described as days of work vs minutes for source-based ecosystems.
  • Some counter that Maven “just works” for many use cases, especially inside companies using internal repositories, and that JS tooling often devolves into fragile ad‑hoc scripts.

Configuration language & typing

  • Mill uses Scala as its configuration language; supporters argue this gives real types, IDE support, discoverability, and avoids “half-baked DSLs” embedded in XML/YAML.
  • Critics dislike having to learn Scala just to build Java, and worry about version mismatches between build-language compiler and project code (as with Gradle+Kotlin).
  • Broader debate: general-purpose languages vs “config languages” (Starlark, CUE, Pkl) and whether static typing meaningfully helps in small scripts vs large, evolving build logic.

Performance & dependency resolution

  • Mill claims large speedups over Maven and Gradle; some agree JVM compilers aren’t the bottleneck, others say incremental performance vs tools like sbt is mixed.
  • Mill uses Coursier for dependency resolution, which several posters say is dramatically faster than Maven/Gradle’s resolvers.
  • There is skepticism about daemon-based designs but acknowledgment they are key to perceived speed.

Comparisons to other build tools

  • Gradle is widely criticized for complexity, poor docs, plugin/version hell, and fragile old builds; Kotlin DSL is seen by some as marginally better than Groovy, others as missing the point.
  • Maven is praised for declarative simplicity and longevity, but criticized for XML verbosity, slow resolution, and limited extensibility.
  • Bazel is respected for sound fundamentals but described as extremely hard to adopt, with setup efforts measured in “person‑years”; Mill is positioned as a lighter-weight alternative.

Ecosystem, UX, and future

  • Requests include better Java-first onboarding, zero-config “go-style” workflows, clearer comparisons against modern Gradle/Kotlin and Bazel, and stable 1.0 semantics.
  • Mill’s extensibility (new language support in ~100 LOC, bounties for integrations like Python/Quarkus) is seen as promising but not yet broadly proven.