У меня есть проект, который я размещаю на GitHub, и я использую scala-steward для обновления своих плагинов и зависимостей. Какое-то время это работало, а теперь использование таких автоматических обновлений превратилось в кошмар. Вот в чем дело. В моем plugins.sbt есть зависимость от охвата, которая была обновлена scala-steward до версии 2.0.6. Но запрос на включение не прошел стадию компиляции, и я вижу следующую ошибку:
[error] (update) found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[error]
[error] * org.scala-lang.modules:scala-xml_2.12:2.1.0 (early-semver) is selected over {1.3.0, 1.2.0, 1.1.1, 1.0.6}
[error] +- org.scoverage:scalac-scoverage-reporter_2.12:2.0.7 (depends on 2.1.0)
[error] +- org.scalariform:scalariform_2.12:0.2.0 (depends on 1.0.6)
[error] +- org.scala-lang:scala-compiler:2.12.16 (depends on 1.0.6)
[error] +- com.typesafe.sbt:sbt-native-packager:1.5.2 (scalaVersion=2.12, sbtVersion=1.0) (depends on 1.1.1)
[error] +- com.typesafe.play:twirl-api_2.12:1.5.1 (depends on 1.2.0)
[error] +- com.github.sbt:sbt-native-packager:1.9.9 (sbtVersion=1.0, scalaVersion=2.12) (depends on 1.3.0)
[error]
Во-первых, хорошо, что о такой несовместимости сообщается во время компиляции, чтобы избежать неожиданностей во время выполнения. Но я не уверен, как это исправить. Такое ощущение, что я наткнулся на блокпост.
Обновлено: Вот мой настоящий проект: https://github.com/joesan/plant-simulator
Это будет болезненно, так как у меня есть дюжина плагинов, которые я должен опробовать с разными версиями. Есть ли способ просто удалить scala.xml из тех плагинов, которые вызывают проблемы?
Временно исправил это, используя версию покрытия до 1.9.3, но это не то, чего я на самом деле хочу!
Можете ли вы предоставить build.sbt и plugins.sbt? Я имею в виду минимальный (проблемный) воспроизводимый код этих файлов
возможно, вам нужно понизить версию вашего scalac-scoverage до 2.0.0 из-за того, что он использует scala-xml 2.1.0, в то время как все остальные используют версию 1.xy. Обычно при изменении основной версии возникают проблемы при переходе на новую версию библиотеки. См. pom.xml здесь
@MikhailIonkin Я добавил ссылку на свой проект здесь для справки.
Мне пришлось сделать следующее в моем файле project/plugins.sbt
, чтобы исправить эту ошибку:
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
Я также добавил в свой build.sbt следующее:
ThisBuild / evictionErrorLevel := Level.Info
Но я думаю, мне это не нужно в моем build.sbt. Надеюсь, это поможет кому-то! Сообщество Scala в разногласиях помогло мне исправить это. Спасибо им!
Было бы неплохо узнать причину изменения.
scala-xml вызывает проблемы у всех:/ Вы можете попытаться принудительно установить конкретную версию 2.x или поискать обновления всех других плагинов (при условии, что у них есть версия, совместимая с scala-xml 2.x).