Description
Problem outline
I know this was a conversation a long time ago in scala/scala#9743 but recently this conversation has surfaced again. Recently in sbt-scoverage
I had some reports of conflicts since I was still on 1.x, but some other libraries like scalatest bumped to 2.x making the problem hit people a bit harder. Due to that, I went ahead and updated to 2.x. Due to me updating, we got even more reports of conflicts with sbt-native-packager, which caused them to update to 2.x as well. Now we're in a position where people are getting hit with stuff like this:
[error] * org.scala-lang.modules:scala-xml_2.12:2.1.0 (early-semver) is selected over {1.3.0, 1.0.6, 1.2.0}
[error] +- org.scoverage:scalac-scoverage-reporter_2.12:2.0.2 (depends on 2.1.0)
[error] +- com.github.sbt:sbt-native-packager:1.9.10 (sbtVersion=1.0, scalaVersion=2.12) (depends on 2.1.0)
[error] +- org.scala-sbt:testing_2.12:1.7.1 (depends on 1.3.0)
[error] +- org.scala-sbt:sbinary_2.12:0.5.1 (depends on 1.0.6)
[error] +- org.scala-sbt:main_2.12:1.7.1 (depends on 1.3.0)
[error] +- org.scala-sbt:librarymanagement-core_2.12:1.7.0 (depends on 1.2.0)
[error] +- org.scala-lang:scala-compiler:2.12.16 (depends on 1.0.6)
[error] +- io.get-coursier:lm-coursier-shaded_2.12:2.0.10 (depends on 1.3.0)
Where common sbt plugins are conflicting with sbt and Scala 2.12 itself. Looking back at past conversations I understand the breaking changes between 1.x and 2.x of scala-xml are extremely small so doing the following is pretty safe:
in your project/plugins.sbt
ThisBuild / libraryDependencySchemes ++= Seq(
"org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
)
But this isn't ideal to have this all over the place, and will cause confusions for users. Is it time to update scala-xml in 2.12? Is there something holding this back? We're in a weird position now where have the ecosystem is update for 2.12 and half isn't, causing issues.