1. リモートキャッシング

リモートキャッシング 

sbt 1.4.0 / Zinc 1.4.0 は、インクリメンタルコンパイル中に追跡されるファイルパスを仮想化し、変更検出にコンテンツハッシュを使用します。これらの組み合わせにより、ビルド・アズ・ファンクションとしても知られる、再現可能なビルドを実現できます。

これにより、実験的なリモートキャッシング(キャッシュされたコンパイル)機能が有効になります。これは、開発者チームやCI(継続的インテグレーション)システムがビルド出力を共有するというアイデアに基づいています。ビルドが再現可能であれば、あるマシンからの出力を別のマシンで再利用できるため、ビルドを大幅に高速化できます。

使用方法 

ThisBuild / pushRemoteCacheTo := Some(MavenCache("local-cache", file("/tmp/remote-cache")))

まず、マシン1から`pushRemoteCache`を実行します。これにより、`*.class`とZinc Analysisアーティファクトが指定の場所に公開されます。次に、マシン2から`pullRemoteCache`を実行します。

Mavenリポジトリによるリモートキャッシング 

sbt 1.4.0から、Mavenの公開と解決メカニズムを再利用して、キャッシュされたビルド出力を交換しています。これにより、Bintrayなどの既存のインフラストラクチャを使用して簡単に開始できる可能性があります。

将来的には、`PUT`と`GET`を使用するプレーンなHTTPサーバーのような、よりシンプルなキャッシュサーバーを検討するかもしれません。これには、どこかでHTTPサーバーをホストする必要がありますが、プロビジョニングがより簡単になる可能性があります。

ThisBuild / rootPaths 

作業ディレクトリやCoursierキャッシュディレクトリなどのマシン固有のパスを抽象化するために、sbtは`ThisBuild / rootPaths`にルートパスのマップを保持しています。ビルドでソースディレクトリや出力ディレクトリに特別なパスを追加する場合は、`ThisBuild / rootPaths`に追加してください。

`ThisBuild / rootPaths`にすべての必要なパスが含まれていることを保証する必要がある場合は、`ThisBuild / allowMachinePath`を`false`に設定できます。

remoteCacheId 

sbt 1.4.2から、`remoteCacheId`は入力ソースのコンテンツハッシュのハッシュを使用します。