You can simply access sys.props : "Bidirectional, Modified Map representing current system properties." So you can do something like this:
val branch = "full-" + sys.props.getOrElse("branch", "unstable") "com.example" % "core" % "2.0" classifier branch
If you want to have more advanced custom properties from a file in Build.scala :
import java.io.{BufferedReader, InputStreamReader, FileInputStream, File} import java.nio.charset.Charset import java.util.Properties object MyBuild extends Build { // updates system props (mutable map of props) loadSystemProperties("project/myproj.build.properties") def loadSystemProperties(fileName: String): Unit = { import scala.collection.JavaConverters._ val file = new File(fileName) if (file.exists()) { println("Loading system properties from file `" + fileName + "`") val in = new InputStreamReader(new FileInputStream(file), "UTF-8") val props = new Properties props.load(in) in.close() sys.props ++ props.asScala } } // to test try: println(sys.props.getOrElse("branch", "unstable")) }
SBT is more powerful than Maven because you can just write Scala code if you need something very ordinary. You would like to use Build.scala instead of build.sbt in this case.
ps myproj.build.properties file looks like this:
sbt.version=0.13.1 scalaVersion=2.10.4 parallelExecution=true branch=stable
source share