在代码中无法看到旋转模板(喷涂应用程序)

Raj*_*ish 13 scala sbt spray twirl

我有一些配置问题,我看不到.我已按照最新twirlREADME中提供的说明进行操作,但html根据编译器未定义包.

  1. 我已将sbt-twirl插件包含在project/plugins.sbt文件中

    addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.3")
    
    Run Code Online (Sandbox Code Playgroud)
  2. project/Build.scala我启用了插件

     lazy val root  = Project(id = "proj", base = file("."))
       .enablePlugins(play.twirl.sbt.SbtTwirl)
       .settings(rootSettings: _*)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我已经放置page.scala.htmlsrc/main/twirl子目录(直接或使用com/somethin/cool路径)

现在,如果我试图导入html包(或com.somethin.cool.html),编译器会抱怨它未定义.我可以使用'twirlCompile'命令编译模板,它们在target子目录中正确生成,但它们对主项目是不可见的.

注意:这不是 PlayFramework项目

  • 斯卡拉:2.10.4
  • sbt:0.13.6
  • 旋转:1.0.3

Rei*_*cer 10

我同样在非Play项目中使用Twirl.

如果你把文件放在src/main/com/somethin/cool那里,你应该期望找到生成的类com.somethin.cool.html.page

如果你把文件放在src/main/twirl/那里,你应该期望找到生成的类twirl.html.page

Twirl编译器查看它找到的文件,并在文件的最长公共子路径下面放置"html"(扩展名,可能是"txt"或"json"或...)目录.所以,说你有:

src/main/com/somethin/cool/page1.scala.html
src/main/twirl/page2.scala.html
Run Code Online (Sandbox Code Playgroud)

然后文件的常见最长子路径是src/main(即类路径的根).然后你将获得以下课程:

html.com.somethin/cool/page1
html.twirl.page2
Run Code Online (Sandbox Code Playgroud)

现在,要解决"编译器抱怨它未定义"的部分:你可能意味着几件事情.

如果你的意思是由sbt运行的实际Scala编译器找不到它,我从来没有遇到过这个问题.生成的源和.class文件位于下面的路径中target/scala_2.10/twirl/main.在这种情况下,您可能希望更清楚地了解编译器的抱怨和编译类路径.

但是,如果您的IDE意味着您无法识别源文件,则需要将该目录添加target/scala_2.10/twirl/main为项目使用的源目录之一.

我使用Twirl的另一个问题是IntelliJ IDEA 14 IDE并不真正支持旋转编译器,至少不在Play项目之外.每当我更新Twirl模板时,我总是不得不用sbt而不是IntelliJ IDEA的内置编译器来编译它.JetBrains的人告诉我他们正在努力解决这个问题(我已经记录了他们的问题.)

更新(12/14/14):我记录的JetBrains问题是在这个位置.它的测试用例在github上