如何在编译Play路线和视图时包含生成的源文件?
My Play 2.3应用程序使用一个插件,在sourceManaged
子目录下生成源文件(target / scala-2.11 / src_managed / main / subdir)。这些源文件包括我的路径文件和视图中引用的控制器和模型。但是当我编译我的应用程序时,我得到这样的错误:
[error] myapp/conf/routes:14: object Contacts is not a member of package controllers [error] GET /contacts controllers.Contacts.blank()
和此:
[error] myapp/app/views/contact/form.scala.html:1: not found: type Contact [error] @(contactForm: Form[Contact]) [error] ^
因为controllers/Contacts.java
和models/Contact.java
位于sourceManaged下。
我已尝试在build.sbt中手动将相应的托管来源子网站添加到sourceDirectory in Compile
和javaSource in Compile
,但这并没有改进。
我考虑过将托管源子目录设为子项目,然后使用aggreate()
,但它没有必要的build.sbt或项目文件 - 它只有Java源代码。似乎将托管源目录放入子项目可能是不合适的。我应该重新考虑一下吗?
答案 0 :(得分:1)
首先确保插件可以通过Play项目添加到sourceGenerators in Compile
。您可以在sbt文档中找到如何执行此操作here。我在我编写的插件中也有an example,但请注意它使用了0.12.x语法。
完成后,请确保您的某个Play项目构建文件添加了设置。这就像将插件中用于设置的名称添加到构建文件一样简单,就像我的插件显示的this example一样。