Переопределение зависимости не наследуется дочерними модулями в сборке Scala sbt - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть родительский проект A и дочерний проект B, который наследуется от A, используя сборку scala SBT.Родитель A зависит от библиотеки с версией «l1», в которой есть суббиблиотека с версией p1, но ему требуется другая версия суббиблиотеки / пакета с версией p2.Чтобы добиться этого, я включил суббиблиотеку.версия библиотеки p2 в "dependencyOverrides" в родительском build.sbt.Мне нужно, чтобы ребенок зависел от той же библиотеки 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
)

1 Ответ

0 голосов
/ 21 декабря 2018
  1. Не используйте dependencyOverride - libraryDependencies достаточно, а dependencyOverride создает некоторые проблемы, так как предназначено для внутреннего использования ,
  2. Вы можетеподелиться конфигурацией библиотеки так же, как вы делитесь assemblySettings
  3. , если вы используете 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)
...