Где зависят зависимости javaWs, javaJpa и т.д. От приложения Play/Java?

Я начинаю новый проект в Play Framework с Java. Я проверил файл build.sbt и не мог понять, откуда пришли имена зависимостей?

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  javaJpa
}

Откуда были такие имена, как javaWs, javaJpa и т.д. com? Как проверить версию этих библиотек?

Ответ 1

Зависимости, перечисленные в этом примере, - это те, которые поставляются с вашей установкой игры. Версии соответствуют версии фреймворка Play, которую вы используете.

Play framework является модульным, поэтому вам не нужно использовать все его модули в своем приложении. Вот почему вы должны указать, какие модули вы хотите.

Ответ 2

tl; dr Они определены sbt-plugin (см. javaWs и javaJpa или другие в PlayImport.scala), которые обычно добавляются в сборку project/plugins.sbt.

Используйте инструменты sbt или activator, чтобы узнать, откуда взялись детали сборки. Я предполагаю, что вы используете sbt (но следующее относится к инструментам командной строки activator или play).

Помните, что сборка sbt описана с использованием языка Scala, и все сборки sbt безопасны для типов и скомпилированы с использованием компилятора Scala.

Плагин sbt - это всего лишь набор настроек, которые могут быть применены к проекту, которые также могут определять Scala val, которые соответствуют различным зависимостям, которые вы можете использовать для проекта Play, например. javaJdbc. Вы можете запросить val с помощью consoleProject (который я описал ниже как второй вариант).

sbt shell

Внутри проекта выполните sbt. Пока в оболочке sbt выполните show libraryDependencies, чтобы узнать о зависимостях:

> show libraryDependencies
[info] List(org.scala-lang:scala-library:2.11.1, com.typesafe.play:twirl-api:1.0.2, com.typesafe.play:play:2.3.2, com.typesafe.play:play-test:2.3.2:test, com.typesafe.play:play-docs:2.3.2:docs, com.typesafe.play:play-jdbc:2.3.2, com.typesafe.play:anorm:2.3.2, com.typesafe.play:play-cache:2.3.2, com.typesafe.play:play-ws:2.3.2)

consoleProject

Внутри проекта выполните sbt consoleProject, чтобы узнать о сборке. Я использую Scala -версию проекта Play.

С помощью consoleProject вы вводите Scala REPL с загруженной сборкой. Вы находитесь в Scala REPL, и вы можете запросить различные части сборки, используя Scala.

Используйте макрос eval для оценки настроек сборки внутри consoleProject:

scala> libraryDependencies.eval
res0: Seq[sbt.ModuleID] = List(org.scala-lang:scala-library:2.11.1, com.typesafe.play:twirl-api:1.0.2, com.typesafe.play:play:2.3.2, com.typesafe.play:play-test:2.3.2:test, com.typesafe.play:play-docs:2.3.2:docs, com.typesafe.play:play-jdbc:2.3.2, com.typesafe.play:anorm:2.3.2, com.typesafe.play:play-cache:2.3.2, com.typesafe.play:play-ws:2.3.2)

Вы получаете Seq[sbt.ModuleID], и вы можете делать все, что хотите, со значением, используя Scala.

Так как build.sbt для проекта выглядит следующим образом (я показал только часть с libraryDependencies):

libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  ws
)

когда в consoleProject я могу спросить, что имена указывают на следующее:

scala> jdbc
res0: sbt.ModuleID = com.typesafe.play:play-jdbc:2.3.2

Помните, что они Scala val типа sbt.ModuleID и... не более того.