这是一个简单的scala项目。我在 plugins.sbt 中添加了
sbt-liquibase
。我的 liquibase 变更日志采用 yaml 格式。根据https://docs.liquibase.com/concepts/changelogs/yaml-format.html,snakeyaml
应该用于yaml格式的变更日志。因为,我是 sbt-liquibase 插件,我找不到应该在哪里声明 sbt-liquibase 插件的依赖关系。
//plugins.sbt
addSbtPlugin("com.permutive" % "sbt-liquibase" % "1.2.0")
build.sbt 是
//build.sbt
lazy val root = (project in file("."))
.settings(
name := "diy-quill",
libraryDependencies ++=Seq(
sqlite,
),
liquibaseChangelog := java.nio.file.Path.of("src/main/resources/db/changelog.yaml").toFile(),
liquibaseDriver := "org.sqlite.JDBC",
liquibaseUrl := "jdbc:sqlite:./target/shopkart.db",
liquibaseUsername := "",
liquibasePassword := ""
)
.enablePlugins(ScalafmtPlugin)
.enablePlugins(SbtLiquibase)
由于
sbt-liquibase
找不到yaml解析器,我在执行任务时收到以下错误liquibaseUpdate
.
sbt:hello-world> liquibaseUpdate
[error] stack trace is suppressed; run last liquibaseUpdate for the full output
[error] (liquibaseUpdate) liquibase.exception.UnknownChangelogFormatException: Cannot find parser that supports /home/dx/dev/play/scala-projects/diy-quill/src/main/resources/db/changelog.yaml
[error] Total time: 0 s, completed Mar 2, 2023, 4:24:04 PM
应该在哪里以及如何声明 sbt-liquibase 插件的依赖关系?
应用程序不需要snakeyaml.
但是,当liquibase changelog以xml格式表示时,不需要额外的依赖,不会出现这样的错误。
找到一个 stackoverflow 参考Sbt Plugin Add Dependency to project/build.sbt 推荐使用
compilerPlugin
。即使那样也无济于事。
在 plugins.sbt 中添加
snakeyaml
解决了这个问题。这是 project/plugins.sbt 看起来像使用 yaml 格式的 sbt-liquibase 的变更日志。
addSbtPlugin("com.permutive" % "sbt-liquibase" % "1.2.0")
libraryDependencies ++= Seq(
"org.yaml" % "snakeyaml" % "1.33"
)