3

编译播放路线和视图时如何包含生成的源文件?

sourceManaged我的 Play 2.3 应用程序使用一个插件,它在子目录 (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但它并没有改善。

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

4

1 回答 1

1

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

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

于 2014-07-13T17:50:35.337 回答