Как исключить транзитивные зависимости другого подпроекта в сборках мультипроектов?

В Build.scala меня есть зависимость между проектами:

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

Проект базовой библиотеки определяет библиотеку в ее libraryDependencies (синтаксический анализатор XPP), которую я хочу исключить в androidApp , поскольку платформа Android имеет свою собственную реализацию XPP из коробки.

Как я могу исключить библиотеку XPP из транзитивных зависимостей coreLib в проекте androidApp ?

РЕДАКТИРОВАТЬ:

Согласно моему исследованию исключение возможно ТОЛЬКО к ModuleID который используется совместно с libraryDependency . Между тем dependsOn ставит все транзитивные зависимости в classpath, нет никакого способа в api исключить некоторые транзитивные зависимости этого проекта, вы dependsOn

ДЕТАЛИ:

Сейчас я запускаю sbt 0.13.5.

LibraryDependencies of commonLib, а также различные настройки, предоставленные в build.sbt, чтобы этот проект можно было использовать повторно как автономный, и потому что он чувствует себя правильно и естественным способом предоставления настроек в sbt .

Solutions Collecting From Web of "Как исключить транзитивные зависимости другого подпроекта в сборках мультипроектов?"

Кажется, это работает для меня:

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

Что делает projectDepenendencies, это то, что sbt, по умолчанию, пытается сделать. Он преобразует любые межпроектные зависимости в ModuleID которые Ivy будет использовать во время разрешения. Поскольку API-интерфейс Project не имеет возможности указывать исключение в настоящее время, мы обходим этот автоматический слой и вручную объявляем зависимость Ivy.

Результат:

 > 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) ... 

И зависимый проект с junit / hamcrest исключен:

 > 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: ...