我正在使用sbt [0.13]使用scala [2.10.3]編譯play [2.2]項目。我有用於數據庫遷移的.sql文件和scala文件。該目錄結構如下:如何用scala複製資源+ play + sbt
app
|-> db
|-> migration
|-> V1__init.scala
|-> V2__newTable.sql
當我運行從遊戲控制檯(REPL)編譯,斯卡拉文件(V1__init.scala)被編譯成一個.class並複製到classes文件夾。但.sql文件不會移動。
我試着加入unmanagedResourceDirectories in Compile <++= baseDirectory { dir => Seq(dir/"app/db/migration") ++ Seq(dir/"db/migration") }
但它沒有複製文件。整個塊看起來像:
val main = play.Project(appName, appVersion, appDependencies).settings(
scalaVersion := "2.10.3",
scalacOptions ++= Seq("-feature"), // enable feature warnings
unmanagedResourceDirectories in Compile <++= baseDirectory { dir => Seq(dir/"app/db/migration") ++ Seq(dir/"db/migration") }
)
我也嘗試使用copyResources
,但不能得到它的工作。描述在這裏:http://www.playframework.com/documentation/2.0/SBTSettings
所以沒有人知道我可以如何將sql文件複製到類文件夾?
謝謝!
UPDATE
我IO.copyDirectory(new java.io.File("app/db/migration"), new java.io.File("target/scala-2.10/classes/db/migration"), true)
複製的文件,但目標是硬編碼的,當我更新將改變斯卡拉
你有沒有考慮過使用[內建支持數據庫的演變](http://www.playframework.com/documentation/2.3-SNAP SHOT /演變)? – wingedsubmariner
是的,但它看起來像evolutions不支持運行任意scala代碼,而是它需要.sql文件 – Jon
您可以選擇將sql腳本放入conf目錄,以便它自動在類路徑中。 – Schleichardt