私はsbtタスクに取り組んでいます。アプリケーションクラスや依存関係の一部にアクセスしたいと思います。 (具体的には、scalaqueryを使用してデータベースDDLを生成したい)sbtタスククラスパス
これらの依存関係をタスクに追加する方法はありますか、それともプラグインを作成する必要がありますか?
object ApplicationBuild extends Build {
val appName = "test"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
"org.scalaquery" % "scalaquery_2.9.0-1" % "0.9.5")
val ddl = TaskKey[Unit]("ddl", "Generates the ddl in the evolutions folder")
val ddlTask = ddl <<= (baseDirectory, fullClasspath in Runtime) map { (bs, cp) =>
val f = bs/"conf/evolutions/default"
// Figures out the last sql number used
def nextFileNumber = { ... }
//writes to file
def printToFile(f: java.io.File)(op: java.io.PrintWriter => Unit) { ...}
def createDdl = {
import org.scalaquery.session._
import org.scalaquery.ql._
import org.scalaquery.ql.TypeMapper._
import org.scalaquery.ql.extended.H2Driver.Implicit._
import org.scalaquery.ql.extended.{ ExtendedTable => Table }
import models._
printToFile(new java.io.File(nextFileNumber, f))(p => {
models.Table.ddl.createStatements.foreach(p.println)
});
}
createDdl
None
}
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
ddlTask)
}
私が手にエラーがあなたのビルドはビルド依存関係として依存ScalaQueryと他のすべてを追加する必要があり、事前
依存関係を 'project/plugins.sbt'に追加してみてください。 – leedm777