我正在使用Java在Play Framework中开始一个新项目。我检查了build.sbt
文件,无法理解依赖项名称的来源?
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
javaJpa
}
这些名称如javaWs
,javaJpa
等来自何处?如何检查这些库的版本?
答案 0 :(得分:8)
tl; dr 他们由sbt-plugin
(请参阅javaWs和javaJpa或PlayImport.scala中的其他人)定义了&#{ 39; s 通常添加到project/plugins.sbt
中的构建中。
使用sbt
或activator
工具了解构建部件的来源。我假设您使用sbt
(但以下内容也适用于activator
或play
命令行工具。
请注意,使用Scala语言描述了sbt构建,所有sbt构建都是类型安全的,并使用Scala编译器进行编译。
sbt插件只是一组可以应用于项目的设置,也可以定义Scala val
,它们对应于可用于Play项目的不同依赖项,例如: javaJdbc
。您可以使用val
查询consoleProject
(我在下面将其描述为第二个选项)。
在项目内部,执行sbt
。在sbt shell中,执行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)
在项目内部,执行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
请记住,他们是val
类型的Scala sbt.ModuleID
并且......仅此而已。
答案 1 :(得分:2)
此示例中列出的依赖项是随播放安装一起提供的依赖项。版本与您正在使用的Play框架版本相匹配。
Play框架是模块化的,因此您不必在应用程序中使用其所有模块。这就是你必须指定你想要的模块的原因。