¿Cómo excluir dependencias transitivas de otro subproyecto en compilaciones multiproyecto?

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 biblioteca central define una biblioteca en su libraryDependencies (XPP parser), que quiero excluir en androidApp , ya que el framework Android 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 a ModuleID que se utiliza conjuntamente con libraryDependency . Mientras que dependsOn pone todas las dependencias transitivas a classpath, no hay manera en api para excluir algunas dependencias transitivas de este proyecto, dependsOn usted

DETALLES:

Estoy corriendo sbt 0.13.5 actualmente.

LibraryDependencies de commonLib, así como varios ajustes suministrados en build.sbt para que este proyecto pueda ser reutilizado como independiente, y porque se siente la forma correcta y natural de proporcionar ajustes 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 el projectDepenendencies está haciendo es lo que sbt, por defecto, intenta hacer. Convierte cualquier dependencia entre proyectos en ModuleID s que Ivy utilizará durante la resolución. Debido a que la API de Project no tiene forma de especificar excluye actualmente, omitimos esta capa automática y declaramos manualmente la dependencia de Ivy también.

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: ... 
  • Aplicación Android basada en Java -> cambiar a Scala
  • Llamar a diferentes constructores de Java de Scala con Android
  • ¿Cómo se pueden reducir las aplicaciones scala para Android en tamaño de archivo?
  • Uso conveniente de Android XmlResourceParser?
  • Programación de Scala para Android
  • Modo correcto de usar YouTube.Builder
  • Uso de una biblioteca Scala para una aplicación de Android
  • Cómo bajar la versión proguard en androide gradle estudio?
  • ¿Hay una manera de determinar si es posible llamar a un dialog.dismiss () sin vacío try-catch bloque?
  • Error al ejecutar sbt install-emulator
  • Tiempo de construcción largo con sbt android-plugin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.