All Projects → guardian → Sbt Play Assethash

guardian / Sbt Play Assethash

SBT plugin for Play 2 to add MD5 sums to asset file names

Programming Languages

scala
5932 projects

sbt-play-assethash

SBT plugin to add md5 hashes to the filenames of assets in Play 2.0 project.

This plugin automatically pulls in the related sbt-play-artifact plugin.

Why use this?

If you want scale play and make deployments easier then this may be for you.

Our motivation behind introducing assets with an md5 hash in their name:

  • We want the cache hit rate gain from our multi-component apps sharing a single set of assets
  • We want to be able to do rolling deployments
  • Therefore, multiple revisions of assets must exist to facilitate deployment and

The simplest way to provide this is to have separate hosting outside of the play apps (this avoids the need for play to know about multiple revisions of an asset file). This simplifies our CDN configuration as well.

How to use

The most convenient way of using this plugin is to add a source dependency in a scala file under project/project:

val playAssetHashPluginVersion = "" // tag id you want to use
lazy val plugins = Project("plugins", file("."))
    .dependsOn(uri("git://github.com/guardian/sbt-play-assethash.git#" + playAssetHashPluginVersion))

Then add playAssetHashDistSettings or playAssetHashCompileSettings in your project (both from com.gu.PlayAssetHash._). The dist settings include the compile settings - the only time you might want to use only the latter is when making a common library (such as frontend-common.

import com.gu.PlayAssetHash._

  val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA)
    .settings(playAssetHashDistSettings: _*)

Release

To release a new version, tag it and push the tag to github.

git tag -a 1.XXX
git push --tags
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].