在Lift Web Framework中,简单构建工具的依赖项是在LiftProject.scala中指定的。该文件包含以下代码:
override def libraryDependencies = Set(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile->default",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile->default",
"org.mortbay.jetty" % "jetty" % "6.1.22" % "test->default",
"junit" % "junit" % "4.5" % "test->default",
"org.scala-tools.testing" %% "specs" % "1.6.6" % "test->default",
"org.scala-lang" % "scala-compiler" % "2.8.1" % "test->default",
"org.apache.tomcat" % "tomcat-juli" % "7.0.0" % "test->default",
"com.h2database" % "h2" % "1.2.138"
) ++ super.libraryDependencies%和%%运算符在这里做什么?如果我将这段代码粘贴到scala解释器中,它就会出错,并且没有为String或RichString定义%或%%。这里发生了什么事?
发布于 2011-05-16 07:15:01
这些函数之间的不同之处在于,当SBT解析依赖项时,%%会考虑Scala版本,例如,net/liftweb/lift-webkit_2.8.1/2.3/lift-webkit_2.8.1-2.3.jar将从repo下载。
关于编译错误-当在SBT类层次结构中定义的一些进行实际转换的隐式方法在作用域中时,应该调用这些方法。
致以最好的问候,弗拉基米尔
发布于 2011-05-16 07:03:56
它们控制特定版本的Scala的抓取构建。
%获取与您所描述的完全相同的依赖项。
%%将Scala版本添加到资源名称中,以获取本地Scala构建的版本。Extra useful.if你可以为Scala的几个版本交叉构建。
发布于 2016-07-04 02:43:15
从2011年开始,文档变得更完整了:"Library dependencies “。
来自Divan Visagie的文章"Sbt heiroglyphs and multi-projects explained“也详细介绍了这些sbt操作符:
%和%%有点棘手:它们在序列中定义每个库的in和版本,但可以肯定地说:
"org.scala-tools" % "scala-stm_2.11.1" % "0.3"等同于
"org.scala-tools" %% "scala-stm" % "0.3"有效地说,额外的%%意味着它可以确定你使用的是哪个
版本。
该文档补充道:
Scala的想法是为多个
版本编译许多依赖项,您希望获得与您的项目匹配的依赖项,以确保二进制兼容性。
在实践中的复杂性是,依赖关系通常会与略有不同的Scala版本一起工作;但%%对此并不明智。
因此,如果该依赖项在2.10.1中可用,但您使用的是scalaVersion := "2.10.4",那么即使2.10.1依赖项可以工作,您也不能使用%%。
如果%%停止工作,只需查看依赖项真正为哪些版本构建,并对您认为可以工作的版本进行硬编码(假设有一个版本)。
https://stackoverflow.com/questions/6011796
复制相似问题