在我的Play
项目中,我注意到build.properties
具有sbt
版本addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12")
,而build.properties
具有sbt.version=0.13.15
。
1)为什么会有两个肠子? 2)它们之间有什么区别 3)它们的版本是否应该不同?
答案 0 :(得分:0)
SBT专有和SBT插件之间有区别。 Play Framework是SBT plugin。 version of SBT在project/build.properties
中指定:
sbt.version=0.13.15
在project/plugins.sbt
中指定了version of Play SBT plugin:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12")
在build.sbt
中启用了Scala Play SBT插件(PlayScala
),如下所示:
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与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
,这可能会引起混淆。