Hoarder - don't repeat yourself compiling!
Hoarder is set of sbt plugins (for sbt 1.0.x and 0.13.x) that allows you to reuse compilation from other workspaces (aka. Cached compilation).
Hoarder is based on zinc (from this PR).
The idea is simple: your code is compiled many times (e.g. on CIs) and results are usually thrashed. Instead, dist some (alongside with cached compilation metadata) and don't repeat this work again and again.
Using cache will not make your local workspace read-only, once cached is imported it will work exactly as locally compiled one (all following compilations will be normal, incremental ones).
Getting started
In order to use Hoarder in your project just add it as standard sbt plugin (for given project or globally):
resolvers += Resolver.sonatypeRepo("snapshots")
addSbtPlugin("com.github.romanowski" % "hoarder" % "1.0-SNAPSHOT")
Hoarder does not have stable release so far and you can track progress for sbt 0.13.x and 1.0.x
Integration with you project
Hoarder can be used in multiple ways in your project that are described below. For now only 'stash' workflow is supported but I am working on more (feel free to create issue with your own ideas).
Stash
Stash workflow allows you to stash compilation results similarly to changes in git.
Running stash
task will store your current compilation in global directory for your project and later you can import that compilation using stashApply
command. More can be found in docs.
From release
Not implemented yet. See #2 for more detalis.
Cached compilaiton. How does it work?
Zinc incremental compiler (previously part of sbt) beside classfiles generates incremental compilation metadata that allows it later to recompile only subset of classfiles. In this PR zinc was able to export that metadata in format that can be reused.