mill

JAVA源码 2025-08-24

mill :Java,Scala和Kotlin的更好的构建工具

mill是一种构建工具,试图改进JVM生态系统中传统上使用的工具:

  • 由于激进的缓存和并行性, mill比Maven或Gradle构建相同的Java项目3-6倍

  • mill的丰富功能集意味着减少插件的摆弄,因为内置的所有开发所需的一切

  • 在IDE中可以探索mill构建

尽管Java编译器非常快,并且Java语言易于学习,但JVM构建工具以缓慢和混乱而闻名。 mill试图提供更好的替代方案,其面向对象的构建可以减少学习曲线,并让您的构建系统充分利用Java平台的性能,可用性和IDE支持。

如果您想在自己的项目中使用mill ,请查看我们的文档:

  • 文档

这是一些快速的例子,以便您可以想象它的外观:

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" ) } }">
 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 "
    )
  }
}
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, ...">
> ./ 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, ...
  • 开发人员文档

  • ChangElog

下载源码

通过命令行克隆项目:

git clone https://github.com/com-lihaoyi/mill.git