Почему добавление плагина в SBT вызывает ошибку разрешения зависимостей?
У нас есть собственный плагин, который внутренне использует старую версию игры.
Когда он добавляется в SBT, мы получаем странную ошибку разрешения зависимостей:
connect-userdata:connect-userdata_2.11:1.0 [S]
...
+-com.typesafe.play:play-logback_2.11:2.4.8 (error: not found) ..
+-com.typesafe.play:play-logback_2.11:2.5.4 [S]
dependencyGraph
задача показывает com.typesafe.play:play-logback_2.11:2.4.8
как непосредственная зависимость для userdata
проект. Если плагин удален, все работает нормально.
pom
Файл для плагина имеет следующие зависимости:
<dependency>
<groupId>com.typesafe.play</groupId>
<artifactId>play-ws_2.10</artifactId>
<version>2.4.8</version>
</dependency>
<dependency>
<groupId>com.typesafe.play</groupId>
<artifactId>play-json_2.10</artifactId>
<version>2.4.8</version>
</dependency>
Тем не менее, мы ссылаемся на зависимости в нашем проекте следующим образом:
plugins.sbt:
// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.+")
Dependencies.scala
val playVersion: String = play.core.PlayVersion.current
val logback: SettingType = libraryDependencies += "com.typesafe.play" %% "play-logback" % playVersion
В случае, если я заменяю playVersion
просто со строкой "2.5.4"
нет ошибок.
Поэтому я предполагаю, что SBT каким-то образом удается разрешить зависимости дважды: сначала с помощью игры 2.4.8, а затем 2.5.4.
Но почему? Это ошибка или ожидаемое поведение по дизайну?
Есть ли лучший способ выровнять версии игровой среды, на которую ссылаются как на зависимость и как плагин?
Я попробовал это:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % Dependencies.Play.version)
где version="2.5.+"
, но Dependencies
класс не доступен из plugins.sbt
,