pdolega / hoarder

Project for cached compiation plugins for sbt

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

Project for cached compiation plugins for sbt

License:Other


Languages

Language:Scala 100.0%