在我的Play
项目中,我注意到build.properties
有sbt
版本addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12")
和build.properties
有sbt.version=0.13.15
。
1)为什么有两个条目? 2)他们之间有什么区别3)他们的版本应该不同吗?
SBT本身和SBT插件之间存在差异。 Play Framework是一个SBT plugin。 version of SBT在project/build.properties
中指定:
sbt.version=0.13.15
而version of Play SBT plugin在project/plugins.sbt
中指定:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12")
Scala Play SBT插件(PlayScala
)在build.sbt
中启用,如下所示:
lazy val root = (project in file(".")).enablePlugins(PlayScala)
SBT插件通过其他有用的任务,命令,设置和依赖项丰富了构建定义。以下是Play SBT plugin的一些例子:
object PlayKeys {
val playDefaultPort = SettingKey[Int]("playDefaultPort", "The default port that Play runs on")
val playDefaultAddress = SettingKey[String]("playDefaultAddress", "The default address that Play runs on")
val playRunHooks = TaskKey[Seq[PlayRunHook]]("playRunHooks", "Hooks to run additional behaviour before/after the run task")
...
因此,例如,要更改Play运行的默认端口,我们可以在build.sbt
中定义:
PlayKeys.playDefaultPort := 9009
请注意,升级SBT版本时,我们需要确保它与相应的Play SBT插件兼容。 For example,要使用Play with SBT 1,我们需要更新Play sbt-plugin
到2.6.6
。
SBT插件最佳实践artifact naming convention鼓励以下命名方案:
sbt-$projectname
例如,sbt-scoverage
,sbt-buildinfo
,sbt-release
,sbt-assembly
,然而Play将其命名为sbt-plugin
,这可能会令人困惑。