Я получаю следующую ошибку при создании библиотеки bp-kafka-bp2
, которая зависит от библиотеки bp-bp2-componentized
:
sbt.librarymanagement.ResolveException: неразрешенная зависимость:
com.foo # bp-bp2-componententized_2.11; 3.3. +: конфигурация не найдена в
com.foo # bp-bp2-componententized_2.11; 3.3.0: 'master'. Требовалось
из com.foo # bp-kafka-bp2_2.11; 3.10.1 compile
Неразрешенная библиотека bp-bp2-componentized
действительно существует в ~/.ivy2/local
и не имеет конфигурации master
в ее ivy.xml
Мои вопросы:
- Должна ли зависимая библиотека (bp-kafka-bp2) искать
master
конфигурацию отсутствующей библиотеки (не совсем)?
- Если не нужно искать конфигурацию
master
, что я могу сделать, чтобы она перестала это делать?
- Если нужно искать конфигурацию
master
, как мне заставить сборку для (не совсем) отсутствующей библиотеки создать такую конфигурацию?
Я пробовал это в sbt
версиях 1.1.5
и 1.2.1
. Я удалил ~/.ivy2/local
, ./ivy2/cache
и ~/.sbt
. Я также удалил все каталоги /target
и project/target
в библиотеке, которую я строю и сделал sbt clean
Эта библиотека прекрасно работает уже год или два. Единственное недавнее изменение, о котором я могу подумать, это введение опции кросс-компиляции 2.11 и 2.12, которая здесь не рассматривается, я просто собираю версию 2.11 самостоятельно.
Прямая зависимость объявлена в многопроектном build.sbt как
lazy val bp2 = (project in file("bp2")).
settings(commonSettings:_*).
settings(Seq(
name := "bp-kafka-bp2"
):_*).
settings(
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % ScalaTestVersion % "test",
"ch.qos.logback" % "logback-classic" % LogbackVersion % "test",
"com.foo" %% "bp-bp2-componentized" % Constellation.dependency("bp-bp2"),
"com.foo" %% "bp-akka-http" % Constellation.dependency("bp-akka")
)
).
dependsOn(reactiveComponentized)
где Constellation.dependency
- это просто функция, которая ищет версию по имени и превращает ее в диапазон патчей:
object Constellation {
...
def dependency(name: String) : String = versions(name).split("\\.").dropRight(1).mkString(".") + ".+"
}
Из сообщения об ошибке видно, что версия найдена и преобразована в 3.3.+
, который затем корректно преобразуется в 3.3.0
в кэше ivy
. Но затем он настаивает на поиске конфигурации master
, которой нет.