Tengo un conjunto de componentes poco relacionados, donde algunos de estos dependen de otros. Para ser concretos, supongamos que tenemos componentes "comunes", "a" y "b". "común" no tiene ninguna dependencia, pero todos los demás proyectos usan "común". Además, "a" depende de "b". Todos los componentes están escritos en Scala, y me gustaría usar sbt para compilarlos.SBT: Dependencia en otro proyecto SBT sin publicación
Las siguientes propiedades sería bueno tener:
- Varias personas trabajan en los diferentes proyectos, que es por eso que no quiere tener un repositorio único, sino más bien un repositorio por proyecto.
- Crear un proyecto debe ser fácil, y todas las dependencias deben construirse automáticamente (si es necesario). Es decir, si modifico "common" y luego construyo "b", primero debería construir "common" y luego continuar con build "b".
- Poder tener todos los proyectos en un IDE, de modo que la refactorización y las tareas IDE similares funcionen correctamente y todos los proyectos afectados se modifiquen correctamente.
Por lo que puedo ver, hay dos posibilidades de tener dependencias de este tipo en sbt; o utilizamos subproyectos o utilizamos una dependencia administrada (que se envía a alguna parte, por ejemplo, localmente). Sin embargo, parece que estas dos opciones no proporcionan (1) o (2) arriba. En particular
- El uso de subproyectos nos obliga a utilizar un único repositorio, ya que todos los subproyectos deben estar en los subdirectorios del proyecto principal.
- Publicar los proyectos localmente y usar dependencias administradas es engorroso, ya que al cambiar "common" y luego a "b" solo se recogen los cambios en "common" si ese proyecto se compiló y publicó primero. Puedo ver que las dependencias administradas son útiles para muchos casos, pero para nuestro caso de uso particular no parecen funcionar bien. Con frecuencia trabajamos en varios proyectos y los cambiamos al mismo tiempo. Por esta razón, tener que publicar a menudo parece demasiado complicado.
¿Realmente no hay manera de decir que un proyecto sbt depende de otro proyecto sbt en una determinada ubicación (relativa) y de que sbt sepa cuándo crear la dependencia?
'lazy val dep = uri (" file: /// path/to ")' funciona para mí. La ruta relativa también funciona. Ejemplos: 'lazy val helloWorldProj = uri (" file: /// D:/EclipseProjects/helloworld ")' O 'lazy val helloWorldProj = uri (" ../ helloworld ")' – dips
Y estos deben agregarse al archivo build.sbt si no estoy equivocado –