2012-09-27 222 views
3

我在工作中的項目是Lift框架上的web應用程序。我們也使用xsbt web plugin。有一個「核心」項目,其中包含絕大多數的功能;我目前的目標是創建兩個「分發」項目,爲「核心」項目添加一組不同的類路徑資源。問題是我要麼1)不能讓「分發」項目運行,要麼2)讓它們運行,但所需的資源似乎並不存在。如何在SBT中的項目之間共享資源

我已經試過

這裏是我的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方法從類路徑加載文件。

問題

如果我嘗試運行配電工程之一,採用container:start,它不檢測在類路徑中所需的文件。此外,它聲稱src/main/webapp不是一個現有目錄(該文件夾包含在覈心項目中,因爲它是xsbt Web插件所要求的)。

如何讓這些項目「合併」他們的資源?我預計在Build.scala項目定義中使用aggregatedependsOn會爲我處理這個問題,但它顯然沒有。

回答

2

這就是我正在做的。我在該項目的根目錄中創建一個全球性的「資源」目錄,然後將下面的變量:

lazy val globalResources = file("resources") 

然後在每個項目的設置:

unmanagedResourceDirectories in Runtime += globalResources 

對於使用xsbt-web項目-plugin或進口它的一些其他圖書館,你必須使用更強的

unmanagedResourceDirectories in Compile += globalResources 

要注意的是使用該解決方案您的項目將可能有muliple資源目錄和AFAI K如果你定義兩次相同的文件compile:copy-resources會對你生氣。

相關問題