我正在开展工作的项目是Lift框架上的webapp。我们也在使用xsbt web plugin。有一个“核心”项目,其中包含绝大多数功能;我目前的目标是创建两个“分发”项目,为“核心”项目添加一组不同的类路径资源。问题是,我要么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*/ )
然后在app1
和app2
的目录结构中,我有src/main/resources/aFileINeed
的文件。核心应用程序使用class.getResource
方法从类路径加载文件。
问题
如果我尝试使用container:start
运行其中一个分发项目,则它不会在类路径中检测到所需的文件。此外,它声称src/main/webapp
不是现有目录(该文件夹包含在核心项目中,因为它是xsbt web插件所要求的。)
如何让这些项目“合并”他们的资源?我希望在aggregate
项目定义中使用dependsOn
或Build.scala
可以处理对我来说,但显然没有。
答案 0 :(得分:4)
这就是我正在做的事情。我在项目的根目录中创建了一个全局“资源”目录,然后是以下变量:
lazy val globalResources = file("resources")
然后在每个项目的设置中:
unmanagedResourceDirectories in Runtime += globalResources
对于使用xsbt-web-plugin或其他导入它的库的项目,你必须使用更强大的
unmanagedResourceDirectories in Compile += globalResources
请注意,使用此解决方案,如果您定义同一文件两次compile:copy-resources
,您的项目可能会有多个资源目录和AFAIK,您会对此生气。