【发布时间】:2015-03-12 15:03:53
【问题描述】:
我已将此添加到 build.sbt
libraryDependencies += "com.typesafe.slick" %% "slick-codegen" % "2.1.0"
lazy val slickGenerate = TaskKey[Seq[File]]("slick code generation")
slickGenerate <<= slickGenerateTask
lazy val slickGenerateTask = {
(sourceManaged in Compile, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val dbName = "dbname"
val userName = "user"
val password = "password"
val url = s"jdbc:mysql://server:port/$dbName"
val jdbcDriver = "com.mysql.jdbc.Driver"
val slickDriver = "scala.slick.driver.MySQLDriver"
val targetPackageName = "models"
val outputDir = (dir / dbName).getPath // place generated files in sbt's managed sources folder
val fname = outputDir + s"/$targetPackageName/Tables.scala"
println(s"\nauto-generating slick source for database schema at $url...")
println(s"output source file file: file://$fname\n")
r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, targetPackageName, userName, password), s.log)
Seq(file(fname))
}
}
任务的代码本身并不是很令人兴奋。它只需要创建一个自动生成的 scala 源文件。问题是,sbt 启动正常,但是这个新任务显然 not 被 sbt 识别,并且不能在 sbt 提示符下运行。我对任务定义的:= 语法也不太满意。现有的文档令人困惑。
如何使这个新任务在 sbt 提示符下可用?
【问题讨论】:
-
那么,我的回答对您有帮助吗,还是还有其他问题?
-
在我的堆栈中实现(并因此验证)这个......我应该接受它以实现赏金吗?
-
我对解决问题更感兴趣,但赏金也会很棒:) - 我通过你打开它以快速解决问题
-
不,我打开它是为了在上下文切换回来后找到一个解决方案,因为让它无限期地损坏是不可思议的。既然我认为它对你有用,让我现在“接受”它:) 再次感谢,这真的很有帮助!