Mill JVMビルドツール:直接実行可能なアセンブリJAR

2025-01-02

Mill JVMビルドツールは、`java -jar`コマンドが不要な、直接実行可能なアセンブリJARを作成します。これは、JARファイルの先頭にシェルスクリプトを追加することで実現されます。このスクリプトはJavaランタイム環境を呼び出します。このスクリプトはUnixとWindowsの両方のシステムと巧みに互換性を持たせて設計されており、クロスプラットフォームでの実行が可能になります。この記事では、ZIPファイルの性質を利用して、ランチャースクリプトとJARの内容を連結し、シームレスな実行を実現する方法を詳細に説明しています。これにより、Javaプログラムのコマンドラインワークフローへの統合が大幅に向上します。

続きを読む
開発

MillによるCI高速化:選択的テスト戦略

2024-12-30

大規模なコードベースで全てのテストを実行するのは非効率的です。この記事では、フォルダベース、依存関係ベース、ヒューリスティックベースの3つの選択的テストアプローチを探ります。フォルダベースはシンプルですがエラーを見逃す可能性があります。依存関係ベースは包括的ですが、過剰なテストを行う可能性があります。ヒューリスティックベースはカスタムルールでテスト選択を最適化し、速度と網羅性のバランスを取ります。Millビルドツールは、依存関係ベースの選択的テストをネイティブにサポートしており、CIの効率を大幅に向上させます。しかし、ヒューリスティックな方法と組み合わせることで、速度とテストカバレッジのバランスをさらに最適化できます。

続きを読む

モノレポビルドツール:コードベースの拡張

2024-12-20

従来のビルドツールは、大規模なコードベース(100~10,000人のアクティブ開発者)に苦労します。BazelやMillなどのモノレポビルドツールは、複数の言語、カスタムビルドタスク、自動キャッシングと並列化、リモートキャッシングと実行をサポートすることで、ビルドの速度と効率を大幅に向上させます。依存関係に基づいたテスト選択とビルドタスクのサンドボックス機能も備えており、テスト時間と非決定性を軽減します。これらの機能は小規模プロジェクトでは不要に思えるかもしれませんが、大規模プロジェクトにおける大規模なコラボレーションと継続的インテグレーションには不可欠であり、ビルド時間がボトルネックになるのを防ぎます。

続きを読む