私たちのアプリケーションをPlay 2.3(.10)からPlay 2.4 6)。開発環境では、資産が見つけられ、期待どおりに展開されます。しかし、展開では、そうではありません。私たちは構築段階でsbt-native-packager 1.1.1とactivator clean stage
を使用しています。生成されたファイルは機能しますが、アセットは生成された任意のJARの/public
ディレクトリにコピーされません。代わりに、資産は "public /"にパッケージ化されていませんが、Playでは "META-INF /.../"より下にパッケージされています2.4
META-INF/resources/webjars/<project>/
<branch>-<commit>-<builddate>/javascripts/jquery-2.1.1.min.js
という名前のいくつかのディレクトリ内に、<projectname>-assets.jar
というファイルがあります。 Play 2.3では、このJARに上記のファイルが含まれています。
public/javascripts/jquery-2.1.1.min.js
期待どおりです。
その結果、資産が見つからず、エラー404が配信されます。予想通り - -
<script type="text/javascript" src="/assets/javascripts/jquery-2.1.1.min.js"></script>
に生成されたHTMLでブラウザに配信ルートは、資産がリード
<script type="text/javascript" src="@routes.Assets.at("javascripts/jquery-2.1.1.min.js")"></script>
として参照され、テンプレートには通常の
GET /assets/*file controllers.Assets.at(path="/public", file)
です。私が見るところでは、すべてがドキュメントに記載されているとおりです。開発環境では、すべてが機能します。しかし、展開後には、それらの作品は一緒に来ていません...
ここでは何が起こっていますか? Webjarsをまったく使用していないときに、パスに「webjars」というものがあるのはなぜですか?なぜ資産は「公的」ではないのですか?これをどうやって動かすことができますか?途中でプラグインやsbtの設定がありますか?しかし、後半stage
プロセスにおける
[info] Packaging /home/xy/workspace/<project>/target/<project>-<version>.jar ...
[debug] Input file mappings:
[debug] public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
[debug] /home/xy/workspace/<project>/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
:私たちは、資産がが実際に最初の場所で正しく生成されていることが判明一方
UPDATE 2016年6月2日
、同じファイルが生成されます - 間違ったファイルの場所:
[info] Packaging /home/xy/workspace/<project>/target/<project>-<version>.jar ...
[debug] Input file mappings:
[debug] META-INF/resources/webjars/<project>/<version>/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
[debug] /home/xy/workspace/<project>/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
sbtのビルドが完了した後、JARファイルを手動で変更するテストを既に行っています。META-INF/resources/webjars/<project>/<version>
ディレクトリをシンプルにpublic/
に移動し、JAR(sbt外)を再パッケージすると、すべて正常に動作します。だから私は私の "計画B"を準備しているが、実際にここで誤って動作している理由、そして(b)正しく動作させる方法を理解したいと思う。