7

我正在工作的项目是Lift Framework 上的一个 webapp。我们也在使用xsbt 网络插件。有一个“核心”项目,其中包含绝大多数功能;我当前的目标是创建两个“分发”项目,将一组不同的类路径资源添加到“核心”项目。问题是我要么 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从类路径加载文件的方法。

问题

如果我尝试使用 运行其中一个分发项目,container:start它不会在类路径中检测到所需的文件。此外,它声称这src/main/webapp不是现有目录(该文件夹包含在核心项目中,因为它是 xsbt Web 插件所必需的)。

我怎样才能让这些项目“合并”他们的资源?我希望在项目定义中使用aggregateor可以为我处理这个问题,但显然没有。dependsOnBuild.scala

4

1 回答 1

4

这就是我正在做的事情。我在项目的根目录中创建了一个全局“资源”目录,然后是以下变量:

    lazy val globalResources = file("resources")

然后在每个项目的设置中:

    unmanagedResourceDirectories in Runtime += globalResources 

对于使用 xsbt-web-plugin 或其他导入它的库的项目,您必须使用更强的

    unmanagedResourceDirectories in Compile += globalResources

请注意,使用此解决方案,您的项目可能会有多个资源目录,如果您两次定义同一个文件,AFAIKcompile:copy-resources会生您的气。

于 2013-09-04T02:14:28.453 回答