vinculos vincular tareas tarea sangria resumen proyectos predecesoras poner entre eliminar ejemplos desvincular dependencias como android scala sbt

android - sangria - vincular tareas en project



¿Cómo excluir dependencias transitivas de otros subproyectos en construcciones de multiproyectos? (1)

En Build.scala tengo una dependencia entre proyectos:

val coreLib = Projects.coreLib() val consoleApp = Projects.consoleApp().dependsOn(coreLib) val androidApp = Projects.androidProject().dependsOn(coreLib/*, exclusions = xpp */)

El proyecto de la biblioteca principal define una biblioteca en su libraryDependencies Dependencias (analizador XPP), que quiero excluir en androidApp , ya que Android Framework tiene su propia implementación XPP fuera de la caja.

¿Cómo puedo excluir la biblioteca XPP de las dependencias transitivas de coreLib en el proyecto androidApp ?

EDITAR:

Según mi investigación, la exclusión es posible SOLAMENTE para ModuleID que se utiliza junto con libraryDependency . Mientras tanto, dependsOn pone todas las dependencias transitivas en classpath, no hay forma en la API de excluir algunas dependencias transitivas de este proyecto, usted dependsOn

DETALLES:

Estoy corriendo sbt 0.13.5 actualmente.

libraryDependencies de commonLib, así como varias configuraciones proporcionadas en build.sbt para que este proyecto pueda ser reutilizado como independiente, y porque se siente como una forma correcta y natural de suministrar configuraciones en sbt .


Esto parece funcionar para mí:

val someApp = project.settings( libraryDependencies += "junit" % "junit" % "4.11" ) val androidApp = project.dependsOn(someApp).settings( projectDependencies := { Seq( (projectID in someApp).value.exclude("junit", "junit") ) } )

Lo que está haciendo el proyecto Dependencias es lo que sbt, por defecto, intenta hacer. Convierte las dependencias entre proyectos en ModuleID que Ivy utilizará durante la resolución. Debido a que la API del Project no tiene forma de especificar las exclusiones actualmente, omitimos esta capa automática y también declaramos manualmente la dependencia de Ivy.

Resultado:

> show someApp/update ... [info] Update report: ... [info] compile: [info] org.scala-lang:scala-library:2.10.4 (): (Artifact(scala-library,jar,jar,None,List(),None,Map()),/home/jsuereth/.sbt/boot/scala-2.10.4/lib/scala-library.jar) [info] junit:junit:4.11: (Artifact(junit,jar,jar,None,ArraySeq(master),None,Map()),/home/jsuereth/.ivy2/cache/junit/junit/jars/junit-4.11.jar) [info] org.hamcrest:hamcrest-core:1.3: (Artifact(hamcrest-core,jar,jar,None,ArraySeq(master),None,Map()),/home/jsuereth/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar) ...

Y el proyecto dependiente con junit / hamcrest excluido:

> show androidApp/update ... [info] Update report: ... [info] compile: [info] org.scala-lang:scala-library:2.10.4 (): (Artifact(scala-library,jar,jar,None,List(),None,Map()),/home/jsuereth/.sbt/boot/scala-2.10.4/lib/scala-library.jar) [info] someapp:someapp_2.10:0.1-SNAPSHOT: ...