https://mill-build.org/mill/index.html
[logo-white] The Mill Build Tool
[ ]
GitHub Blog API Issues Discuss
*
+ Building Java with Mill
o Java Module Configuration
o Java Library Dependencies
o Testing Java Projects
o Linting Java Projects
o Java Packaging & Publishing
o Java Build Examples
o Java Web Project Examples
+ Building Scala with Mill
o Scala Module Configuration
o Scala Library Dependencies
o Testing Scala Projects
o Linting Scala Projects
o Scala Packaging & Publishing
o Scala Build Examples
o Scala Web Project Examples
o Scala Native Examples
o Spark Examples
+ Building Kotlin with Mill
o Kotlin Module Configuration
o Kotlin Library Dependencies
o Testing Kotlin Projects
o Linting Kotlin Projects
o Kotlin Packaging & Publishing
o Kotlin Web Project Examples
+ Experimental Platform Support
o Building Android Apps
# Android Java Projects
# Android Kotlin Projects
# Linting Android Projects
o Building Python with Mill
# Python Module Configuration
# Python Library Dependencies
# Linting Python Projects
# Testing Python Projects
# Python Packaging & Publishing
# xref:pythonlib/web-examples.adoc
o Building Javascript with Mill
# Typescript Library Dependencies
# Typescript Module Configuration
# Testing Typescript Projects
# Linting Typescript Projects
# Typescript Packaging & Publishing
# JavaScript Build Examples
+ Why Use Mill?
o Case Study: Mill vs Maven
o Case Study: Mill vs Gradle
o Case Study: Mill vs sbt
+ The Mill CLI
o Installation & IDE Setup
o Mill Command-Line Flags
o Built-in Commands
o Task Query Syntax
o Build Header Config
+ Migrating to Mill
o Importing Maven Projects
o Importing Gradle Projects
o Importing sbt Projects
+ Mill Fundamentals
o Tasks
o Modules
o The Output Directory
o Library Dependencies in Mill
o Cross Builds
o Bundled Libraries
o Configuring JVM Versions
+ Extending Mill
o Import Libraries and Plugins
o Contrib Plugins
# Artifactory
# BuildInfo
# Codeartifact
# Docker
# Flyway
# Gitlab
# JMH
# Play Framework
# Proguard
# ScalaPB
# Scoverage
# Sonatype Central (Plugin Moved to Scalalib)
# TestNG
# Twirl
# Version file
o Third-Party Plugins
o Running Dynamic JVM Code
o Writing Mill Plugins
o The Mill Meta-Build
o Example: Typescript Support
o Example: Python Support
+ Large Builds and Monorepos
o Selective Test Execution
o Multi-File Builds
o Multi-Language Builds
+ Mill In Depth
o The Mill Evaluation Model
o Caching in Mill
o Parallelism in Mill
o The Mill Process Architecture
o Mill Sandboxing
o Mill Design Principles
o Why does Mill use Scala?
+ Reference
o Mill API Reference
o Changelog
o Talks & Blog Posts
Mill Documentation 1.0.0
* Mill Documentation
+ main-branch
+ 1.0.0
+ dev-1.0.0-13-69124b
+ 0.12.14
+ 0.11.13
+ 0.10.15
+ 0.9.12
* The Mill Build Engineering Blog
Mill: A Better Build Tool for Java, Scala, & Kotlin
d Maven Central Version
Mill is a build tool that tries to improve upon the tools
traditionally used in the JVM ecosystem:
* Mill builds the same Java project 3-6x faster than Maven or
Gradle due to aggressive caching & parallelism
* Mill's rich featureset means less fiddling with plugins, since
everything needed for development is built in
* Mill builds are easily explorable in your IDE, letting you work
on them without constantly googling for help
Although the Java compiler is very fast and the Java language is easy
to learn, JVM build tools have a reputation for being sluggish and
confusing. Mill tries to offer a better alternative, its
object-oriented builds reducing the learning curve and letting your
build system take full advantage of the Java platform's performance,
usability, and IDE support.
If you prefer a video introduction to Mill, see:
* Video: Better Java Builds with the Mill Build Tool, GeeCon Krakow
16 May 2025
* Video: Solving Scala's Build Problem with the Mill Build Tool, SF
Scala Meetup 22 April 2025
For more discussion on the motivation behind the project, see Why Use
Mill?
Getting Started
To get started using Mill for the first time, or migrating an
existing JVM codebase (built using Maven, Gradle, or SBT) to Mill,
see:
* Installation & IDE Setup * Migrating to Mill
Or see the language-specific introductory documentation linked below:
java Java with Mill scala Scala with Mill kotlin Kotlin with Mill
Mill Features
* Performance: Mill automatically caches and parallelizes build
tasks and tests to keep local development fast, incrementally
builds assembly jars to speed up manual testing workflows, and
shortens CI times with selective test execution to only run the
subset of tests necessary to validate a code change.
* Builtins: Mill has builtin support for most common workflows: not
just compile/run/test, but also managing JVM versions, linting,
publishing, building executable assemblies, native binaries or
installers, etc. This lets you focus on your actual project and
spend less time fiddling with tooling and plugins.
* Maintainability: Mill's config and custom logic is written in
concise type-checked JVM code, with an immutable module tree and
task graph. This catches configuration issues early, and helps
both humans and IDEs (IntelliJ or VSCode) understand your Mill
build better than any other build system
* Flexibility: Mill's tasks and modules allow anything from adding
simple build steps, up to entire language toolchains. You can
import any JVM library in your build, use Mill's rich ecosystem
of Third-Party Mill Plugins, or write plugins yourself and
publish them to Maven Central for others to use.
* Scalability Mill scales well from small projects to large
monorepos with hundreds of modules and multiple languages. Even
projects with hundreds or thousands of sub-modules can be handled
performantly and with minimal overhead.
Mill is used to build many real-world projects, such as:
* C3P0 JDBC Connection Pool
* Coursier dependency resolver
* Ammonite REPL
* SpinalHDL and Chisel chip design frameworks
Mill can be used for applications built on top of common JVM
frameworks like Spring Boot (both in Java and in Kotlin), Micronaut,
Ktor, or Http4S.
Mill borrows ideas from other tools like Maven, Gradle, Bazel, and
sbt, but tries to learn from the strengths of each tool and improve
on their weaknesses. For comparisons with existing build tools, check
out these pages:
maven Mill vs Maven gradle Mill vs Gradle sbt Mill vs sbt
Tool & Framework Support
Mill supports most common JVM development workflows and tools built
in, so you can get very far before you need to reach for third-party
plugins or write custom code to extend your build pipelines. The
table below links to the relevant part of the documentation and
examples for each tool:
Languages Packaging
* Java, Kotlin, Scala * Executable Assemblies
Dependency Management * Graal Native Image, JLink,
JPackage
* Adding Dependencies
* Docker
* Dependency Version
Management and BOMs Publishing
* Unmanaged Dependencies * Maven Central, Artifactory
* JVM Version Management Web Frameworks
Testing * Spring Boot, Micronaut
* JUnit4, JUnit5, TestNG, * Ktor, Kotlin.js
ScalaTest, Specs2, Munit
* Http4s, Scala.js
* Integration Testing
Others
* Test Parallelism
* Java Annotation Processors,
Linting Kotlin Compiler Plugins, Scala
Compiler Plugins
* ErrorProne, Checkstyle,
Palantir Java Format, Jacoco * JNI
, PMD, RevApi
* Apache Spark, Scala-Native
* Detekt, KtLint, KtFmt, Kover
* Selective Test Execution,
* Scalafix, Scalafmt, Multi-Language Builds
Scoverage, Mima
When the time comes that you do need something not in its builtin
feature set, Mill also has a rich ecosystem of third party plugins
for less common use cases:
* Third-Party Plugins
Contributing and Community
If you want to contribute to Mill, or are interested in the
fundamental ideas behind Mill rather than the user-facing features
discussed above, check out the page on Mill Design Principles. In
particular, this video is a must-watch to help you understand the
fundamental concepts behind Mill and why they are interesting:
* Video: A Deep Dive into the Mill Build Tool
To engage Mill with the community, you can use the channels below:
* Mill Github Discussions
* Scala Discord, in the TOOLING#mill channel
Mill maintains an open list of issue bounties below, with payouts
ranging from 500USD to 3000USD per issue. Feel free to look through
the list and try your hand at any bounties that may interest you
* Open Issue Bounties
Commercial support and services related to Mill are available if you
need help with training, adoption, or maintenance in your
organization. Email info@mill-build.org with details on what you need
and we can make an arrangement.
Building Java with Mill