为什么项目中有两个不同版本的sbt

时间:2018-09-16 07:49:41

标签: sbt playframework-2.6

在我的Play项目中,我注意到build.properties具有sbt版本addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12") ,而build.properties具有sbt.version=0.13.15

1)为什么会有两个肠子? 2)它们之间有什么区别 3)它们的版本是否应该不同?

1 个答案:

答案 0 :(得分:0)

SBT专有和SBT插件之间有区别。 Play Framework是SBT pluginversion of SBTproject/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-scoveragesbt-buildinfosbt-releasesbt-assembly,但是Play将其命名为sbt-plugin,这可能会引起混淆。