7

私が仕事で取り組んでいるプロジェクトは、Lift Framework の webapp です。xsbt Web プラグインも使用しています。機能の大部分を含む「コア」プロジェクトがあります。私の現在の目標は、「コア」プロジェクトに異なるクラスパス リソースのセットを追加する 2 つの「配布」プロジェクトを作成することです。問題は、1) 「配布」プロジェクトを実行できない、または 2) それらを実行するが、必要なリソースがそこにないように見えることです。

私が試したこと

これが私の要約版ですproject/Build.scala

lazy val core = Project("Core", file("core"))
  .settings( /*some dependencies, resolvers, webSettings */ )

lazy val app1 = Project("App1", file("app1"))
  .aggregate(core)
  .settings( /*the same settings as core */ )

lazy val app2 = Project("App2", file("app2"))
  .aggregate(core)
  .settings( /*the same settings as core*/ )

次に、 と の両方のディレクトリ構造でapp1app2にファイルがありますsrc/main/resources/aFileINeed。コア アプリケーションはclass.getResource、クラスパスからファイルをロードするアプローチを使用しています。

問題

を使用して配布プロジェクトの 1 つを実行しようとするとcontainer:start、クラスパスで必要なファイルが検出されません。また、既存のディレクトリではないと主張してsrc/main/webappいます (xsbt Web プラグインで必要なため、そのフォルダーはコア プロジェクトに含まれています)。

これらのプロジェクトのリソースを「マージ」するにはどうすればよいですか? aggregateプロジェクト定義でordependsOnを使用するBuild.scalaと、それが処理されると思っていましたが、明らかにそうではありません。

4

1 に答える 1

4

これが私がやっていることです。プロジェクトのルートにグローバル 'resources' ディレクトリを作成し、次の変数を作成します。

    lazy val globalResources = file("resources")

そして、すべてのプロジェクトの設定で:

    unmanagedResourceDirectories in Runtime += globalResources 

xsbt-web-plugin またはそれをインポートする他のライブラリを使用するプロジェクトでは、より強力なプラグインを使用する必要があります

    unmanagedResourceDirectories in Compile += globalResources

このソリューションを使用すると、プロジェクトに複数のリソース ディレクトリが含まれる可能性があり、同じファイルを 2 回定義するcompile:copy-resourcesと腹が立つことに注意してください。

于 2013-09-04T02:14:28.453 に答える