Build.scala,%和%%符号含义

Fra*_*nco 144 scala sbt playframework-2.1

我是Play的新手!Framework 2.1(java版)并没有使用scala的经验.我不明白Build.scala 中的内容%%%含义.我用Google搜索了他们但却找不到他们的意思.

在我的Build.scala文件中,我有:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"
Run Code Online (Sandbox Code Playgroud)

为什么第一行使用单个%符号而第二行使用2%符号%%?它们适用于什么?

Min*_*gyu 166

从官方文档:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

获得正确的Scala版本 %%

如果你使用groupID %% artifactID % revision的不是groupID % artifactID % revision(不同的是双%%groupID),SBT将增加项目的斯卡拉版本的工件名称.这只是一个捷径.

你可以写这个没有%%:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)
Run Code Online (Sandbox Code Playgroud)

假设scalaVersion你的构建是2.9.1,以下是相同的:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)
Run Code Online (Sandbox Code Playgroud)

如上所示,如果使用%%,则不必指定版本.

  • @PeterPerháč你不能将`%%`用于不包含Scala版本的工件(例如纯Java库). (9认同)
  • 不要以为我的附加问题需要提出单独的SO问题:我什么时候不想使用%%?对我来说,看起来它"更好",应该始终使用.... (4认同)
  • "您的项目的Scala版本"表示SettingKey`scalaVersion`的值. (2认同)

Bor*_*der 23

这是SBT的一部分,该游戏用作构建工具.具体来说,这是一个import语句.

百分比符号%实际上是用于构建依赖关系的方法.双百分号%%注入当前的Scala版本 - 这允许您为正在运行的scala版本获取正确的库.这是为了避免在更新Scala时更改构建文件.

更多信息在这里