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

时间:2013-07-04 03:37:07

标签: 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"

为什么第一行使用单个%符号而第二行使用两个百分号%%? 它们用于什么?

2 个答案:

答案 0 :(得分:154)

来自官方文件:

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

  

使用%%

获取正确的Scala版本      

如果您使用groupID %% artifactID % revision而不是groupID % artifactID % revision(差异是之后的双%%   groupID),SBT会将您项目的Scala版本添加到工件中   名称。这只是一条捷径。

     

你可以在没有%%的情况下写下这个:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)
     

假设您的版本scalaVersion2.9.1,则以下内容完全相同:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

如上所示,如果您使用%%,则无需指定 版本

答案 1 :(得分:22)

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

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

更多信息here