1

私は現在、Play!を使用してWebサイトを構築しています。2.0(2.1-RC2)フレームワークとScala。AngularJSで使用されるビューを定義する「静的」htmlファイルがたくさんあります(Jadeを使用したいのですが、JadeをPlay/Scalaでプリコンパイルする方法が見つからないようです。 Jadeテンプレートは通常静的ではないため、意味があります)。

開発者としての私にとって最も理にかなっているのは、私のプロジェクトの構造は、これらのhtmlファイルを私のコーヒーと同じ場所に置き、ファイルを少なくすることです(/ Assets / *)。Playがそれらをパブリックフォルダに配置することを望んでいることは理解していますが、それには苦労しています。私にとって、パブリックフォルダはライブラリと生成されたファイル用である必要があります。

私がやりたいのは、どういうわけかPlayにビルドの一部として/ Assets/views内のhtmlファイルを/public/viewsにコピーさせることです。どうすればこれを達成できますか?

よろしくお願いします!

4

2 に答える 2

0

静的htmlファイルをpublic/htmlsの下に置くと、次の方法でテンプレート内の単一ファイルのパスを取得できます。

@routes.Assets.at("htmls/yourfile.html")

于 2013-01-14T09:32:41.737 に答える
0

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

于 2013-01-14T21:28:16.767 に答える