如何在多项目构建中排除其他子项目的传递依赖关系?

丹特3

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实现。

如何从项目的传递依赖项coreLib排除XPP库androidApp

编辑:

根据我的研究,仅与ModuleID结合使用是不可能的libraryDependency同时dependsOn将所有可传递依赖项都放到classpath中,api中没有办法排除该项目的某些可传递依赖项,您dependsOn

细节:

我目前正在运行sbt 0.13.5。

libraryDependencies,以及build.sbt中提供的各种设置,因此该项目可以作为独立的项目重复使用,并且因为感觉使用正确和自然的方式在中提供设置sbt

苏塞雷斯

这似乎为我工作:

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尝试执行的操作。它将所有项目间依赖项转换为ModuleIDIvy在解析期间将使用的依赖项。由于ProjectAPI当前无法指定排除对象,因此我们绕过此自动层,并手动声明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: 
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何排除其他子项目带来的依赖关系?

如何在多平台多项目Kotlin构建中为其他项目的测试添加依赖项

如何在sbt多项目构建中获取子项目路径

如何在多项目Gradle中为子项目定义不同的依赖关系?(Java)

如何通过在多项目构建中将其用作依赖项来访问 sbt 插件的子项目?

如何使用drifferent gradle多项目的子项目

在SBT的多项目构建中,如何在另一个子项目中使用对象/类型?

如何为具有所有子项目的项目设置依赖关系?

如何在Gradle多项目构建的子项目目录中执行命令?

如何在多模块Maven项目中让子项目继承超级项目的依赖版本?

在 Gradle 中排除子项目

如何添加子项目的其他输出以使用MSBuild发布项目?

Gradle子项目不会依赖其他子项目进行编译

CMake:根据其他人的子项目标头构建子项目

如何在使用它的项目的多项目构建中开发sbt插件?

如何从并行构建中排除某些项目构建?

Gradle在主项目中排除特定子项目的插件

如何在Gradle中将其他子项目中选择的类用作测试依赖项

使SBT子项目中的编译操作依赖于其他子项目的编译,而无需将其添加到类路径中

Gradle子项目构建依赖项

Maven:如何在父POM中引用子项目的构建目录?

Gradle配置提供了在子项目构建中被忽略的依赖性

如何在Gradle多项目构建中为子模块包括对父测试类的依赖?

同一多项目构建中的插件和项目之间的依赖关系

如何在Maven中处理子项目依赖项

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

SBT多项目设置,其中子项目的生成文件依赖于非托管JAR

Gradle根项目取决于子项目的构建

如何依赖Github的多模块SBT项目的子项目