Raj*_*ish 13 scala sbt spray twirl
我有一些配置问题,我看不到.我已按照最新twirl
README中提供的说明进行操作,但html
根据编译器未定义包.
我已将sbt-twirl
插件包含在project/plugins.sbt
文件中
addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.3")
Run Code Online (Sandbox Code Playgroud)在project/Build.scala
我启用了插件
lazy val root = Project(id = "proj", base = file("."))
.enablePlugins(play.twirl.sbt.SbtTwirl)
.settings(rootSettings: _*)
Run Code Online (Sandbox Code Playgroud)我已经放置page.scala.html
在src/main/twirl
子目录(直接或使用com/somethin/cool
路径)
现在,如果我试图导入html
包(或com.somethin.cool.html
),编译器会抱怨它未定义.我可以使用'twirlCompile'命令编译模板,它们在target
子目录中正确生成,但它们对主项目是不可见的.
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上