From ecba0288a6ed4f2cdc753467afb45e2b0e112734 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 14 Aug 2019 16:23:02 +0200 Subject: [PATCH 1/4] Switch to coursier 2.0.0-RC3-3 --- build.sbt | 2 +- .../lm-coursier/src/main/contraband/Reconciliation.contra | 7 ------- .../scala/lmcoursier/CoursierDependencyResolution.scala | 5 +++-- .../src/main/scala/lmcoursier/internal/ArtifactsRun.scala | 2 +- .../scala/lmcoursier/internal/InterProjectRepository.scala | 2 +- .../main/scala/lmcoursier/internal/SbtUpdateReport.scala | 3 ++- .../lmcoursier/internal/TemporaryInMemoryRepository.scala | 6 +++--- .../src/main/scala/lmcoursier/internal/UpdateParams.scala | 1 + .../main/scala/coursier/sbtcoursier/ArtifactsTasks.scala | 2 +- .../src/main/scala/coursier/sbtcoursier/Keys.scala | 1 + modules/sbt-shading/src/main/scala/coursier/Shading.scala | 1 + 11 files changed, 15 insertions(+), 17 deletions(-) delete mode 100644 modules/lm-coursier/src/main/contraband/Reconciliation.contra diff --git a/build.sbt b/build.sbt index 6b253ab24..467c0dda4 100644 --- a/build.sbt +++ b/build.sbt @@ -15,7 +15,7 @@ inThisBuild(List( ) )) -val coursierVersion0 = "2.0.0-RC3-2" +val coursierVersion0 = "2.0.0-RC3-3" lazy val `lm-coursier` = project .enablePlugins(ContrabandPlugin) diff --git a/modules/lm-coursier/src/main/contraband/Reconciliation.contra b/modules/lm-coursier/src/main/contraband/Reconciliation.contra deleted file mode 100644 index d5a3665d5..000000000 --- a/modules/lm-coursier/src/main/contraband/Reconciliation.contra +++ /dev/null @@ -1,7 +0,0 @@ -package lmcoursier.definitions -@target(Scala) - -enum Reconciliation { - Default - Relaxed -} diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala index 4c1eaa199..83a1887bc 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala @@ -2,9 +2,10 @@ package lmcoursier import java.io.File -import _root_.coursier.{Artifact, Organization, Resolution, organizationString} -import _root_.coursier.core.{Classifier, Configuration} +import coursier.{Organization, Resolution, organizationString} +import coursier.core.{Classifier, Configuration} import coursier.cache.CacheDefaults +import coursier.util.Artifact import coursier.internal.Typelevel import lmcoursier.definitions.ToCoursier import lmcoursier.internal.{ArtifactsParams, ArtifactsRun, CoursierModuleDescriptor, InterProjectRepository, ResolutionParams, ResolutionRun, Resolvers, SbtBootJars, UpdateParams, UpdateRun} diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ArtifactsRun.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ArtifactsRun.scala index b67e64318..d60438b7c 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ArtifactsRun.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ArtifactsRun.scala @@ -2,10 +2,10 @@ package lmcoursier.internal import java.io.File -import coursier.Artifact import coursier.cache.internal.ThreadUtil import coursier.cache.loggers.{FallbackRefreshDisplay, ProgressBarRefreshDisplay, RefreshLogger} import coursier.core.Type +import coursier.util.Artifact import sbt.util.Logger // private[coursier] diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/InterProjectRepository.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/InterProjectRepository.scala index fbb3ad218..fe682df25 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/InterProjectRepository.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/InterProjectRepository.scala @@ -16,7 +16,7 @@ final case class InterProjectRepository(projects: Seq[Project]) extends Reposito fetch: Repository.Fetch[F] )(implicit F: Monad[F] - ): EitherT[F, String, (Artifact.Source, Project)] = { + ): EitherT[F, String, (ArtifactSource, Project)] = { val res = map .get((module, version)) diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala index 41c69fc74..93810a5b5 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala @@ -5,9 +5,10 @@ import java.net.URL import java.util.GregorianCalendar import java.util.concurrent.ConcurrentHashMap -import coursier.{Artifact, Attributes, Dependency, Module, Project, Resolution} +import coursier.{Attributes, Dependency, Module, Project, Resolution} import coursier.core.{Classifier, Configuration, Extension, Publication, Type} import coursier.maven.MavenAttributes +import coursier.util.Artifact import sbt.librarymanagement.{Artifact => _, Configuration => _, _} import sbt.util.Logger diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/TemporaryInMemoryRepository.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/TemporaryInMemoryRepository.scala index a5b7e0711..bf67a9681 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/TemporaryInMemoryRepository.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/TemporaryInMemoryRepository.scala @@ -5,7 +5,7 @@ import java.net.{HttpURLConnection, URL, URLConnection} import coursier.cache.{CacheUrl, FileCache} import coursier.core._ -import coursier.util.{EitherT, Monad} +import coursier.util.{Artifact, EitherT, Monad} import scala.util.Try @@ -142,11 +142,11 @@ final class TemporaryInMemoryRepository private( fetch: Repository.Fetch[F] )(implicit F: Monad[F] - ): EitherT[F, String, (Artifact.Source, Project)] = { + ): EitherT[F, String, (ArtifactSource, Project)] = { def res = fallbacks .get((module, version)) - .fold[Either[String, (Artifact.Source, Project)]](Left("No fallback URL found")) { + .fold[Either[String, (ArtifactSource, Project)]](Left("No fallback URL found")) { case (url, _) => val urlStr = url.toExternalForm diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/UpdateParams.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/UpdateParams.scala index 0b3b98fad..6b76c214c 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/UpdateParams.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/UpdateParams.scala @@ -3,6 +3,7 @@ package lmcoursier.internal import java.io.File import coursier.core._ +import coursier.util.Artifact // private[coursier] final case class UpdateParams( diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ArtifactsTasks.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ArtifactsTasks.scala index 4f1a16aba..a3292bf20 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ArtifactsTasks.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ArtifactsTasks.scala @@ -2,9 +2,9 @@ package coursier.sbtcoursier import java.io.File -import coursier.Artifact import coursier.cache.FileCache import coursier.core._ +import coursier.util.Artifact import lmcoursier.internal.{ArtifactsParams, ArtifactsRun} import coursier.sbtcoursier.Keys._ import coursier.sbtcoursiershared.InputsTasks.credentialsTask diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/Keys.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/Keys.scala index 1b896b0d6..4e4df6ad1 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/Keys.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/Keys.scala @@ -5,6 +5,7 @@ import java.io.File import coursier.cache.CachePolicy import coursier.ProjectCache import coursier.core._ +import coursier.util.Artifact import sbt.librarymanagement.{GetClassifiersModule, Resolver} import sbt.{InputKey, SettingKey, TaskKey} diff --git a/modules/sbt-shading/src/main/scala/coursier/Shading.scala b/modules/sbt-shading/src/main/scala/coursier/Shading.scala index 6f2ccdbd1..bc335fd62 100644 --- a/modules/sbt-shading/src/main/scala/coursier/Shading.scala +++ b/modules/sbt-shading/src/main/scala/coursier/Shading.scala @@ -5,6 +5,7 @@ import java.util.jar.JarInputStream import java.util.zip.{ZipEntry, ZipInputStream} import coursier.core.{Configuration, Orders} +import coursier.util.Artifact import org.pantsbuild.jarjar._ import org.pantsbuild.jarjar.util.CoursierJarProcessor From 59ec5d2b9599b502542f224fb1a67cc1f27cddae Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 14 Aug 2019 16:23:43 +0200 Subject: [PATCH 2/4] Add strict reconciliation, and versionReconciliation key --- .../src/main/contraband/module.json | 9 ++++++++- .../definitions/ModuleMatchers.scala | 20 ++++++++++++------- .../definitions/Reconciliation.scala | 16 ++++++++------- .../lmcoursier/definitions/ToCoursier.scala | 1 + .../sbtcoursiershared/SbtCoursierShared.scala | 7 +++++-- .../sbtcoursier/ResolutionTasks.scala | 14 ++++++++++++- .../shared-2/version-reconciliation/build.sbt | 19 ++++++++++++++++++ .../project/plugins.sbt | 13 ++++++++++++ .../shared-2/version-reconciliation/test | 2 ++ .../sbtlmcoursier/LmCoursierPlugin.scala | 13 +++++++++++- 10 files changed, 95 insertions(+), 19 deletions(-) create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/build.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/project/plugins.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/test diff --git a/modules/lm-coursier/src/main/contraband/module.json b/modules/lm-coursier/src/main/contraband/module.json index 75907e000..a53095667 100644 --- a/modules/lm-coursier/src/main/contraband/module.json +++ b/modules/lm-coursier/src/main/contraband/module.json @@ -38,11 +38,18 @@ "name": "include", "type": "Set[lmcoursier.definitions.Module]", "doc": "Use \"*\" in either organization or name to match any." + }, + { + "name": "includeByDefault", + "type": "Boolean", + "default": "true", + "since": "2.0.0-RC4" } ], "extraCompanion": [ "/** ModuleMatchers that matches to any modules. */", - "def all: ModuleMatchers = ModuleMatchers(Set.empty, Set.empty)" + "def all: ModuleMatchers = ModuleMatchers(Set.empty, Set.empty)", + "def only(mod: Module): ModuleMatchers = ModuleMatchers(Set.empty, Set(mod), includeByDefault = false)" ] } ] diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ModuleMatchers.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ModuleMatchers.scala index ff1646c42..2cdf51de8 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ModuleMatchers.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ModuleMatchers.scala @@ -10,22 +10,23 @@ package lmcoursier.definitions */ final class ModuleMatchers private ( val exclude: Set[lmcoursier.definitions.Module], - val include: Set[lmcoursier.definitions.Module]) extends Serializable { - + val include: Set[lmcoursier.definitions.Module], + val includeByDefault: Boolean) extends Serializable { + private def this(exclude: Set[lmcoursier.definitions.Module], include: Set[lmcoursier.definitions.Module]) = this(exclude, include, true) override def equals(o: Any): Boolean = o match { - case x: ModuleMatchers => (this.exclude == x.exclude) && (this.include == x.include) + case x: ModuleMatchers => (this.exclude == x.exclude) && (this.include == x.include) && (this.includeByDefault == x.includeByDefault) case _ => false } override def hashCode: Int = { - 37 * (37 * (37 * (17 + "lmcoursier.definitions.ModuleMatchers".##) + exclude.##) + include.##) + 37 * (37 * (37 * (37 * (17 + "lmcoursier.definitions.ModuleMatchers".##) + exclude.##) + include.##) + includeByDefault.##) } override def toString: String = { - "ModuleMatchers(" + exclude + ", " + include + ")" + "ModuleMatchers(" + exclude + ", " + include + ", " + includeByDefault + ")" } - private[this] def copy(exclude: Set[lmcoursier.definitions.Module] = exclude, include: Set[lmcoursier.definitions.Module] = include): ModuleMatchers = { - new ModuleMatchers(exclude, include) + private[this] def copy(exclude: Set[lmcoursier.definitions.Module] = exclude, include: Set[lmcoursier.definitions.Module] = include, includeByDefault: Boolean = includeByDefault): ModuleMatchers = { + new ModuleMatchers(exclude, include, includeByDefault) } def withExclude(exclude: Set[lmcoursier.definitions.Module]): ModuleMatchers = { copy(exclude = exclude) @@ -33,9 +34,14 @@ final class ModuleMatchers private ( def withInclude(include: Set[lmcoursier.definitions.Module]): ModuleMatchers = { copy(include = include) } + def withIncludeByDefault(includeByDefault: Boolean): ModuleMatchers = { + copy(includeByDefault = includeByDefault) + } } object ModuleMatchers { /** ModuleMatchers that matches to any modules. */ def all: ModuleMatchers = ModuleMatchers(Set.empty, Set.empty) + def only(mod: Module): ModuleMatchers = ModuleMatchers(Set.empty, Set(mod), includeByDefault = false) def apply(exclude: Set[lmcoursier.definitions.Module], include: Set[lmcoursier.definitions.Module]): ModuleMatchers = new ModuleMatchers(exclude, include) + def apply(exclude: Set[lmcoursier.definitions.Module], include: Set[lmcoursier.definitions.Module], includeByDefault: Boolean): ModuleMatchers = new ModuleMatchers(exclude, include, includeByDefault) } diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Reconciliation.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Reconciliation.scala index 9af154894..b44d8335b 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Reconciliation.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Reconciliation.scala @@ -1,13 +1,15 @@ -/** - * This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]]. - */ - -// DO NOT EDIT MANUALLY package lmcoursier.definitions sealed abstract class Reconciliation extends Serializable object Reconciliation { - - case object Default extends Reconciliation case object Relaxed extends Reconciliation + case object Strict extends Reconciliation + + def apply(input: String): Option[Reconciliation] = + input match { + case "default" => Some(Default) + case "relaxed" => Some(Relaxed) + case "strict" => Some(Strict) + case _ => None + } } diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala index e2296a575..abae8f2d8 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala @@ -49,6 +49,7 @@ object ToCoursier { r match { case Reconciliation.Default => coursier.core.Reconciliation.Default case Reconciliation.Relaxed => coursier.core.Reconciliation.Relaxed + case Reconciliation.Strict => coursier.core.Reconciliation.Strict } def reconciliation(rs: Vector[(ModuleMatchers, Reconciliation)]): diff --git a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala index be2de497a..544bca381 100644 --- a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala +++ b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala @@ -9,7 +9,8 @@ import lmcoursier.definitions.{CacheLogger, Configuration, Project, Publication} import lmcoursier.internal.SbtCoursierCache import sbt.{AutoPlugin, Classpaths, Compile, Setting, TaskKey, Test, settingKey, taskKey} import sbt.Keys._ -import sbt.librarymanagement.{Resolver, URLRepository} +import sbt.librarymanagement.DependencyBuilders.OrganizationArtifactName +import sbt.librarymanagement.{ModuleID, Resolver, URLRepository} object SbtCoursierShared extends AutoPlugin { @@ -35,6 +36,7 @@ object SbtCoursierShared extends AutoPlugin { val coursierFallbackDependencies = taskKey[Seq[FallbackDependency]]("") val mavenProfiles = settingKey[Set[String]]("") + val versionReconciliation = taskKey[Seq[ModuleID]]("") val coursierUseSbtCredentials = settingKey[Boolean]("") @deprecated("Use coursierExtraCredentials rather than coursierCredentials", "1.1.0-M14") @@ -166,7 +168,8 @@ object SbtCoursierShared extends AutoPlugin { confs ++ extraSources.toSeq ++ extraDocs.toSeq }, - mavenProfiles := Set.empty + mavenProfiles := Set.empty, + versionReconciliation := Seq.empty ) ++ { if (pubSettings) IvyXml.generateIvyXmlSettings() diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala index b6af7f239..f20518f2e 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala @@ -10,6 +10,7 @@ import lmcoursier.internal.{InterProjectRepository, ResolutionParams, Resolution import coursier.sbtcoursier.Keys._ import coursier.sbtcoursiershared.InputsTasks.{credentialsTask, strictTask} import coursier.sbtcoursiershared.SbtCoursierShared.autoImport._ +import coursier.util.{ModuleMatcher, ModuleMatchers} import sbt.Def import sbt.Keys._ @@ -75,6 +76,16 @@ object ResolutionTasks { val verbosityLevel = coursierVerbosity.value val userEnabledProfiles = mavenProfiles.value + val versionReconciliations0 = versionReconciliation.value.map { mod => + Reconciliation(mod.revision) match { + case Some(rec) => + val (mod0, _) = FromSbt.moduleVersion(mod, sv, sbv) + val matcher = ModuleMatchers.only(Organization(mod0.organization.value), ModuleName(mod0.name.value)) + matcher -> rec + case None => + throw new Exception(s"Unrecognized reconciliation: '${mod.revision}'") + } + } val typelevel = Organization(scalaOrganization.value) == Typelevel.typelevelOrg @@ -141,7 +152,8 @@ object ResolutionTasks { .withMaxIterations(maxIterations) .withProfiles(userEnabledProfiles) .withForceVersion(userForceVersions.map { case (k, v) => (ToCoursier.module(k), v) }.toMap) - .withTypelevel(typelevel), + .withTypelevel(typelevel) + .addReconciliation(versionReconciliations0: _*), strictOpt = strictOpt ), verbosityLevel, diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/build.sbt new file mode 100644 index 000000000..efdcfa4d7 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/build.sbt @@ -0,0 +1,19 @@ + +lazy val shared = Seq( + scalaVersion := "2.12.8", + libraryDependencies ++= Seq( + "com.github.alexarchambault" %% "argonaut-shapeless_6.2" % "1.2.0-M4", + "com.chuusai" %% "shapeless" % "2.3.3" + ), + versionReconciliation += "*" % "*" % "strict" +) + +lazy val a = project + .settings(shared) + +lazy val b = project + .settings(shared) + .settings( + // strict cm should be fine if we force the conflicting module version + dependencyOverrides += "com.chuusai" %% "shapeless" % "2.3.3" + ) diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/project/plugins.sbt new file mode 100644 index 000000000..71a44ffd3 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/project/plugins.sbt @@ -0,0 +1,13 @@ +addSbtPlugin { + + val name = sys.props.getOrElse( + "plugin.name", + sys.error("plugin.name Java property not set") + ) + val version = sys.props.getOrElse( + "plugin.version", + sys.error("plugin.version Java property not set") + ) + + "io.get-coursier" % name % version +} \ No newline at end of file diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/test b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/test new file mode 100644 index 000000000..0de45305f --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/version-reconciliation/test @@ -0,0 +1,2 @@ +-> a/update +> b/update diff --git a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala index ddc3a9021..b6bac8e3e 100644 --- a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala +++ b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala @@ -1,6 +1,6 @@ package coursier.sbtlmcoursier -import lmcoursier.definitions.Authentication +import lmcoursier.definitions.{Authentication, ModuleMatchers, Reconciliation} import lmcoursier.{CoursierConfiguration, CoursierDependencyResolution, Inputs} import coursier.sbtcoursiershared.InputsTasks.{credentialsTask, strictTask} import coursier.sbtcoursiershared.{InputsTasks, SbtCoursierShared} @@ -95,6 +95,16 @@ object LmCoursierPlugin extends AutoPlugin { val fallbackDeps = coursierFallbackDependencies.value val autoScalaLib = autoScalaLibrary.value && scalaModuleInfo.value.forall(_.overrideScalaVersion) val profiles = mavenProfiles.value + val versionReconciliations0 = versionReconciliation.value.map { mod => + Reconciliation(mod.revision) match { + case Some(rec) => + val (mod0, _) = lmcoursier.FromSbt.moduleVersion(mod, scalaVer, sbv) + val matcher = ModuleMatchers.only(mod0) + matcher -> rec + case None => + throw new Exception(s"Unrecognized reconciliation: '${mod.revision}'") + } + } val userForceVersions = Inputs.forceVersions(dependencyOverrides.value, scalaVer, sbv) @@ -138,6 +148,7 @@ object LmCoursierPlugin extends AutoPlugin { .withClassifiers(classifiers.toVector.flatten) .withHasClassifiers(classifiers.nonEmpty) .withMavenProfiles(profiles.toVector.sorted) + .withReconciliation(versionReconciliations0.toVector) .withScalaOrganization(scalaOrg) .withScalaVersion(scalaVer) .withAuthenticationByRepositoryId(authenticationByRepositoryId.toVector.sortBy(_._1)) From 064978ac4283e8ccd3beece0ca3441ab34faa903 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 14 Aug 2019 16:48:31 +0200 Subject: [PATCH 3/4] Enable extra strict conflict manager test --- .../src/sbt-test/shared-2/strict-conflict-manager/test | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/strict-conflict-manager/test b/modules/sbt-coursier/src/sbt-test/shared-2/strict-conflict-manager/test index 4599d10e8..0de45305f 100644 --- a/modules/sbt-coursier/src/sbt-test/shared-2/strict-conflict-manager/test +++ b/modules/sbt-coursier/src/sbt-test/shared-2/strict-conflict-manager/test @@ -1,3 +1,2 @@ -> a/update -# enable once when we bump the coursier version -# > b/update +> b/update From f97b0860d3ffeb15c5fa11dc5555973b3e6ce1b9 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 14 Aug 2019 17:07:48 +0200 Subject: [PATCH 4/4] Less verbose output during shading --- modules/sbt-shading/src/main/scala/coursier/Shading.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/sbt-shading/src/main/scala/coursier/Shading.scala b/modules/sbt-shading/src/main/scala/coursier/Shading.scala index bc335fd62..51ccde956 100644 --- a/modules/sbt-shading/src/main/scala/coursier/Shading.scala +++ b/modules/sbt-shading/src/main/scala/coursier/Shading.scala @@ -203,7 +203,7 @@ object Shading { rename(cls, shadingNamespace + ".@0") } - val processor = JJProcessor(nsRules ++ clsRules, verbose = true, skipManifest = false) + val processor = JJProcessor(nsRules ++ clsRules, verbose = false, skipManifest = false) CoursierJarProcessor.run((baseJar +: toShadeJars).toArray, outputJar, processor.proc, true) outputJar