3

scala [2.10.3] を使用して play [2.2] プロジェクトをコンパイルするために sbt [0.13] を使用しています。データベースの移行に使用される .sql ファイルと scala ファイルがあります。ディレクトリ構造は次のようになります。

app
|-> db
     |-> migration
           |-> V1__init.scala
           |-> V2__newTable.sql

Play コンソール (REPL) からコンパイルを実行すると、scala ファイル (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ファイルをclassesフォルダーにコピーする方法を知っている人はいますか?

ありがとう!

アップデート

ファイルをIO.copyDirectory(new java.io.File("app/db/migration"), new java.io.File("target/scala-2.10/classes/db/migration"), true)コピーする必要がありますが、コピー先はハードコーディングされており、scala を更新すると変更されます

4

1 に答える 1

0
  val main = play.Project(appName, appVersion, appDependencies).settings(
    scalaVersion := "2.10.3",
    scalacOptions ++= Seq("-feature"),   // enable feature warnings
    unmanagedResourceDirectories in Compile <+= scalaSource in Compile,
    excludeFilter in unmanagedResources in Compile := "*.scala" || "*.java"
  )

クラスフォルダーの内容は、次の方法で簡単に確認できます。

 sbt clean full-classpath && ls target/scala-2.10/classes/db/migration/
于 2013-10-30T23:46:36.770 に答える