是否有Maven POM属性的SBT等效物?

Jon*_*han 5 scala sbt

我正在使用.sbt构建定义文件,并且我定义了许多相关的依赖项,它们共享相同的版本号,例如:

libraryDependencies ++= Seq(
    "com.typesafe.akka" % "akka-actor" % "2.0.3",
    "com.typesafe.akka" % "akka-slf4j" % "2.0.3",
    ...
    "com.typesafe.akka" % "akka-testkit" % "2.0.3" % "test",
    ...
)
Run Code Online (Sandbox Code Playgroud)

我希望能够在一个地方指定版本号,就像你在Maven中用theitesites元素一样,即你可以在你的pom中指定以下内容:

<propeties>
    <io.akka.version>2.0.3</io.akka.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

然后在声明依赖项时引用该属性:

<dependency>
    ...
    <version>${io.akka.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

有人知道SBT中是否有类似的方法?

om-*_*nom 11

如果您使用完整配置(.scala文件),只需编写纯scala代码:

val ioAkkaVersion = "2.0.3"

libraryDependencies ++= Seq(
    "com.typesafe.akka" % "akka-actor" % ioAkkaVersion,
    "com.typesafe.akka" % "akka-slf4j" % ioAkkaVersion,
    ...
    "com.typesafe.akka" % "akka-testkit" % ioAkkaVersion % "test",
    ...
)
Run Code Online (Sandbox Code Playgroud)

对于.sbt配置,这看起来很相似,但不是那么优雅:

libraryDependencies ++= {
  val ioAkkaVersion = "2.0.3"
  Seq(
    "com.typesafe.akka" % "akka-actor" % ioAkkaVersion,
    "com.typesafe.akka" % "akka-slf4j" % ioAkkaVersion,
    ...
    "com.typesafe.akka" % "akka-testkit" % ioAkkaVersion % "test",
    ...
  )
}
Run Code Online (Sandbox Code Playgroud)


Vik*_*ang 5

也许是这样的?

def akka(artifact: String) = "com.typesafe.akka" % ("akka-" + artifact) % "2.0.3"


libraryDependencies ++= Seq(akka("actor"), akka("slf4j"), akka("testkit") % "test" )
Run Code Online (Sandbox Code Playgroud)