Cómo obtener el valor de configuración de otro proyecto en una construcción de múltiples proyectos.
No estoy seguro de haber comprendido bien el concepto de flujo de trabajo de sbt. Tengo una estructura de varios proyectos de profundidad arbitraria en mi archivo build.sbt y quiero definir una tarea que me muestre las dependencias de la biblioteca en las que dependen los subproyectos actuales del proyecto. O, en general: ¿hay alguna manera de obtener el valor de configuración de otro proyecto?
Estoy intentando hacer algo como esto:
val hierarchyDeps = taskKey<a href="""">Seq[ModuleID]</a>
val hierarchyDepsImpl = Def.task {
loadedBuild.value.allProjectRefs.flatMap { case (projectRef, resolvedProject) =>
(projectRef / libraryDependencies).value
}
}
val cmn = project.in(file("cmn"))
val subA = project.in(file("sub<em>a")).dependsOn(cmn).settings(hierarchyDeps := hierarchyDepsImpl.value)
val subB = project.in(file("sub</em>b")).dependsOn(cmn).settings(hierarchyDeps := hierarchyDepsImpl.value)
Pero obtengo un java.lang.IllegalArgumentException
:
java.lang.IllegalArgumentException: Could not find proxy for val projectRef: sbt.ProjectRef in List(value projectRef, value $anonfun, method $anonfun$hierarchyDepsImpl$1, value hierarchyDepsImpl, object $5879c5c8d08c0b0b007a, package <empty>, package <root>) (currentOwner= value hierarchyDepsImpl )
davy.ai
Parece que la variable
projectRef
no se está resolviendo correctamente. Una solución sería utilizar el métodoProject.extract
para obtener elProjectRef
de cada subproyecto y luego utilizarlo para obtener las dependencias de la biblioteca. Aquí está la versión actualizada del código:En esta versión, utilizamos el método
Project.extract
para obtener el objetostate
y utilizarlo para acceder a laStructure
del proyecto. Luego, podemos utilizar el métodoallProjectRefs
para obtener una lista de todos los subproyectos y, para cada uno, podemos obtener sus dependencias de la biblioteca utilizando la sintaxis(projectRef / libraryDependencies)
. Finalmente, podemos devolver la lista combinada de todas las dependencias de la biblioteca para todos los subproyectos en el proyecto.