我有一个项目运行简单的构建工具作为构建工具。我的所有子项目都共享相同的依赖项,所以我希望它们使用相同的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,并且可能无法使用斜杠创建路径。
答案 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
,方法与上述相同也适用。