Freedom251 › Build Automation Software
Mill

What Mill is
Mill is a free, open-source build tool for Java, Scala, and Kotlin projects on Linux, macOS, and Windows. Projects can use declarative build.mill.yaml files or object-oriented build definitions. Mill supports dependency management, testing, linting, packaging, publishing, and web frameworks, with integrations such as JUnit, ScalaTest, MUnit, Spring Boot, Micronaut, Ktor, Maven Central, Artifactory, Docker, and Apache Spark. It caches and parallelizes tasks, keeps a long-lived daemon, and can limit tests or other tasks to code affected by changes. The recommended per-project bootstrap script downloads the selected version when needed. IntelliJ and VSCode are supported, with Eclipse project generation for Java and general Build Server Protocol client support. VSCode integration covers Java and Scala; Kotlin users are advised to use IntelliJ IDEA Community Edition. The native launcher supports Intel Windows, macOS, and Linux, plus ARM macOS and Linux, but not Windows ARM. Mill supports build as code, dependency locking, build caching, and artifact packaging, but not remote execution.
Who it suits
Mill suits developers and teams building Java, Scala, or Kotlin projects who want build configuration, dependency management, testing, and packaging in one open-source tool. Its editor support and selective task execution also suit large codebases and CI workflows.
What it does well
- Free and open source
- Supports Java, Scala, and Kotlin
- Caches and parallelizes build tasks
- Includes dependency locking and build caching
- Works across Linux, macOS, and Windows
What to know first
- Remote execution is not supported
- Windows ARM native launcher is unsupported
- VSCode Kotlin users are advised to use IntelliJ
- JVM launcher requires Java 17 or newer
Verdict
Mill provides a broad build workflow with caching, parallel execution, integrations, and multi-platform support. Teams should note the Windows ARM limitation, Kotlin editor guidance, and absence of remote execution.
Facts from Mill's own pages
- Build configuration
- Mill supports declarative build.mill.yaml files and object-oriented build definitions. · mill-build.org, 7 Oct 2026
- Build speed
- The site says Mill caches and parallelizes build tasks and tests, and uses a long-lived daemon to keep the JVM warm. · mill-build.org, 7 Oct 2026
- Built-in workflows
- Mill documents built-in support for dependency management, testing, linting, packaging, publishing, and web frameworks. · mill-build.org, 7 Oct 2026
- Commercial support
- Commercial support and services for organizational training, adoption, or maintenance are available by arrangement through [email protected]. · mill-build.org, 7 Oct 2026
- Community support
- The site points users to GitHub Discussions and the Scala Discord TOOLING#mill channel for community discussion. · mill-build.org, 7 Oct 2026
- Declarative configuration
- The site describes build.mill.yaml files as declarative project configuration that can be much shorter than Maven pom.xml files. · mill-build.org, 7 Oct 2026
- Dependency management
- Mill supports dependency declarations, version management and BOMs, unmanaged dependencies, and JVM version management. · mill-build.org, 7 Oct 2026
- IDE limitation
- The documentation says VSCode integration supports Java and Scala, while Kotlin users are advised to use IntelliJ IDEA Community Edition. · mill-build.org, 7 Oct 2026
- IDE support
- Mill supports IntelliJ and VSCode, and generally supports clients of the Build Server Protocol; it can also generate Eclipse project files for Java. · mill-build.org, 7 Oct 2026
- Installation
- The recommended installation method is a per-project bootstrap script that downloads the selected Mill version when needed. · mill-build.org, 7 Oct 2026
- Integrations
- The documentation lists integrations including JUnit, ScalaTest, MUnit, Spring Boot, Micronaut, Ktor, Maven Central, Artifactory, Docker, and Apache Spark. · mill-build.org, 7 Oct 2026
- JVM requirements
- The native launcher can run without Java installed, while the JVM launcher requires a globally installed Java version 17 or newer. · mill-build.org, 7 Oct 2026
- Languages
- The documented languages include Java, Kotlin, and Scala. · mill-build.org, 7 Oct 2026
- Operating systems
- The native launcher supports Windows, macOS, and Linux on Intel, and macOS and Linux on ARM; Windows ARM is unsupported by the native launcher. · mill-build.org, 7 Oct 2026
- Performance
- Mill says it caches and parallelizes build tasks and tests, uses a long-lived daemon, and supports selective test execution. · mill-build.org, 7 Oct 2026
- Purpose
- Mill is a build tool for Java, Scala, and Kotlin projects. · mill-build.org, 7 Oct 2026
- Security
- The documentation recommends providing publishing credentials through environment variables for security considerations. · mill-build.org, 7 Oct 2026
- Selective test execution
- Mill can limit tests and other tasks to those affected by code changes, which the documentation describes as useful for large codebases and CI. · mill-build.org, 7 Oct 2026
- Testing
- The site lists support for JUnit 4 and 5, TestNG, ScalaTest, Specs2, and MUnit, among other test frameworks. · mill-build.org, 7 Oct 2026
Where Mill stands on Freedom251
- Build Automation Software#40 of 42