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

我是新玩的! Framework 2.1(Java版本),并没有与Scala的经验。 我不明白在Build.scala中%%%意思是什么和什么。 我search了他们,但找不到他们的意思。

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

 "org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final", "com.typesafe" %% "play-plugins-mailer" % "2.1" 

为什么第一行使用单个%符号,第二行使用两个百分号%% ? 他们是为了什么?

从官方文档:

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

使用%%获得正确的Scala版本

如果使用groupID %% artifactID % revision而不是groupID % artifactID % revision (不同之处在于%%后的double %% ),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" ) 

正如你上面看到的,如果你使用%% ,你不必指定版本。

这是作为构build工具使用的SBT的一部分。 具体来说这是一个重要的声明。

百分比符号%实际上是一种用于构build依赖关系的方法。 双百分号%%注入当前的Scala版本 – 这可以让你得到正在运行的scala版本的正确库。 这是为了避免在更新Scala时必须更改构build文件。

更多信息在这里