Scalatraテストプロジェクトでこれを行う方法を理解できたので、次のコードを変更してPlayのフォルダー構造に適合させる必要があります。ただし、機能します。これは、新しいsbt「プラグイン」を定義し、コンパイル時に/ src / main/html内のすべてのファイルを/resource_managed/ main/viewsにコピーします。
うまくいけば、誰かがこれが役に立つと思うでしょう!
import sbt._
import Keys._
import java.io.File
import org.apache.commons.io.FileUtils._
object CopyViews extends sbt.Plugin {
import CopyViewsKeys._
object CopyViewsKeys {
val copy = TaskKey[Unit]("copy-views", "Copy views into resourceManaged.")
}
private def copyViewsTask = (streams, sourceDirectory in copy, resourceManaged in copy) map {
(out, source, destination) =>
out.log.info("Copying Views to " + destination.getAbsolutePath())
copyDirectory(source, destination)
}
def copyViewsSettingsIn(c: Configuration): Seq[Setting[_]] =
inConfig(c)(Seq(
sourceDirectory in copy <<= (sourceDirectory in c) { _ / "html" },
resourceManaged in copy <<= (resourceManaged in c) { _ / "views" },
copy <<= copyViewsTask
)) ++ Seq(
compile in c <<= (compile in c).dependsOn(copy in c)
)
def copyViewsSettings: Seq[Setting[_]] =
copyViewsSettingsIn(Compile)
}
object ModFallBuild extends Build {
import CopyViews._ // Import in our Build so we can use in our build.sbt file.
lazy val modfall = Project("modfall", file("."))
}
これで、build.sbtファイルに追加できます
seq(copyViewsSettings:_*)
そして、ビューはコンパイル時にコピーされるようになりました:)
これを行うにはおそらくもっと簡単な方法があると思いますが、これは私にとってはうまくいき、sbtプラグインの構築について理解することができました!:P