【问题标题】:How to include generated source files when Play compiles?Play 编译时如何包含生成的源文件?
【发布时间】:2014-08-26 00:02:06
【问题描述】:

如何在我的 Play 路由和视图编译时包含生成的源文件?

我的 Play 2.3 应用程序使用一个插件,该插件在 sourceManaged 子目录 (target/scala-2.11/src_managed/main/subdir) 下生成源文件。这些源文件包括在我的路由文件和视图中引用的控制器和模型。但是当我编译我的应用程序时,我得到了这样的错误:

[错误] myapp/conf/routes:14: 对象联系人不是包控制器的成员 [错误] GET /contacts controllers.Contacts.blank()

还有这个:

[错误] myapp/app/views/contact/form.scala.html:1: not found: type Contact [错误] @(contactForm: Form[Contact]) [错误] ^

因为controllers/Contacts.javamodels/Contact.java 位于sourceManaged 下。

我尝试在 build.sbt 中手动将适当的托管源子目录添加到 sourceDirectory in CompilejavaSource in Compile,但并没有改善。

我考虑过将托管源子目录设为子项目,然后使用aggreate(),但它没有必要的 build.sbt 或项目文件——它只有 Java 源。似乎将托管源目录变成子项目可能是不合适的。我应该重新考虑一下吗?

【问题讨论】:

  • 这是一个我们可以看看的开源项目吗?

标签: scala playframework sbt playframework-2.3


【解决方案1】:

首先确保插件可以通过您的 Play 项目添加到 sourceGenerators in Compile。您可以在 sbt 文档中找到如何执行此操作 here。我写的插件中也有an example,但请注意它使用0.12.x 语法。

完成此操作后,请确保您的 Play 项目构建文件之一添加了设置。这就像将您用于插件设置的名称添加到构建文件中一样简单,例如我的插件显示的this example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2012-05-04
    • 2019-06-14
    相关资源
    最近更新 更多