相关疑难解决方法(0)

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

我正在开展的项目是Lift Framework 上的一个webapp .我们也在使用xsbt web插件.有一个"核心"项目,其中包含绝大多数功能; 我目前的目标是创建两个"分发"项目,为"核心"项目添加一组不同的类路径资源.问题是,我要么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*/ )
Run Code Online (Sandbox Code Playgroud)

然后,在两个目录结构app1app2,我有一个文件src/main/resources/aFileINeed.核心应用程序正在使用该class.getResource方法从类路径加载文件.

问题

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

我怎样才能让这些项目"合并"他们的资源?我期望使用aggregatedependsOnBuild.scala项目定义中为我处理,但显然没有.

scala sbt xsbt-web-plugin

6
推荐指数
1
解决办法
1644
查看次数

如何在sbt多项目构建中获取子项目路径

我试图在sbt中的多项目构建中获得子项目的位置.但我只能获得根项目目录.

lazy val copyToResources = taskKey[Unit]("copies the assembly jar.")
private val rootLocation: File = file(".").getAbsoluteFile
private val subProjectLocation: File =  file("sub_project").getAbsoluteFile.getParentFile
lazy val settings = Seq(copyToResources := {
val absPath = subProjectLocation.getAbsolutePath
println(s"rootLocation:$subProjectLocation $absPath, sub-proj-location: ${rootLocation.getAbsolutePath}")
 })
Run Code Online (Sandbox Code Playgroud)

输出:

 rootLocation:/home/user/projects/workarea/repo /home/vdinakaran/projects/workarea/repo, sub-proj-location: /home/vdinakaran/projects/workarea/repo
 rootLocation:/home/user/projects/workarea/repo /home/vdinakaran/projects/workarea/repo, sub-proj-location: /home/vdinakaran/projects/workarea/repo
Run Code Online (Sandbox Code Playgroud)

目录结构:

repo
   |-- sub_project
Run Code Online (Sandbox Code Playgroud)

作为解决方法,我使用rootLocation添加了sub_project文件夹.但为什么文件("sub_project")没有返回路径?

scala sbt

5
推荐指数
1
解决办法
4084
查看次数

标签 统计

sbt ×2

scala ×2

xsbt-web-plugin ×1