【问题标题】:Twirl templates cannot be seen in the code (spray application)代码中看不到旋转模板(喷涂应用)
【发布时间】:2014-11-19 01:20:38
【问题描述】:

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

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

    addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.3")
    
  2. project/Build.scala 我已经启用了插件

     lazy val root  = Project(id = "proj", base = file("."))
       .enablePlugins(play.twirl.sbt.SbtTwirl)
       .settings(rootSettings: _*)
    
  3. 我已将page.scala.html 放在src/main/twirl 子目录中(直接或使用com/somethin/cool 路径)

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

注意:这不是 PlayFramework 项目

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

【问题讨论】:

    标签: scala sbt spray twirl


    【解决方案1】:

    我在非 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
    

    那么文件的公共最长子路径是 src/main (即类路径的根)。然后,您将在以下位置获得这些课程:

    html.com.somethin/cool/page1
    html.twirl.page2
    

    现在,要解决“编译器抱怨它未定义”部分:您可能意味着几件事。

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

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

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

    更新(2014 年 12 月 14 日):我记录的 JetBrains 问题是 at this location。它的测试用例是here on github

    【讨论】:

      【解决方案2】:

      在 sbt 中显式添加非托管源目录可能会有所帮助。

      unmanagedSourceDirectories in Compile += baseDirectory.value / "target" / "yourTwirlGeneratedSources" 
      

      但是,这当然不是必需的!我想在运行 compile 时,对 twirlCompile 的依赖也不会得到解决,并且不会从您的 twirl 文件中生成更新的源代码?

      您是否尝试过使用之前的 twirl + sbt 组合?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多