summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-06-09 11:44:56 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-06-09 11:49:02 -0700
commit9d65a0e06338611bbc36854123683f29929e6e08 (patch)
treea10c3cebaa92c3cb11eb11af30768acdddb225f7
parentecb931f769080c89f17f76e51840c560ed079d57 (diff)
downloadmill-9d65a0e06338611bbc36854123683f29929e6e08.tar.gz
mill-9d65a0e06338611bbc36854123683f29929e6e08.tar.bz2
mill-9d65a0e06338611bbc36854123683f29929e6e08.zip
avoid duplicating core scala libraries during artifact resolution to fix https://github.com/lihaoyi/mill/issues/368
-rw-r--r--scalalib/src/mill/scalalib/JavaModule.scala9
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala6
-rw-r--r--scalalib/test/src/mill/scalalib/HelloWorldTests.scala2
3 files changed, 13 insertions, 4 deletions
diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala
index 79fad9aa..de838794 100644
--- a/scalalib/src/mill/scalalib/JavaModule.scala
+++ b/scalalib/src/mill/scalalib/JavaModule.scala
@@ -76,7 +76,7 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
)().flatten
}
- def mapDependencies(d: coursier.Dependency) = d
+ def mapDependencies = T.task{ d: coursier.Dependency => d }
def resolveDeps(deps: Task[Agg[Dep]], sources: Boolean = false) = T.task{
resolveDependencies(
@@ -84,7 +84,7 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
resolveCoursierDependency().apply(_),
deps(),
sources,
- mapDependencies = Some(mapDependencies)
+ mapDependencies = Some(mapDependencies())
)
}
@@ -239,7 +239,10 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
def ivyDepsTree(inverse: Boolean = false) = T.command {
val (flattened, resolution) = Lib.resolveDependenciesMetadata(
- repositories, resolveCoursierDependency().apply(_), transitiveIvyDeps(), Some(mapDependencies)
+ repositories,
+ resolveCoursierDependency().apply(_),
+ transitiveIvyDeps(),
+ Some(mapDependencies())
)
println(coursier.util.Print.dependencyTree(flattened, resolution,
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index 7e885415..a6f4d482 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -29,6 +29,12 @@ trait ScalaModule extends JavaModule { outer =>
}
def scalaVersion: T[String]
+ override def mapDependencies = T.task{ d: coursier.Dependency =>
+ val artifacts = Set("scala-library", "scala-compiler", "scala-reflect")
+ if (d.module.organization != "org.scala-lang" || !artifacts(d.module.name)) d
+ else d.copy(version = scalaVersion())
+ }
+
override def resolveCoursierDependency: Task[Dep => coursier.Dependency] = T.task{
Lib.depToDependency(_: Dep, scalaVersion(), platformSuffix())
}
diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
index 81a5b8a6..7a1dd6df 100644
--- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
+++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
@@ -190,7 +190,7 @@ object HelloWorldTests extends TestSuite {
object HelloWorldTypeLevel extends HelloBase{
object foo extends ScalaModule {
def scalaVersion = "2.11.8"
- override def mapDependencies(d: coursier.Dependency) = {
+ override def mapDependencies = T.task{ d: coursier.Dependency =>
val artifacts = Set("scala-library", "scala-compiler", "scala-reflect")
if (d.module.organization != "org.scala-lang" || !artifacts(d.module.name)) d
else d.copy(module = d.module.copy(organization = "org.typelevel"))