加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在SBT中的项目之间共享资源

发布时间:2020-12-16 18:38:05 所属栏目:安全 来源:网络整理
导读:我正在开展的项目是 Lift框架上的webapp.我们也在使用 xsbt web plugin.有一个“核心”项目,其中包含绝大多数功能;我目前的目标是创建两个“分发”项目,为“核心”项目添加一组不同的类路径资源.问题是,我要么1)无法运行“分发”项目,要么2)让它们运行,但所
我正在开展的项目是 Lift框架上的webapp.我们也在使用 xsbt web plugin.有一个“核心”项目,其中包含绝大多数功能;我目前的目标是创建两个“分发”项目,为“核心”项目添加一组不同的类路径资源.问题是,我要么1)无法运行“分发”项目,要么2)让它们运行,但所需的资源似乎不存在.

我试过的

这是我的项目/ 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插件需要它).

我怎样才能让这些项目“合并”他们的资源?我期望在Build.scala项目定义中使用aggregate或dependsOn可以为我处理,但它显然没有.

解决方法

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

lazy val globalResources = file("resources")

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

unmanagedResourceDirectories in Runtime += globalResources

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

unmanagedResourceDirectories in Compile += globalResources

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读