diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionParams.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionParams.scala index c71765dfa..1ffd58655 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionParams.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionParams.scala @@ -44,11 +44,6 @@ final case class ResolutionParams( ) } - val repositories = - internalRepositories ++ - mainRepositories ++ - fallbackDependenciesRepositories - lazy val resolutionKey = { val cleanCache = cache .withPool(null) @@ -56,7 +51,9 @@ final case class ResolutionParams( .withSync[Task](null) SbtCoursierCache.ResolutionKey( dependencies, - repositories, + internalRepositories, + mainRepositories, + fallbackDependenciesRepositories, copy( parentProjectCache = Map.empty, loggerOpt = None, diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionRun.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionRun.scala index d7b70912c..bd5993aab 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionRun.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/ResolutionRun.scala @@ -19,11 +19,18 @@ object ResolutionRun { configs: Set[Configuration] ): Either[coursier.error.ResolutionError, Resolution] = { - val rules = params.strictOpt.map(s => Seq((s, RuleResolution.Fail))).getOrElse(Nil) - val isCompileConfig = + configs(Configuration.compile) + val isCompileOrScalaToolConfig = configs(Configuration.compile) || configs(Configuration("scala-tool")) + val repositories = + params.internalRepositories.drop(if (isCompileConfig) 0 else 1) ++ + params.mainRepositories ++ + params.fallbackDependenciesRepositories + + val rules = params.strictOpt.map(s => Seq((s, RuleResolution.Fail))).getOrElse(Nil) + val printOptionalMessage = verbosityLevel >= 0 && verbosityLevel <= 1 def depsRepr(deps: Seq[(Configuration, Dependency)]) = @@ -46,7 +53,7 @@ object ResolutionRun { ).flatten.mkString("\n") if (verbosityLevel >= 2) { - val repoReprs = params.repositories.map { + val repoReprs = repositories.map { case r: IvyRepository => s"ivy:${r.pattern}" case _: InterProjectRepository => @@ -76,14 +83,14 @@ object ResolutionRun { dep } ) - .withRepositories(params.repositories) + .withRepositories(repositories) .withResolutionParams( params .params - .addForceVersion(params.interProjectDependencies.map(_.moduleVersion): _*) - .withForceScalaVersion(isCompileConfig && params.autoScalaLibOpt.nonEmpty) + .addForceVersion((if (isCompileConfig) params.interProjectDependencies.map(_.moduleVersion) else Nil): _*) + .withForceScalaVersion(isCompileOrScalaToolConfig && params.autoScalaLibOpt.nonEmpty) .withScalaVersion(params.autoScalaLibOpt.map(_._2)) - .withTypelevel(params.params.typelevel && isCompileConfig) + .withTypelevel(params.params.typelevel && isCompileOrScalaToolConfig) .withRules(rules) ) .withCache( diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtCoursierCache.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtCoursierCache.scala index f46e58942..572059cc7 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtCoursierCache.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtCoursierCache.scala @@ -41,7 +41,9 @@ object SbtCoursierCache { final case class ResolutionKey( dependencies: Seq[(Configuration, Dependency)], - repositories: Seq[Repository], + internalRepositories: Seq[Repository], + mainRepositories: Seq[Repository], + fallbackRepositories: Seq[Repository], params: ResolutionParams, tmpCacheKey: Object, // temporary, until we can use https://github.com/coursier/coursier/pull/1090 sbtClassifiers: Boolean diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/build.sbt new file mode 100644 index 000000000..a82f1b0fe --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/build.sbt @@ -0,0 +1,5 @@ +scalaVersion := "2.12.9" +crossScalaVersions := Seq("2.12.8", "2.12.9") // shouldn't be the same version as coursier - putting two versions here to be sure one of them isn't +organization := "org.scala-lang.modules" +name := "scala-xml" +version := "2.0.0-SNAPSHOT" diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/project/plugins.sbt new file mode 100644 index 000000000..71a44ffd3 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/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-1/inter-project-scala-tool/src/main/scala/Main.scala b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/src/main/scala/Main.scala new file mode 100644 index 000000000..8c165902f --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/src/main/scala/Main.scala @@ -0,0 +1,13 @@ +import java.io.File +import java.nio.file.Files + + +/** + * Azertyuiopqsdfghjklmwxcvbn + * + * @author A + * @param may not be `'''null'''`!!! + */ +object Main extends App { + Files.write(new File("output").toPath, "OK".getBytes("UTF-8")) +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/test b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/test new file mode 100644 index 000000000..d7c624ab5 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/inter-project-scala-tool/test @@ -0,0 +1 @@ +> +doc