在build.sbt中添加代码依赖(H2)

问题描述 投票:0回答:1

在 Play Framework 中启动 H2 数据库浏览器的问题

我目前正在使用 Play 框架,并且在启动 H2 数据库浏览器时遇到了问题。背景是这样的:

  1. 之前的设置:

    • 我曾经使用终端使用以下命令启动H2数据库浏览器:
      sbt
      h2-browser
      run
      
  2. 切换到IntelliJ:

    • 后来我将 Play 应用程序配置为从 IntelliJ 运行,这改进了我的开发工作流程。
  3. H2浏览器配置:

    • 但是,我在 IntelliJ 中启动 H2 数据库浏览器时遇到了挑战。为了解决这个问题,我向 ChatGPT 寻求帮助。
  4. 添加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
          }
        }
      }
      
      
  5. 遇到错误:

    • 不幸的是,当我尝试启动H2浏览器时,遇到了以下错误:
      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?
      
  6. H2套餐确认:

    • 我想确认SBT已成功索引并下载H2包。

有人可以建议我如何在

build.sbt
文件中正确导入 H2 依赖项并解决此问题吗?

scala intellij-idea sbt h2
1个回答
0
投票

您需要将依赖添加到“元项目”中。

SBT 使用代码来构建您的应用程序。该代码本身是由

project/
文件夹中的“元项目”“管理”和构建的。 (郑重声明,这是递归的,元项目可以有它的元元项目等等!)

要在

build.sbt
中提供可用的依赖项,您需要添加一个文件
project/build-dependencies.sbt
(名称不重要,但扩展名重要),其依赖项如下:

libraryDependencies += "com.h2database" % "h2" % "2.1.214"

然后,您可以删除在

build.sbt
中添加的同一行。我猜您已经在
Test
范围内以某种方式对应用程序本身产生了依赖性。

© www.soinside.com 2019 - 2024. All rights reserved.