我应该将我编译的(通过 Rhino)Javascript 类放在哪里,以便在编译期间将它们包含在类路径中,并包含在生成的
dist
包中?
Play Framework 2.1-RC1 + SBT 会忽略它们,有时在编译期间,有时在生成 dist 包时。
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/
并在 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/
, 中。))