¿Cómo puedo compartir mi carpeta de la liberación de los subproyectos de simple herramienta de construcción

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

  •  27-09-2019
  •  | 
  •  

Pregunta

I tiene una herramienta integrada que ejecuta proyecto simple como instrumento de construcción. Todos mis proyectos sub están compartiendo las mismas dependencias, así que quiero que usen la misma carpeta lib. Podría hacerlo mediante la creación de enlaces simbólicos a mi carpeta lib compartido, pero espero encontrar una configuración en la SBT que me permite cambiar a la ruta de mis bibliotecas.

 override def dependencyPath = ".." / "lib"

no funciona, ".." no está permitido en caminos

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
    }
}

no funciona, dependencyPath es una ruta relativa del proyecto

dependencyPath.absolutePath

no funciona tampoco, porque rutaAbsoluta crea una cadena con barras y caminos no puede ser creado a partir de cadenas con barras.

¿Fue útil?

Solución

Si simplemente desea agregar ruta de clase no administrada del proyecto principal (es decir lib-directorio) a los proyectos niño puede hacer algo como esto:

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(_))
}

Definición de rutas en la clase ParentProject (por ejemplo, usando val dirJars = descendents("dir", "*.jar")) y añadiéndolos a SubProject la misma manera que anteriormente también funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top