mill is a free, open source build & deployment project written in Scala and released under MIT. It has 2,792 GitHub stars, 447 forks and 272 open issues, and was last pushed 14 hours ago. On this registry it ranks #41 of 59 tracked projects in Build & Deployment, with 5 head-to-head comparisons available.

What is mill?

What it is

Mill build tool. Java Scala Kotlin projects. Lives in JVM ecosystem. Category Developer Tools / Build & Deployment. License MIT. Language Scala. Homepage mill-build.org. Stable version 1.1.9. Maven Central artifact com.lihaoyi/mill-dist shown. Badge shows stable-version and unstable-dev-version. Repo age 9 years. Last push 2026-09-14T12:22:46Z. Stars 2791. Forks 447. Open issues 272. Contributors not listed. GitHub description repeats tagline. README links current documentation site. README includes quick example.

Problem: JVM build tools sluggish complicated confusing. Java compiler fast. Java language easy learn. README says Java platform deserves developer experience. Mill tries offer alternative. Claims simpler than Maven. Claims easier than Gradle. Claims 3-7x faster dev workflows than other JVM build tools. Uses declarative build.mill.yaml files. Says often 1/10th lines of pom.xml. Uses object-oriented programmable builds. Java developers can intuitively understand.

Key capabilities

  • Builds Java Scala Kotlin projects.
  • Uses build.mill.yaml files. Extends JavaModule. Lists mvnDeps. Example org.thymeleaf:thymeleaf:3.1.1.RELEASE. Example org.slf4j:slf4j-nop:2.0.7. Example uses Thymeleaf and slf4j-nop dependencies.
  • Runs ./mill compile. Compiles sources into classfiles. Example output says compiling 1 Java source to.
  • Runs ./mill run --text hello. Executes application entry point. Example output prints hello.
  • Runs ./mill test. Reports failed ignored total counts. Example output shows foo.FooTest.testEscaping finished foo.FooTest.testSimple finished 0 failed 0 ignored 2 total.
  • Claims aggressive caching and parallelism. Claims faster builds on JVM.
  • Topics include android groovy java kotlin mill-plugin scala scala-js scala-native.

Who uses it and how

  • JVM developers replace Maven or Gradle build definitions.
  • Teams write shorter build.mill.yaml files.
  • Developers iterate with compile run test commands.
  • Developers run example commands from README.
  • Projects using Android Scala.js Scala Native Groovy or plugins may use Mill.

Getting started

Create build.mill.yaml. Extend JavaModule. Add mvnDeps. Run ./mill compile ./mill run --text hello ./mill test. Documentation at mill-build.org describes setup. Read homepage documentation. Changelog available.

When to use it — and when not to

Use Mill for JVM build workflows. Maven Gradle feel slow verbose confusing. Avoid if stack outside Java Scala Kotlin or related topics. Avoid if need hosted option Docker package manager install paths; provided facts do not list them. Check open issues 272 and missing contributor count before adoption. No self-hosting database storage SMTP mentioned in facts. No Docker image names package managers or hosted option given in README.

project readme (upstream, from github) — read inline

= image:website/docs/logo.svg[title=Mill Logo] Mill: A Better Build Tool for Java, Scala, & Kotlin :mill-stable-version: 1.1.9 :link-github: https://github.com/com-lihaoyi/mill :link-current-doc-site: https://mill-build.org :link-mill-moduledefs: https://github.com/com-lihaoyi/mill-moduledefs // customize appearance on GitHub :idprefix: :idseparator: - :toc: :toc-placement: preamble ifndef::env-github[] :icons: font endif::[] ifdef::env-github[] :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[]

link:changelog.adoc[image:https://img.shields.io/maven-central/v/com.lihaoyi/mill-dist?label=stable-version&versionSuffix={mill-stable-version}[d]] https://central.sonatype.com/artifact/com.lihaoyi/mill-dist[image:https://img.shields.io/maven-central/v/com.lihaoyi/mill-dist?label=unstable-dev-version[Maven Central Version]]

Mill is a build tool that improves upon the tools traditionally used in the JVM ecosystem:

Although the Java compiler is very fast and the Java language is easy to learn, JVM build tools have a reputation for being sluggish, complicated, and confusing. Mill tries to offer a better alternative that gives the Java platform the developer experience it deserves.

If you want to use Mill in your own projects, check out our documentation:

  • {link-current-doc-site}[Documentation]

Here is some quick example, so that you can imagine how it looks:

[source,yaml,subs="verbatim,attributes"]

extends: JavaModule mvnDeps:

  • org.thymeleaf:thymeleaf:3.1.1.RELEASE
  • org.slf4j:slf4j-nop:2.0.7

[source,console]

./mill compile # compile sources into classfiles ... compiling 1 Java source to...

./mill run --text hello

hello

./mill test ... Test foo.FooTest.testEscaping finished, ... Test foo.FooTest.testSimple finished, ... Test run foo.FooTest finished: 0 failed, 0 ignored, 2 total, ...


  • link:developer.adoc[Developer Documentation]
  • link:changelog.adoc[Changelog]

Frequently asked questions

Is mill free to use?

mill is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does mill do?

A better build tool for Java, Scala and Kotlin: Simpler than Maven, easier than Gradle, with 3-7x faster dev workflows than other JVM build tools

What is mill written in?

mill is primarily written in Scala. Its source is publicly available at https://github.com/com-lihaoyi/mill, and it has 2,792 GitHub stars.