我目前正在使用 Play 框架,并且在启动 H2 数据库浏览器时遇到了问题。背景是这样的:
之前的设置:
sbt
h2-browser
run
切换到IntelliJ:
H2浏览器配置:
添加H2依赖:
build.sbt
文件中,如下所示:
libraryDependencies += "com.h2database" % "h2" % "2.1.214"
lazy val startH2Browser = taskKey[Unit]("Starts the H2 Browser")
startH2Browser := {
println("Starting H2 Browser...")
org.h2.tools.Server.createWebServer("-web", "-webAllowOthers", "-webPort","8082").start()
}
playRunHooks += {
new play.sbt.PlayRunHook {
override def beforeStarted(): Unit = {
startH2Browser.value
}
}
}
遇到错误:
build.sbt:55: error: object h2 is not a member of package org
org.h2.tools.Server.createWebServer("-web", "-webAllowOthers", "-webPort", "8082").start()
^
[error] Type error in expression
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?
H2套餐确认:
有人可以建议我如何在
build.sbt
文件中正确导入 H2 依赖项并解决此问题吗?
您需要将依赖添加到“元项目”中。
SBT 使用代码来构建您的应用程序。该代码本身是由
project/
文件夹中的“元项目”“管理”和构建的。 (郑重声明,这是递归的,元项目可以有它的元元项目等等!)
要在
build.sbt
中提供可用的依赖项,您需要添加一个文件 project/build-dependencies.sbt
(名称不重要,但扩展名重要),其依赖项如下:
libraryDependencies += "com.h2database" % "h2" % "2.1.214"
然后,您可以删除在
build.sbt
中添加的同一行。我猜您已经在 Test
范围内以某种方式对应用程序本身产生了依赖性。