首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置SBT依赖项时,%和%%运算符的作用是什么?

设置SBT依赖项时,%和%%运算符的作用是什么?
EN

Stack Overflow用户
提问于 2011-05-16 06:55:40
回答 3查看 881关注 0票数 15

在Lift Web Framework中,简单构建工具的依赖项是在LiftProject.scala中指定的。该文件包含以下代码:

代码语言:javascript
复制
  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定义%或%%。这里发生了什么事?

EN

回答 3

Stack Overflow用户

发布于 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类层次结构中定义的一些进行实际转换的隐式方法在作用域中时,应该调用这些方法。

致以最好的问候,弗拉基米尔

票数 14
EN

Stack Overflow用户

发布于 2011-05-16 07:03:56

它们控制特定版本的Scala的抓取构建。

%获取与您所描述的完全相同的依赖项。

%%将Scala版本添加到资源名称中,以获取本地Scala构建的版本。Extra useful.if你可以为Scala的几个版本交叉构建。

票数 8
EN

Stack Overflow用户

发布于 2016-07-04 02:43:15

从2011年开始,文档变得更完整了:"Library dependencies “。

来自Divan Visagie的文章"Sbt heiroglyphs and multi-projects explained“也详细介绍了这些sbt操作符:

%%%有点棘手:它们在序列中定义每个库的in和版本,但可以肯定地说:

代码语言:javascript
复制
"org.scala-tools" % "scala-stm_2.11.1" % "0.3"

等同于

代码语言:javascript
复制
"org.scala-tools" %% "scala-stm" % "0.3"

有效地说,额外的%%意味着它可以确定你使用的是哪个

版本。

该文档补充道:

Scala的想法是为多个

版本编译许多依赖项,您希望获得与您的项目匹配的依赖项,以确保二进制兼容性。

在实践中的复杂性是,依赖关系通常会与略有不同的Scala版本一起工作;但%%对此并不明智。

因此,如果该依赖项在2.10.1中可用,但您使用的是scalaVersion := "2.10.4",那么即使2.10.1依赖项可以工作,您也不能使用%%

如果%%停止工作,只需查看依赖项真正为哪些版本构建,并对您认为可以工作的版本进行硬编码(假设有一个版本)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6011796

复制
相关文章

相似问题

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