3

play フレームワークを使用して構築された複雑なアプリケーションがあります。アプリケーションは個別の部分に分かれています。Web サイト、クローラー、およびその他すべては、同様のクラスと構成ファイルを使用します。これを改善するために、これらを play アプリケーションのルートにあるフォルダーに一元化しました。

開発では、複数の構成ファイルをロードするためのクラスの import ステートメントと include ステートメントは正常に機能します。本番環境では、dist バージョンのコードをデプロイしていましたが、すべて相対パスを持つインクルードが機能しなくなりました。

親をロードするために -Dconfig.file を試しました。そのファイルは生成された zip フォルダーに追加されましたが、含まれているファイルはどこにも見つかりませんでした。

Play 用の構成ファイルを「コンパイル」または集中化して、すべてをロードする方法について、誰かが考えを持っていますか?

ご協力ありがとうございました。

4

2 に答える 2

1

私は同じ問題を抱えていました.-Dconfig.fileのフルパスを指定して、インクルード部分が機能するようにする必要があることがわかりました。

すなわち

/path/to/dir -->
     production.conf = {include "application.conf" and some overrides}
     start
     my-app/

./start -Dconfig.file=/path/to/dir/production.conf

edit in play 2.2 配布可能な zip 構造が変更され、アプリ名スクリプトを含む bin dir が存在するようになりました。

    /path/to/dir -->
     production.conf = {include "application.conf" and some overrides}
     bin/my-app

     ./bin/my-app -Dconfig.file=/path/to/dir/production.conf
于 2013-06-17T07:53:06.743 に答える
0

そのため、これがどのように機能するかを明確に理解していませんでしたが、全体像を説明しようとします.

複数のプロジェクトが「外部」構成ファイルを使用できるようにするために、別のプロジェクトを作成しました。この新しいプロジェクトは一種のライブラリです。複数のプロジェクトで使用されるすべてのオブジェクトと構成ファイルを保持します。

各プロジェクトには、依存関係としてこの「コア」プロジェクトがあります。これにより、play に配布パッケージの作成を依頼したときに、すべてのコードを 1 つの zip ファイルにマージすることができます。

お役に立てれば。

于 2013-06-18T15:31:49.130 に答える