Точно так же я использую Twirl в проекте, отличном от Play.
Если вы поместили файл в 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
Теперь, чтобы обратиться к части «компилятор жалуется, что он не определен»: вы можете иметь в виду несколько вещей.
Если вы имеете в виду, что настоящий компилятор Scala, запускаемый sbt, не находит его, у меня никогда не было с этим проблем. Сгенерированные исходные файлы и файлы .class находятся в пути под target/scala_2.10/twirl/main
. В этом случае вы можете захотеть получить более четкое представление о жалобе компилятора и вашем пути к классам компиляции.
Но если вы имеете в виду, что ваша среда IDE не распознает исходный файл, вам необходимо добавить каталог target/scala_2.10/twirl/main
в качестве одного из исходных каталогов, используемых вашим проектом.
Еще одна проблема, связанная с использованием Twirl, заключается в том, что IDE IntelliJ IDEA 14 на самом деле не поддерживает компилятор twirl, по крайней мере, вне проекта Play. Всякий раз, когда я обновляю шаблон Twirl, мне неизменно приходится компилировать его с помощью sbt вместо встроенного компилятора IntelliJ IDEA. Сотрудники JetBrains говорят мне, что они работают над исправлением этой проблемы (я зарегистрировал у них проблему по этому поводу).
ОБНОВЛЕНИЕ (14.12.14): проблема JetBrains, которую я зарегистрировал, находится здесь. Тестовый пример для этого находится здесь, на github
person
Reid Spencer
schedule
24.11.2014