2016-06-01 5 views
0

私たちのアプリケーションを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)正しく動作させる方法を理解したいと思う。

答えて

0

// Name of the produced artifact 
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) => 
    artifact.name + "-" + module.revision + "." + artifact.extension 
} 

それは戻って2013年でそれも、それがあったということかもしれないのビルドツールとしてSBTへの移行の非常に、非常に最初のステージの一つから来た:深く、この素敵なスニペットがあった私たちの成長を続けるbuild.sbtに埋葬元のPlayまたはsbtチュートリアルから(Play 2.1、sbt 0.12 ...)。それは今日まで生き残った。また、public/以下のアセットを含む<project>-<version>-assets.jarは、<project>-<version>.jarと誤って付けられました。 Lateron real<project>-<version>.jarMETA-INF以下のアセットを持つアセットは、アセットを含むJARファイルを上書きします。それが事態の悪いことです。

build.sbtからのartifactNameの定義を無効にするか、それともよく削除しました。さて、すべてが問題なく、私たちはついにPlay 2.4への移行を続けることができます。

関連する問題