Проблема заключалась в том, что я генерировал источники в Scala-коде с помощью утилиты slick-codegen
:
import slick.codegen.SourceCodeGenerator
object Main extends App {
val url = "hidden"
val user = "hidden"
val password = "hidden"
val dbDriver = "com.mysql.jdbc.Driver"
val profile = "slick.jdbc.MySQLProfile"
SourceCodeGenerator.main(
Array(
profile,
dbDriver,
url,
"./kalosgen/target/scala-2.13/src_managed/main",
"com.kalos.gen",
user,
password
)
)
}
Я предполагаю, что вам нужно генерировать источники с помощью задач SBT, чтобы они распознавались SBTкак действительные источники (по крайней мере, для целей межпроектных зависимостей), поэтому я смог преобразовать приведенный выше код в задачу, которая выполняется во время компиляции в build.sbt
:
lazy val gen = project
.settings(
libraryDependencies ++= Seq(
"dependencies"
),
sourceGenerators in Compile += Def.task {
val outDir = (sourceManaged in Compile).value.getPath
(runner in Compile).value.run(
"slick.codegen.SourceCodeGenerator",
(dependencyClasspath in Compile).value.files,
Array(
"slick.jdbc.MySQLProfile",
"com.mysql.jdbc.Driver",
"url",
outDir,
"com.kalos.gen",
"username",
"password"
),
streams.value.log
)
Seq(file(outDir + "/com/kalos/gen/Tables.scala"))
}.taskValue
)
Теперь сгенерированныйTables.scala
появляется, как и ожидалось, в пути к классам, и мой проект компилируется.Если кто-то с большим знанием sbt сможет дать более полное объяснение того, почему это произошло, я с радостью приму это как правильный ответ.