首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sbt中添加依赖项时,使用版本号重用属性

在sbt中添加依赖项时,使用版本号重用属性
EN

Stack Overflow用户
提问于 2012-05-01 23:20:35
回答 4查看 1.1K关注 0票数 7

我有一个使用sbt 0.11构建的项目。我正在尝试用Scala Swing创建一个简单的UI,所以第一件事就是在我的build.sbt中添加一个对scala-swing的依赖:

代码语言:javascript
复制
libraryDependencies += "org.scala-lang" % "scala-swing" % "2.9.1-1"

但是我定义了一个SettingKey scalaVersion:

代码语言:javascript
复制
scalaVersion := "2.9.1-1"

如何引用该属性?如果我尝试像这样使用它

代码语言:javascript
复制
libraryDependencies += "org.scala-lang" % "scala-swing" % scalaVersion

编译器报告说它发现了sbt.SettingKeyString,而字符串是预期的。SettingKey上有get(...)evaluate(...)方法,但它们需要传入一些SettingScope参数。

引用此属性的最简单方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-01 23:31:26

您需要告诉系统libraryDependencies现在依赖于scalaVersion

代码语言:javascript
复制
libraryDependencies <+= (scalaVersion) { sv => "org.scala-lang" % "scala-swing" % sv }

(这是我喜欢的格式;它实际上是调用scalaVersion上的apply方法,所以您可以用几种不同的方式编写它,例如scalaVersion("org.scala-lang" % "scala-swing" % _)。)

如果你有多个你想要同时依赖的设置,你可以在它们的元组上应用:

代码语言:javascript
复制
foo <<= (scalaVersion, organization) { (sv, o) => o + " uses Scala " + sv }
票数 5
EN

Stack Overflow用户

发布于 2012-05-03 05:59:33

代码语言:javascript
复制
libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-swing" % _)

<告诉SBT你的设置依赖于另一个设置。

+告诉SBT您想要添加另一个值,而不是替换现有的值(此外,它还指示设置的内容是一个序列,并且您正在向其中添加一个元素)。

语法setting(function)function(setting)相同,function将在适当的上下文中计算的设置作为参数。我甚至不知道如何编写它,而且它会非常冗长,所以快捷方式非常有用。

还可以使用(setting 1, setting 2)((a, b) => ... )对多个设置建立依赖关系。

PS:下面的代码可能也能用,而且有点短,但它在2.10.0版本中已经被弃用了,没有特殊的编译器标志。

代码语言:javascript
复制
libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-swing" %)
票数 3
EN

Stack Overflow用户

发布于 2016-11-08 00:22:40

意识到这是陈旧的--添加一个答案,以防其他人遇到它。只需将.value添加到scalaVersion变量即可获得字符串值:

代码语言:javascript
复制
libraryDependencies += "org.scala-lang" % "scala-swing" % scalaVersion.value
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10399864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档