Почему добавление плагина в 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,

0 ответов

Другие вопросы по тегам