如何在Simple Build Tool的子项目中共享我的lib文件夹

时间:2010-10-29 16:45:32

标签: scala sbt

我有一个项目运行简单的构建工具作为构建工具。我的所有子项目都共享相同的依赖项,所以我希望它们使用相同的lib文件夹。我可以通过创建到我的共享lib文件夹的符号链接来实现,但我希望在sbt中找到一个允许我更改为库的路径的配置。

 override def dependencyPath = ".." / "lib"

不起作用,路径中不允许使用“..”

class Top(info:ProjectInfo) extends ParentProject(info){
    lazy val subproject = project("sub","Sub Project",info => SubProject(info,dependencyPath)

    class SubProject extends DefaultProject(info:ProjectInfo,libdir:Path){
        override def dependencyPath = libdir
    }
}

不起作用,dependencyPath是项目相对路径

dependencyPath.absolutePath

也不起作用,因为absolutePath创建一个带斜杠的String,并且可能无法使用斜杠创建路径。

1 个答案:

答案 0 :(得分:3)

如果您只是想将父项目的非托管类路径(即lib - 目录)添加到子项目中,您可以执行以下操作:

class ParentProject(info: ProjectInfo) extends DefaultProject(info) { parent =>

  class SubProject(info: ProjectInfo) extends DefaultProject(info) {
    override def unmanagedClasspath =
      parent.unmanagedClasspath +++ super.unmanagedClasspath
  }

  val someProject = project("test", "Test", new SubProject(_))
}

定义ParentProject课程中的路径(例如使用val dirJars = descendents("dir", "*.jar"))并将其添加到SubProject,方法与上述相同也适用。