题
我有一个项目在运行简单的内置工具,建筑工具。我所有的子项目都共享相同的依赖关系,所以我希望他们使用同一个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
类路径。
不隶属于 StackOverflow