Como faço para compartilhar minha pasta Lib em subprojetos da ferramenta de construção simples

StackOverflow https://stackoverflow.com/questions/4054035

  •  27-09-2019
  •  | 
  •  

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top