Я начинаю новый проект в Play Framework с Java. Я проверил файл build.sbt
и не мог понять, откуда пришли имена зависимостей?
Ответ 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
и... не более того.