我有一个项目在运行简单的内置工具,建筑工具。我所有的子项目都共享相同的依赖关系,所以我希望他们使用同一个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创建具有斜线字符串,和路径可以不被从串带斜线创建。

有帮助吗?

解决方案

如果您只是想添加父项目的非托管类路径(即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类路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top