Где я должен разместить свои скомпилированные (через Rhino) классы Javascript, чтобы они были включены в путь к классам во время компиляции и включены в сгенерированный пакет dist
?
Play Framework 2.1-RC1 + SBT игнорирует их, иногда во время компиляции, а иногда при создании дистрибутивов.
1. Размещение сгенерированных файлов в classes/
или classes_managed/
Если я размещу сгенерированные файлы .class здесь или здесь:target/scala-2.10/classes/
target/scala-2.10/classes_managed/
Тогда compile
и run
работают нормально. Но какой-то странный шаг компиляции (что?!) во время stage
и dist
не проходит: он не находит скомпилированные классы.
2. Размещение классов в специальном каталоге
Если я размещу сгенерированные файлы .class здесь: target/scala-2.10/compiledjs-classes/
И добавьте запись classpath в конфигурацию SBT:
object ApplicationBuild extends Build {
...
def mainSettings = List(
...,
unmanagedClasspath in Compile <+= (baseDirectory) map { bd =>
Attributed.blank(bd / "target/scala-2.10/compiledjs-classes")
},
...)
Тогда compile
, run
, stage
и dist
работают нормально. Тем не мение! Когда я распаковываю и запускаю сгенерированный файл .zip (сгенерированный с помощью dist
), приложение завершается сбоем во время выполнения, поскольку скомпилированные классы Javascript не включены в .zip.
3. Размещение классов в папке lib/
Тогда compile
не найдет файлы классов. (Я поместил, например, класс compiledjs.HtmlSanitizerJs
в lib/compiledjs/HtmlSanitizerJs.class
.)
Что я должен сделать? Я имею в виду, что работает и что является передовым опытом?
В любом случае, прямо сейчас я копирую сгенерированные классы в обаtarget/scala-2.10/compiledjs-classes/
(чтобы компиляция работала) иtarget/scala-2.10/classes/
(чтобы они включались в сгенерированный .zip)
Это работает, но кажется очень неправильным.
(( Как ни странно, все работало нормально с более старой версией Play Framework (старше, чем RC-1) и, когда я использовал PlayProject, а не play.Project. Затем я сохранил сгенерированные классы в target/scala-2.10/classes/
, Только. ))
stage
иdist
не работают (потому чтоjava.lang.NoClassDefFoundError
, когда сгенерированные классы не найдены). - person KajMagnus   schedule 15.12.2012classpath
не отображает папку, которая находится не в целевом, а в базовом каталоге, а именноcompiledjs-classes
в моем случае. Однакоshow full-classpath
указывает на эту папку,compiledjs-classes
. Итак, что я сделал, похоже, сказал SBT включать папку только при компиляции, но не при создании дистрибутива? - person KajMagnus   schedule 15.12.2012clean
не удаляет папкуcompiledjs-classes
. - person KajMagnus   schedule 15.12.2012