我有一个父项目A和一个子项目B,它使用scala SBT构建从A继承。父级A依赖于版本为“ l1”的库,该库具有子版本为p1的子库,但是它需要一个版本为p2的子库/程序包的不同版本。父build.sbt中“ dependencyOverrides”中的库版本p2。我需要孩子依赖于相同的库l1,但也依赖于子库版本p2。当前正在发生的情况是,子级继承了l1,而父级中存在p2,但是子级中仅包含库中原来包含的子库的版本p1。我可以看到,如果我在子build.sbt中提供了与父代相同的依赖项覆盖,那么它也可以通过在子代中包含子库版本p2来工作,我想知道是否存在隐式方式来继承依赖项为孩子的父母替代。我的sbt版本是1.8.0,下面是父代的build.sbt中的子代定义。
//child definition
lazy val child = Project("child",file("child"))
.dependsOn(parent % "provided->provided;compile->compile;test-
>test;runtime->runtime")
.settings(
name := "child",
assemblySettings
)
答案 0 :(得分:2)
dependencyOverride
-libraryDependencies
就足够了,dependencyOverride
引入了一些问题,因为仅供内部使用 assemblySettings
的相同方式共享库配置libraryDependencies
,则子项目应继承父级的版本作为传递依赖项示例:
val dependencies = libraryDependencies ++= Seq(
...
)
val parent = (project in file("parent"))
.settings(dependencies)
.settings(assemblySettings)
val parent = (project in file("parent"))
.dependsOn(parent % "provided->provided;compile->compile;test-
>test;runtime->runtime")
.settings(dependencies) // actually unnecessary
.settings(assemblySettings)