5

我有一个项目运行简单的构建工具作为构建工具。我所有的子项目都共享相同的依赖项,所以我希望它们使用相同的 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 创建一个带有斜杠的字符串,并且路径可能不是从带有斜杠的字符串创建的。

4

1 回答 1

3

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

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上述相同的方式也可以。

于 2010-10-29T23:57:01.000 回答