Zaczynam nowy projekt w Play Framework z Javą. Sprawdziłem build.sbt
plik i nie możesz zrozumieć, skąd pochodzą nazwy zależności?
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
javaJpa
}
Skąd takie nazwy? javaWs
, javaJpa
, itp. com z? Jak sprawdzić wersję tych bibliotek?
Odpowiedzi:
2 dla odpowiedzi № 1Zależności wymienione w tym przykładzie to te, które są dostarczane wraz z instalacją gry. Wersje odpowiadają używanej wersji środowiska Play.
Play framework jest modułowy, więc nie musisz używać wszystkich jego modułów w swojej aplikacji. Dlatego musisz określić, które moduły chcesz.
8 dla odpowiedzi № 2
tl; dr Są zdefiniowane przez sbt-plugin
(widzieć javaWs i javaJpa lub inni w PlayImport.scala) jest to zazwyczaj dodano do kompilacji project/plugins.sbt
.
Posługiwać się sbt
lub activator
narzędzia do nauki, skąd pochodzą części kompilacji. Zakładam, że używasz sbt
(ale dotyczy to: activator
lub play
także narzędzia wiersza poleceń).
Pamiętaj, że kompilacja sbt jest opisywana przy użyciu języka Scala, a wszystkie kompilacje sbt są bezpieczne pod względem typu i kompilowane przy użyciu kompilatora Scala.
Wtyczka SBT to tylko kilka ustawień, które można zastosować do projektu, które mogą również definiować Scalę val
które odpowiadają różnym zależnościom, których możesz użyć w projekcie Play, np. javaJdbc
. Możesz zapytać o val
s za pomocą consoleProject
(który opisałem poniżej jako drugą opcję).
sbt shell
Wewnątrz projektu wykonaj sbt
. Podczas pracy w powłoce sbt wykonaj polecenie show libraryDependencies
aby dowiedzieć się o zależnościach:
> 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
Wewnątrz projektu wykonaj sbt consoleProject
aby dowiedzieć się o kompilacji. Używam wersji Play projektu Scala.
Z consoleProject
wprowadzasz Scala REPL z załadowaną wersją. Jesteś w Scala REPL i możesz sprawdzać różne części kompilacji za pomocą Scali.
Posługiwać się eval
makro do oceny ustawień kompilacji w środku 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)
Dostajesz Seq[sbt.ModuleID]
i możesz zrobić co chcesz z wartością za pomocą Scali.
Od build.sbt
ponieważ projekt wygląda następująco (pokazałem tylko część z libraryDependencies
):
libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
)
kiedy w consoleProject
Mogę zapytać, co oznaczają nazwy w następujący sposób:
scala> jdbc
res0: sbt.ModuleID = com.typesafe.play:play-jdbc:2.3.2
Pamiętajcie, oni są Scala val
s z sbt.ModuleID
typ i ... nic więcej.