172

我是新手!框架 2.1(java 版本)并且没有使用 scala 的经验。我不明白Build.scala 中的内容%%%含义。我用谷歌搜索了它们,但找不到它们的含义。

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

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

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

4

2 回答 2

201

来自官方文档:

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"
)

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

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

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

于 2013-07-04T03:48:08.803 回答
31

这是 Play 用作构建工具的 SBT 的一部分。具体来说,这是一个导入语句。

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

更多信息在这里

于 2013-07-04T03:46:59.790 回答