🏗 sbt-buildinfo 0.9.0 is published for sbt 1.
BuildInfoKeyconversion potentially breaking semantic change
TL;DR No need for
BuildInfoKey.ofN(...)any more. Use
BuildInfoKey.outOfGraphUnsafeif your build definition is now circular.
🏗 sbt-buildinfo 0.8.0 deprecated the original
BuildInfoKey.Entry[A]implicit and explicit conversions (
BuildInfoKey.applyrespectively), that executed the underlying sbt Task out of sbt's task graph execution, in favour of a newly introduced
BuildInfoKey.ofN(...)API, which correctly wired up the task graph. See #114.
🚀 As it was implemented (and released) it interacted poorly with sbt-buildinfo's
BuildInfoKey.mapAPI (#117), due to a mistake in the implementation and test coverage.
🏗 In resolving the issue it became clear that instead of introducing a new API, that required sbt-buildinfo users to change their source code to use, the already used conversions could have been modified to use the new Task-based semantics.
🏗 However, this change breaks any build definition that declares as a build info key any
TaskKeythat depends on
resourceGenerators, because the build definiton would now be circular and fail to load. To fix this breaking semantic change the user has to either drop the key used, choose another key, or fallback to the previous semantics by using the not-deprecated
BuildInfoKey.outOfGraphUnsafeAPI, also introduced in sbt-buildinfo 0.8.0.
➕ Add direct support for sbt's
🏗 A number of keys defined by sbt use sbt's
Attributedtype, specifically the keys that define classpaths. Prior to this change defining any of these keys as a build info key would generate
Attributedwould be simply converted to string with
toString. sbt-buildinfo 0.9.0 introduces direct support for these keys so they generate
🏗 sbt-buildinfo is able to generate
toJsonmethod using the following setting:
buildInfoOptions += BuildInfoOption.ToJson
🏗 sbt-buildinfo 0.9.0 makes the JSON encoding more natural:
"libraryDependencies" : [ "org.scala-lang:scala-library:2.12.4", "com.lihaoyi:acyclic:0.1.7:plugin->default(compile)", .....]
Do not generate multi-parameter infix calls
🚚 Multi-parameter infix calls may be removed in the future, so it's better not to generate this kind of code.
🏗 sbt-buildinfo 0.8.0 is published for sbt 1.
🏗 BuildInfoKey.of(...) and BuildInfoKey.ofN(...)
🏗 Prior to 0.8.0 when sbt-buildinfo generated the
BuildInfoobject using tasks, it was executing the tasks out-of-graph.
This would occasionally cause race conditions when used with side-effecty tasks.
🏗 To workaround this issue sbt-buildinfo introduces a new
BuildInfoKey.ofN(...)macro that will safely execute the tasks within the control of the task engine.
lazy val root = (project in file(".")) .enablePlugins(BuildInfoPlugin) .settings( buildInfoKeys := Seq[BuildInfoKey](name, version, someTask), buildInfoPackage := "hello" )
lazy val root = (project in file(".")) .enablePlugins(BuildInfoPlugin) .settings( buildInfoKeys := BuildInfoKey.ofN(name, version, someTask), buildInfoPackage := "hello" )
🏗 sbt-buildinfo 0.7.0 is cross published to sbt 0.13.x and sbt 1.0.0-M5.
One can now use
buildInfoRenderFactory := ScalaCaseClassRenderer.apply
🏗 To switch to another Renderer. Also added a Case Class renderer, which will create a case class AND an object that inherits the class. This makes it easy to use a jsonFormatter with the output. #98 by @axos88
buildInfoValuestask, which exposes the set of
BuildInfoResultobjects used by sbt-buildinfo to generate BuildInfo files.
🏗 This can be used within the sbt build itself to add the build info to the jar Manifest. #89 by @jastice
v0.6.1March 13, 2016
v0.6.0February 15, 2016
v0.5.0July 30, 2015
v0.4.0March 23, 2015
v0.3.2June 01, 2014
v0.3.1February 12, 2014
v0.3.0November 28, 2013