Как вызвать slick-codegen из sbt в проекте на основе play-fremwork?
Я хочу сгенерировать код для доступа к [postgres
] база данных через slick-codegen
,
Я пытался добавить в build.sbt
val conf = com.typesafe.config.ConfigFactory.parseFile(new File("conf/application.conf")).resolve()
slick <<= slickCodeGenTask
sourceGenerators in Compile <+= slickCodeGenTask
lazy val slick = TaskKey[Seq[File]]("gen-tables")
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = (dir / "slick").getPath
val url = conf.getString("slick.dbs.default.db.url")
val jdbcDriver = conf.getString("slick.dbs.default.db.driver")
val slickDriver = conf.getString("slick.dbs.default.driver").dropRight(1)
val pkg = "test"
val user = conf.getString("slick.dbs.default.db.user")
val password = conf.getString("slick.dbs.default.db.password")
toError(r.run("slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, user, password), s.log))
val fname = outputDir + s"/$pkg/Tables.scala"
Seq(file(fname))
}
и ожидать, что codegen
будет вызываться перед компиляцией, например, в https://github.com/playframework/play-scala-isolated-slick-example
Но эта задача игнорируется, потому что что-то изменилось после добавления (project in file(".")).enablePlugins(PlayScala)
,
Как бегать codegen
через sbt
в этом случае?