Почему две разные версии sbt в проекте - PullRequest
0 голосов
/ 16 сентября 2018

В моем проекте 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 голосов
/ 16 сентября 2018

Существует разница между собственно SBT и плагином SBT. Play Framework - это плагин SBT . Версия SBT указана в project/build.properties:

sbt.version=0.13.15

, в то время как версия плагина Play SBT указана в 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. Например, , чтобы использовать Play с SBT 1, нам нужно обновить Play sbt-plugin до 2.6.6.

Лучшая практика плагина SBT Соглашение об именовании артефактов поддерживает следующую схему именования:

sbt-$projectname

Например, sbt-scoverage, sbt-buildinfo, sbt-release, sbt-assembly, однако Play назвал его sbt-plugin, что, вероятно, может сбить с толку.

...