¿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.
- Acelerar el proceso dex con archivos jar, ¿es posible?
- RxJava: encadenamiento de observables
- Scala + Android Novato
- ¿Qué lenguajes de programación puedo usar en Android Dalvik?
- Scala en Android: java.lang.NoSuchMethodError: java.lang.String.isEmpty
¿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
.
- Uso del proyecto Scala con Gradle para Android
- Android studio dalvik vm no puede encontrar la clase
- Proyecto LibGDX escrito en Scala, en Android, con IntelliJ
- Android + Scala + Intelli 13
- Cómo excluir archivos R * .class de una compilación proguard
- Guardando colección extranjera en ORMLite con Robospice y Scala
- Aplicación IntelliJ IDEA android scala
- Error al cargar CharSequence en Scala 2.11.4 y sbt 0.12.4
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: ...
- ¿Está bien firmar dos aplicaciones diferentes con la misma clave?
- ¿Por qué puedo mover con éxito un archivo en Linux mientras se está escribiendo?