https://github.com/com-lihaoyi/mill
Mill is a fast JVM build tool that supports Java, Scala, Kotlin and many other languages. 3-6x faster than Maven or Gradle for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
https://github.com/com-lihaoyi/mill
android build-system build-tool java jvm kotlin mill mill-plugin python scala scala-js scala-native typescript zinc
Last synced: 14 days ago
JSON representation
Mill is a fast JVM build tool that supports Java, Scala, Kotlin and many other languages. 3-6x faster than Maven or Gradle for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
- Host: GitHub
- URL: https://github.com/com-lihaoyi/mill
- Owner: com-lihaoyi
- License: mit
- Created: 2017-10-17T03:43:19.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-05-12T12:18:18.000Z (9 months ago)
- Last Synced: 2025-05-12T13:18:12.945Z (9 months ago)
- Topics: android, build-system, build-tool, java, jvm, kotlin, mill, mill-plugin, python, scala, scala-js, scala-native, typescript, zinc
- Language: Scala
- Homepage: https://mill-build.org/
- Size: 890 MB
- Stars: 2,418
- Watchers: 51
- Forks: 404
- Open Issues: 189
-
Metadata Files:
- Readme: readme.adoc
- Changelog: changelog.adoc
- Contributing: CONTRIBUTING.adoc
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.adoc
Awesome Lists containing this project
- awesome-java - Mill
- VSCode-Guide - Mill
- fucking-awesome-scala - **mill** - 3x faster than Gradle and 5-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible |   (Table of Contents / Tools)
- awesome-scala-native - Mill - Build tool striving for simplicity, inspired by [Bazel](https://www.bazel.build/). (Build Tools)
- awesome-scala - **mill** - 3x faster than Gradle and 5-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible |   (Table of Contents / Tools)
README
= image:website/docs/logo.svg[title=Mill Logo] Mill: A Better Build Tool for Java, Scala, & Kotlin
:mill-stable-version: 1.0.6
: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 tries to improve upon the tools traditionally used
in the JVM ecosystem:
* Mill builds the same Java project https://mill-build.org/mill/comparisons/why-mill.html#_performance[3-6x
faster than Maven or Gradle] due to aggressive caching & parallelism
* Mill's rich feature set means
https://mill-build.org/mill/comparisons/why-mill.html#_rich_builtins[less fiddling with plugins],
since everything needed for development is built in
* Mill builds are https://mill-build.org/mill/comparisons/why-mill.html#_gradle_ide_support[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 https://mill-build.org/mill/comparisons/why-mill.html#_object_oriented_builds[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 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,scala,subs="verbatim,attributes"]
----
package build
import mill._, javalib.*
object foo extends JavaModule {
def mvnDeps = Seq(
mvn"net.sourceforge.argparse4j:argparse4j:0.9.0",
mvn"org.thymeleaf:thymeleaf:3.1.1.RELEASE"
)
object test extends JavaTests, TestModule.Junit4 {
def mvnDeps = Seq(
mvn"com.google.guava:guava:33.3.0-jre"
)
}
}
----
[source,console]
----
> ./mill foo.compile # compile sources into classfiles
...
compiling 1 Java source to...
> ./mill foo.run --text hello
hello
> ./mill foo.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]