- Java、Scala、Kotlinをサポートする、高速で拡張性のあるマルチ言語ビルドツール
- JVMビルドツールは遅くて複雑だと評価されがちだが、MillはJVMの性能と使いやすさを最大限に活かすよう設計されている
- 同じJavaコードベースを、Mavenより5〜10倍、Gradleより2〜4倍高速にビルドできる
- Typed Config言語とImmutableなタスクグラフにより、ビルドをクリーンで理解しやすい状態に保つ
- 小さな単一モジュールのプロジェクトから、数百のモジュールを含む大規模なモノレポまでうまくスケールする
Millの利点
- パフォーマンス: Millのビルドグラフはビルドタスクを自動的にキャッシュし、並列化することで、ワークフローを高速かつ応答性の高い状態に保つ。プロジェクトのビルドに必要なロジックに最小限のオーバーヘッドしか追加せず、ビルドのボトルネックを特定して解決するためのツールも提供する
- 保守性: YAMLやBashを超えて、簡潔で型チェック可能なコードで設定やカスタムロジックを記述し、不変のモジュールツリーとタスクグラフを使用する。これにより設定上の問題を早期に発見でき、IDE(IntelliJまたはVSCode)が他のビルドシステムよりもMillのビルドをより深く理解できるようになる
- 柔軟性: Millのタスクとモジュールは、単純なビルドステップの追加から言語ツールチェーン全体まで、あらゆるものを扱える。ビルド内ではあらゆるJVMライブラリを取り込み、Millの充実したサードパーティ製Millプラグインのエコシステムを利用したり、自分でプラグインを書いてMaven Centralに公開し、他の人が使えるようにもできる
Mill vs 他のビルドツール
- MillはMaven、Gradle、Bazelのような他のツールからアイデアを取り入れているが、それぞれの長所を学び、短所を改善しようとしている
- Mill vs Maven
- Millは、Mavenが実現した優れたデフォルト設定という革新を受け継いでいる
- Millの組み込み
JavaModule はMavenの「設定より規約」スタイルに従っているため、小規模なMillプロジェクトは最小限の労力で始められ、大規模なMillプロジェクトはこれらのデフォルトを土台とした一貫した構造を持てる
- Millはビルドを自動的にキャッシュし、並列化することで、3〜10倍の高速化を実現する
- これはMillに付属する組み込みタスクだけでなく、カスタムタスクやモジュールにも当てはまる。これにより、コマンドラインでのビルドワークフローの俊敏性を最大化し、生産性の維持に役立つ。特に、ビルド速度が低下しがちな大規模コードベースでは重要である。Mavenの「clean install」ワークフローが1分以上かかる場合でも、Millでは数秒で済むことがある
- MillはMavenよりもビルドツールをはるかに簡単にカスタマイズできる
- プロジェクトは通常、単一言語をコンパイルするだけでは終わらない。カスタムコード生成、lintワークフロー、ツール統合、出力アーティファクト、追加言語のサポートが必要になる。Millの拡張性とIDE体験は、型チェックされたコードとサンドボックス化されたタスクによって、これを直接、簡単かつ安全に行えるようにしている
- Mill vs Gradle
- MillはGradleの簡潔さと拡張性を受け継いでいる
- 冗長なXMLのページとは異なり、Millビルドのすべての行には意味がある。たとえば依存関係の追加は、Mavenで見られる5行の
<dependency> 宣言とは違い、Gradleと同様にMillでも1行で済む。Gradleと同様に、エンドユーザーはプラグイン作成の手順を踏まなくても、正確な要件に合わせてビルドを簡単にカスタマイズできる
- MillはGradleより2〜3倍高速な場合がある
- MillとGradleはどちらもビルドを自動的にキャッシュし、並列化するが、Millははるかに少ない固定オーバーヘッドでそれを実行する。これは、ビルドツールを待つ時間が減り、プロジェクトにとって本当に重要なことにより多くの時間を使えることを意味する
- Millはデフォルトでベストプラクティスを適用する
- Millビルドのあらゆる部分は、デフォルトでキャッシュ可能かつインクリメンタルである。すべてのMillタスクは出力を標準の場所に書き込む。タスク間の依存関係は、手動の注釈なしで自動的に捕捉される。Gradleではビルドを理解し、正しい方法で設定するために相当な労力と専門知識が必要になる一方で、Millの優れたIDE体験はビルドを理解しやすくし、その拡張性モデルはビルド構成でミスをしにくくするため、Millでは最も簡単なやり方がたいてい正しいやり方になる
まだコメントはありません。