Как включить сгенерированные исходные файлы при компиляции Play?

Как я могу включить сгенерированные исходные файлы, когда мои маршруты и представления Play скомпилированы?

Приложение My Play 2.3 использует плагин, который генерирует исходные файлы под sourceManaged subdir (target/scala-2.11/src_managed/main/subdir). Эти исходные файлы включают контроллеры и модели, на которые ссылаются мои файлы маршрутов и представления. Но когда я компилирую свое приложение, я получаю такие ошибки:

[ошибка] myapp/conf/ маршруты:14: объект Контакты не является членом контроллеров пакетов
[ошибка] GET     / контакты контроллеров.Contacts.blank()

и это:

[ошибка] myapp/app/views/contact/form.scala.html:1: не найдено: введите контакт
[ошибка] @(contactForm: Форма [Контакт])
[ошибка] ^

Так как controllers/Contacts.java а также models/Contact.java проживать в SourceManaged.

Я попытался вручную добавить соответствующий подкаталог управляемых источников в sourceDirectory in Compile а также javaSource in Compile в моем build.sbt, но это не улучшило вещи.

Я подумал о том, чтобы сделать управляемый источник subdir подпроектом, а затем использовать aggreate(), но у него нет необходимых build.sbt или файлов проекта - у него есть только исходные коды Java. И казалось, что превращение каталога управляемого источника в подпроект может быть неуместным. Должен ли я пересмотреть это?

1 ответ

Решение

Сначала убедитесь, что у плагина есть способ быть добавленным в sourceGenerators in Compile вашим проектом Play. Вы можете найти, как это сделать, здесь, в документации по sbt. У меня также есть пример в плагине, который я написал, но обратите внимание, что он использует синтаксис 0.12.x.

Как только вы это сделаете, убедитесь, что один из ваших файлов сборки проекта Play добавляет настройки. Это будет так же просто, как добавить имя, которое вы использовали для настроек в плагине, в файл сборки, как показано в примере моего плагина.

Другие вопросы по тегам