Como faço para compartilhar minha pasta Lib em subprojetos da ferramenta de construção simples
Pergunta
Eu tenho um projeto executando uma ferramenta construída simples como ferramenta de construção. Todos os meus subestrutura estão compartilhando as mesmas dependências, então quero que elas usem a mesma pasta Lib. Eu poderia fazê -lo criando links simbólicos para minha pasta Lib compartilhada, mas espero encontrar uma configuração no SBT que me permita mudar para o caminho das minhas bibliotecas.
override def dependencyPath = ".." / "lib"
não funciona ".." não é permitido em caminhos
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
}
}
Não funciona, a dependência é um caminho relativo do projeto
dependencyPath.absolutePath
Também não funciona, porque o Absolutepath cria uma corda com barras, e os caminhos não podem ser criados a partir de cordas com barras.
Solução
Se você simplesmente deseja adicionar o projeto não gerenciado do projeto pai (ou seja, lib
-Directory) Para os projetos infantis, você pode fazer algo assim:
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(_))
}
Caminhos definindo no ParentProject
classe (por exemplo, usando val dirJars = descendents("dir", "*.jar")
) e adicionando -os a SubProject
da mesma maneira que acima também funciona.