diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-04-07 19:19:29 -0700 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-04-07 19:19:29 -0700 |
commit | 19021b773438e24da47f6d0e94e69e5f58625cac (patch) | |
tree | 470a3c5d7e8fdd864e6487a13ac13ac88a289fd8 | |
parent | 9598b243d7c5108a99fd98860810f71f6302aec1 (diff) | |
parent | 9c0564f6c86fdd1b2b0d26fc339e4066296f6781 (diff) | |
download | mill-19021b773438e24da47f6d0e94e69e5f58625cac.tar.gz mill-19021b773438e24da47f6d0e94e69e5f58625cac.tar.bz2 mill-19021b773438e24da47f6d0e94e69e5f58625cac.zip |
Merge branch 'master' into client-java
-rwxr-xr-x | build.sc | 11 | ||||
-rw-r--r-- | scalajslib/src/mill/scalajslib/ScalaJSModule.scala | 8 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/GenIdea.scala | 2 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/JavaModule.scala | 25 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/Lib.scala | 22 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/PublishModule.scala | 8 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/ScalaModule.scala | 39 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 4 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/publish/settings.scala | 14 | ||||
-rw-r--r-- | scalalib/test/src/mill/scalalib/HelloWorldTests.scala | 2 | ||||
-rw-r--r-- | scalalib/test/src/mill/scalalib/ResolveDepsTests.scala | 6 |
11 files changed, 69 insertions, 72 deletions
@@ -11,7 +11,7 @@ import publish._ import mill.modules.Jvm.createAssembly import upickle.Js trait MillPublishModule extends PublishModule{ - def scalaVersion = "2.12.4" + def artifactName = "mill-" + super.artifactName() def publishVersion = build.publishVersion()._2 @@ -27,17 +27,18 @@ trait MillPublishModule extends PublishModule{ ) def javacOptions = Seq("-source", "1.8", "-target", "1.8") - } -object moduledefs extends MillPublishModule{ + +object moduledefs extends MillPublishModule with ScalaModule{ + def scalaVersion = T{ "2.12.4" } def ivyDeps = Agg( ivy"org.scala-lang:scala-compiler:${scalaVersion()}", ivy"com.lihaoyi::sourcecode:0.1.4" ) } -trait MillModule extends MillPublishModule{ outer => - +trait MillModule extends MillPublishModule with ScalaModule{ outer => + def scalaVersion = T{ "2.12.4" } def compileIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7") def scalacOptions = Seq("-P:acyclic:force") def scalacPluginIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7") diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index bddf894e..dbf693ff 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -36,7 +36,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => MavenRepository("https://repo1.maven.org/maven2"), MavenRepository("https://oss.sonatype.org/content/repositories/releases") ), - "2.12.4", + Lib.depToDependency(_, "2.12.4", ""), Seq( ivy"com.lihaoyi::mill-scalajslib-jsbridges-${scalaJSBridgeVersion()}:${sys.props("MILL_VERSION")}" ) @@ -54,7 +54,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => } resolveDependencies( repositories, - "2.12.4", + Lib.depToDependency(_, "2.12.4", ""), commonDeps :+ envDep ) } @@ -150,9 +150,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => else scalaJSBinaryVersion() } - override def artifactSuffix: T[String] = T { - s"_sjs${artifactScalaJSVersion()}_${artifactScalaVersion()}" - } + override def artifactSuffix: T[String] = s"${platformSuffix()}_${artifactScalaVersion()}" override def platformSuffix = s"_sjs${artifactScalaJSVersion()}" diff --git a/scalalib/src/mill/scalalib/GenIdea.scala b/scalalib/src/mill/scalalib/GenIdea.scala index 183d4a79..3b30d38f 100644 --- a/scalalib/src/mill/scalalib/GenIdea.scala +++ b/scalalib/src/mill/scalalib/GenIdea.scala @@ -74,7 +74,7 @@ object GenIdea { val artifactNames = Seq("moduledefs", "core", "scalalib", "scalajslib") val Result.Success(res) = scalalib.Lib.resolveDependencies( repos.toList, - "2.12.4", + Lib.depToDependency(_, "2.12.4", ""), for(name <- artifactNames) yield ivy"com.lihaoyi::mill-$name:${sys.props("MILL_VERSION")}" ) diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index 19b81d43..e2b461b5 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -1,20 +1,17 @@ package mill package scalalib -import java.nio.charset.Charset -import java.util -import javax.tools.{JavaFileObject, SimpleJavaFileObject, StandardJavaFileManager, ToolProvider} import ammonite.ops._ -import coursier.{Dependency, Repository} +import coursier.Repository import mill.define.Task import mill.define.TaskModule import mill.eval.{PathRef, Result} -import mill.modules.{Jvm, Util} -import mill.modules.Jvm.{createAssembly, createJar, subprocess} +import mill.modules.Jvm +import mill.modules.Jvm.{createAssembly, createJar} import Lib._ +import mill.scalalib.publish.{Artifact, Scope} import mill.util.Loose.Agg -import mill.util.DummyInputStream /** * Core configuration required to compile a single Scala compilation target @@ -24,6 +21,13 @@ trait JavaModule extends mill.Module with TaskModule { outer => def defaultCommandName() = "run" + def resolvePublishDependency: Task[Dep => publish.Dependency] = T.task{ + Artifact.fromDepJava(_: Dep) + } + def resolveCoursierDependency: Task[Dep => coursier.Dependency] = T.task{ + Lib.depToDependencyJava(_: Dep) + } + def mainClass: T[Option[String]] = None def finalMainClassOpt: T[Either[String, String]] = T{ @@ -74,9 +78,8 @@ trait JavaModule extends mill.Module with TaskModule { outer => def resolveDeps(deps: Task[Agg[Dep]], sources: Boolean = false) = T.task{ resolveDependencies( repositories, - "???", + resolveCoursierDependency().apply(_), deps(), - platformSuffix(), sources, mapDependencies = Some(mapDependencies) ) @@ -223,7 +226,7 @@ trait JavaModule extends mill.Module with TaskModule { outer => def ivyDepsTree(inverse: Boolean = false) = T.command { val (flattened, resolution) = Lib.resolveDependenciesMetadata( - repositories, "???", ivyDeps(), platformSuffix(), Some(mapDependencies) + repositories, resolveCoursierDependency().apply(_), ivyDeps(), Some(mapDependencies) ) println(coursier.util.Print.dependencyTree(flattened, resolution, @@ -275,5 +278,5 @@ trait JavaModule extends mill.Module with TaskModule { outer => def artifactName: T[String] = millModuleSegments.parts.mkString("-") - def artifactSuffix: T[String] = T { "" } + def artifactId: T[String] = artifactName() }
\ No newline at end of file diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/mill/scalalib/Lib.scala index 26c9a0df..147e275d 100644 --- a/scalalib/src/mill/scalalib/Lib.scala +++ b/scalalib/src/mill/scalalib/Lib.scala @@ -34,16 +34,22 @@ object Lib{ .toIO } - def depToDependency(dep: Dep, scalaVersion: String, platformSuffix: String = ""): Dependency = + + def depToDependencyJava(dep: Dep, platformSuffix: String = ""): Dependency = { dep match { case Dep.Java(dep, cross, force) => dep.copy( module = dep.module.copy( name = dep.module.name + - (if (!cross) "" else platformSuffix) + (if (!cross) "" else platformSuffix) ) ) + } + } + def depToDependency(dep: Dep, scalaVersion: String, platformSuffix: String = ""): Dependency = + dep match { + case d: Dep.Java => depToDependencyJava(dep) case Dep.Scala(dep, cross, force) => dep.copy( module = dep.module.copy( @@ -66,15 +72,14 @@ object Lib{ def resolveDependenciesMetadata(repositories: Seq[Repository], - scalaVersion: String, + depToDependency: Dep => coursier.Dependency, deps: TraversableOnce[Dep], - platformSuffix: String = "", mapDependencies: Option[Dependency => Dependency] = None) = { val depSeq = deps.toSeq - val flattened = depSeq.map(depToDependency(_, scalaVersion, platformSuffix)) + val flattened = depSeq.map(depToDependency) val forceVersions = depSeq.filter(_.force) - .map(depToDependency(_, scalaVersion, platformSuffix)) + .map(depToDependency) .map(mapDependencies.getOrElse(identity[Dependency](_))) .map{d => d.module -> d.version} .toMap @@ -97,14 +102,13 @@ object Lib{ * `import $ivy` syntax. */ def resolveDependencies(repositories: Seq[Repository], - scalaVersion: => String, + depToDependency: Dep => coursier.Dependency, deps: TraversableOnce[Dep], - platformSuffix: String = "", sources: Boolean = false, mapDependencies: Option[Dependency => Dependency] = None): Result[Agg[PathRef]] = { val (_, resolution) = resolveDependenciesMetadata( - repositories, scalaVersion, deps, platformSuffix, mapDependencies + repositories, depToDependency, deps, mapDependencies ) val errs = resolution.metadataErrors if(errs.nonEmpty) { diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index 3cc9fd30..2ab81269 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -9,22 +9,20 @@ import mill.util.Loose.Agg /** * Configuration necessary for publishing a Scala module to Maven Central or similar */ -trait PublishModule extends ScalaModule { outer => +trait PublishModule extends JavaModule { outer => import mill.scalalib.publish._ override def moduleDeps = Seq.empty[PublishModule] def pomSettings: T[PomSettings] def publishVersion: T[String] - def artifactId: T[String] = T { s"${artifactName()}${artifactSuffix()}" } + def publishSelfDependency = T{ Artifact(pomSettings().organization, artifactId(), publishVersion()), } def publishXmlDeps = T.task{ - val ivyPomDeps = ivyDeps().map( - Artifact.fromDep(_, scalaVersion(), Lib.scalaBinaryVersion(scalaVersion())) - ) + val ivyPomDeps = ivyDeps().map(resolvePublishDependency().apply(_)) val modulePomDeps = Task.sequence(moduleDeps.map(_.publishSelfDependency))() ivyPomDeps ++ modulePomDeps.map(Dependency(_, Scope.Compile)) } diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index b3013d57..5d71a1a9 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -2,12 +2,12 @@ package mill package scalalib import ammonite.ops._ -import coursier.{Dependency, Repository} +import coursier.Repository import mill.define.Task import mill.define.TaskModule import mill.eval.{PathRef, Result} import mill.modules.Jvm -import mill.modules.Jvm.{createAssembly, createJar, subprocess} +import mill.modules.Jvm.{createJar, subprocess} import Lib._ import mill.util.Loose.Agg import mill.util.DummyInputStream @@ -27,7 +27,13 @@ trait ScalaModule extends JavaModule { outer => } def scalaVersion: T[String] + override def resolveCoursierDependency: Task[Dep => coursier.Dependency] = T.task{ + Lib.depToDependency(_: Dep, scalaVersion(), platformSuffix()) + } + override def resolvePublishDependency: Task[Dep => publish.Dependency] = T.task{ + publish.Artifact.fromDep(_: Dep, scalaVersion(), Lib.scalaBinaryVersion(scalaVersion())) + } override def finalMainClassOpt: T[Either[String, String]] = T{ mainClass() match{ @@ -62,7 +68,7 @@ trait ScalaModule extends JavaModule { outer => resolveDependencies( repositories, - scalaVersion0, + Lib.depToDependency(_, scalaVersion0, platformSuffix()), Seq(ivy"org.scala-sbt::compiler-bridge:1.1.0"), sources = true ).map(_.find(_.path.last == s"compiler-bridge_${scalaBinaryVersion0}-1.1.0-sources.jar").map(_.path).get) @@ -108,17 +114,6 @@ trait ScalaModule extends JavaModule { outer => ) } - override def ivyDepsTree(inverse: Boolean = false) = T.command { - val (flattened, resolution) = Lib.resolveDependenciesMetadata( - repositories, scalaVersion(), ivyDeps(), platformSuffix(), Some(mapDependencies) - ) - - println(coursier.util.Print.dependencyTree(flattened, resolution, - printExclusions = false, reverse = inverse)) - - Result.Success() - } - override def docJar = T { val outDir = T.ctx().dest @@ -157,17 +152,6 @@ trait ScalaModule extends JavaModule { outer => } } - override def resolveDeps(deps: Task[Agg[Dep]], sources: Boolean = false) = T.task{ - resolveDependencies( - repositories, - scalaVersion(), - deps(), - platformSuffix(), - sources, - mapDependencies = Some(mapDependencies) - ) - } - def ammoniteReplClasspath = T{ localClasspath() ++ transitiveLocalClasspath() ++ @@ -201,7 +185,10 @@ trait ScalaModule extends JavaModule { outer => else Lib.scalaBinaryVersion(scalaVersion()) } - override def artifactSuffix: T[String] = T { s"_${artifactScalaVersion()}" } + def artifactSuffix: T[String] = s"_${artifactScalaVersion()}" + + override def artifactId: T[String] = artifactName() + artifactSuffix() + } diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala index 7b8f2a20..698edc10 100644 --- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala +++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala @@ -29,7 +29,7 @@ trait ScalaWorkerModule extends mill.Module{ } else { resolveDependencies( repositories, - "2.12.4", + Lib.depToDependency(_, "2.12.4", ""), Seq(ivy"com.lihaoyi::mill-scalaworker:${sys.props("MILL_VERSION")}") ).map(_.map(_.path)) } @@ -48,7 +48,7 @@ trait ScalaWorkerModule extends mill.Module{ def compilerInterfaceClasspath = T{ resolveDependencies( repositories, - "2.12.4", + Lib.depToDependency(_, "2.12.4", ""), Seq(ivy"org.scala-sbt:compiler-interface:1.1.0") ) } diff --git a/scalalib/src/mill/scalalib/publish/settings.scala b/scalalib/src/mill/scalalib/publish/settings.scala index 596f29c9..2cd92eb2 100644 --- a/scalalib/src/mill/scalalib/publish/settings.scala +++ b/scalalib/src/mill/scalalib/publish/settings.scala @@ -7,18 +7,22 @@ case class Artifact(group: String, id: String, version: String) { } object Artifact { - - def fromDep(dep: Dep, - scalaFull: String, - scalaBin: String): Dependency = { + def fromDepJava(dep: Dep) = { dep match { case Dep.Java(dep, cross, force) => Dependency( Artifact(dep.module.organization, dep.module.name, dep.version), Scope.Compile, - if (dep.configuration == "" ) None else Some(dep.configuration), + if (dep.configuration == "") None else Some(dep.configuration), dep.exclusions.toList ) + } + } + def fromDep(dep: Dep, + scalaFull: String, + scalaBin: String): Dependency = { + dep match { + case d: Dep.Java => fromDepJava(d) case Dep.Scala(dep, cross, force) => Dependency( Artifact( diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala index d6980314..21589766 100644 --- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala +++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala @@ -476,6 +476,4 @@ object HelloWorldTests extends TestSuite { } } } - - } diff --git a/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala b/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala index 861fa312..4240478c 100644 --- a/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala +++ b/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala @@ -10,7 +10,11 @@ import utest._ object ResolveDepsTests extends TestSuite { val repos = Seq(Cache.ivy2Local, MavenRepository("https://repo1.maven.org/maven2")) - def evalDeps(deps: Agg[Dep]): Result[Agg[PathRef]] = Lib.resolveDependencies(repos, "2.12.4", deps) + def evalDeps(deps: Agg[Dep]): Result[Agg[PathRef]] = Lib.resolveDependencies( + repos, + Lib.depToDependency(_, "2.12.4", ""), + deps + ) val tests = Tests { 'resolveValidDeps - { |