How to share version values between project/plugins.sbt and project/Build.scala? -
i share common version variable between sbtplugin , rest of build
here trying:
in project/build.scala:
object versions { scalajs = "0.5.0-m3" } object mybuild extends build { //use version number } in plugins.sbt:
addsbtplugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % versions.scalajs) results in
plugins.sbt:15: error: not found: value versions addsbtplugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % versions.scalajs) is there way share version number specification between plugins.sbt , rest of build, e.g. project/build.scala?
sbt-buildinfo
if need share version number between build.sbt , hello.scala, do? don't know you, use sbt-buildinfo wrote.
this can configured using buildinfokeys setting expose arbitrary key values version or custom string value. understand not you're asking bear me.
meta-build (turtles way down)
as jacek noted , stated in getting started guide, build in sbt project defined in build located in project directory 1 level down. distinguish builds, let's define normal build proper build, , build defines proper build meta-build. example, can sbt plugin library of root project in meta build.
now let's question. how can share info between project/build.scala , project/plugins.sbt?
using sbt-buildinfo meta-build
we can define level of build creating project/project , add sbt-buildinfo (meta-)meta-build.
here files.
in project/project/buildinfo.sbt:
addsbtplugin("com.eed3si9n" % "sbt-buildinfo" % "0.3.2") in project/project/dependencies.scala:
package metabuild object dependencies { def scalajsversion = "0.5.0-m2" } in project/build.properties:
sbt.version=0.13.5 in project/buildinfo.sbt:
import metabuild.dependencies._ buildinfosettings sourcegenerators in compile <+= buildinfo buildinfokeys := seq[buildinfokey]("scalajsversion" -> scalajsversion) buildinfopackage := "metabuild" in project/scalajs.sbt:
import metabuild.dependencies._ addsbtplugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % scalajsversion) in project/build.scala:
import sbt._ import keys._ import metabuild.buildinfo._ object builds extends build { println(s"test: $scalajsversion") } so there's bit of boilerplate in project/buildinfo.sbt, version info shared across build definition , plugin declaration.
if you're curious buildinfo defined, peek project/target/scala-2.10/sbt-0.13/src_managed/.
Comments
Post a Comment