0

我正在尝试在我的 sbt slickCodeGen 任务中使用自定义配置文件,但我一直遇到 ClassNotFoundException。

sbt 任务如下所示:

lazy val slickCodeGen = taskKey[Unit]("Slick: generate Table")

slickCodeGen := {    
    val dir = (sourceDirectory in Compile).value    
    val cp = (dependencyClasspath in Compile).value
    val s = streams.value   
    val outputDir = (dir / "scala").getPath    
    val username = "dev"
    val password = ""    
    val url = "jdbc:postgresql://localhost/db"   
    val jdbcDriver = "org.postgresql.Driver" 
    val profile = "org.samidarko.models.PostgresProfile" 
    val pkg = "org.samidarko.models" 
    val r = (runner in Compile).value   
    r.run("slick.codegen.SourceCodeGenerator", cp.files, Array(profile, jdbcDriver, url, outputDir, pkg, username, password), s.log)  
}

我的自定义配置文件org.samidarko.models.PostgresProfile看起来很像这样

基本上,每次我运行sbt slickCodeGen我收到的命令

[错误] (run-main-0) java.lang.ClassNotFoundException: org.samidarko.models.PostgresProfile$

[错误] java.lang.ClassNotFoundException: org.samidarko.models.PostgresProfile$

...

我浏览了 sbt 文档,但我不知道如何将类路径添加到我的源代码中以完成此任务。任何帮助,将不胜感激。

4

2 回答 2

0

尝试添加project/PostgresProfile.scala如下所示:

package org.samidarko.models.PostgresProfile

// HACK to make sbt think this class is available when referenced in build.sbt
object PostgresProfile extends slick.jdbc.PostgresProfile
于 2021-03-16T17:10:18.713 回答
0

而不是dependencyClasspath in Compile使用fullClasspath in Compile参见https://www.scala-sbt.org/1.x/docs/Howto-Classpaths.html

于 2020-09-08T12:31:41.193 回答