コンパイル中に (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
動作します。でも!生成された .zip ファイル (.zip で生成) を解凍して起動すると、コンパイルされた Javascript クラスが .zip に含まれていないため、実行時にアプリケーションが失敗します。stage
dist
dist
3. lib/ フォルダーにクラスを配置する
その後compile
、クラスファイルが見つかりません。(eg class を に配置compiledjs.HtmlSanitizerJs
しました
lib/compiledjs/HtmlSanitizerJs.class
。)
私はどうしたらいいですか?つまり、何が機能し、ベストプラクティスとは何ですか?
とにかく、現在、生成されたクラスを両方にコピーしています (
target/scala-2.10/compiledjs-classes/
コンパイルが機能するため) と
target/scala-2.10/classes/
(生成された .zip に含まれているため)
これは機能しますが、非常に間違っているように感じます。
(( 奇妙なことに、古いバージョンの Play フレームワーク (RC-1 よりも古い)と、play.Project ではなく PlayProject を使用していた場合、すべてが正常に機能しました。その後、生成されたクラスをtarget/scala-2.10/classes/
, のみに保持しました。))