diff options
Diffstat (limited to 'scalalib/src')
-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 | 18 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/ScalaModule.scala | 37 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 4 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/publish/settings.scala | 14 |
7 files changed, 57 insertions, 65 deletions
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..90ce7058 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, @@ -274,6 +277,4 @@ trait JavaModule extends mill.Module with TaskModule { outer => // publish artifact with name "mill_2.12.4" instead of "mill_2.12" def artifactName: T[String] = millModuleSegments.parts.mkString("-") - - def artifactSuffix: T[String] = T { "" } }
\ 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..bafcb73a 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -9,28 +9,26 @@ 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()), + Artifact(pomSettings().organization, artifactName(), 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)) } def pom = T { - val pom = Pom(artifactMetadata(), publishXmlDeps(), artifactId(), pomSettings()) - val pomPath = T.ctx().dest / s"${artifactId()}-${publishVersion()}.pom" + val pom = Pom(artifactMetadata(), publishXmlDeps(), artifactName(), pomSettings()) + val pomPath = T.ctx().dest / s"${artifactName()}-${publishVersion()}.pom" write.over(pomPath, pom) PathRef(pomPath) } @@ -43,7 +41,7 @@ trait PublishModule extends ScalaModule { outer => } def artifactMetadata: T[Artifact] = T { - Artifact(pomSettings().organization, artifactId(), publishVersion()) + Artifact(pomSettings().organization, artifactName(), publishVersion()) } def publishLocal(): define.Command[Unit] = T.command { @@ -62,7 +60,7 @@ trait PublishModule extends ScalaModule { outer => def sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots" def publishArtifacts = T{ - val baseName = s"${artifactId()}-${publishVersion()}" + val baseName = s"${artifactName()}-${publishVersion()}" PublishModule.PublishData( artifactMetadata(), Seq( diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index b3013d57..69a06efb 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(_, scalaVersion(), 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,8 @@ trait ScalaModule extends JavaModule { outer => else Lib.scalaBinaryVersion(scalaVersion()) } - override def artifactSuffix: T[String] = T { s"_${artifactScalaVersion()}" } + def artifactSuffix: T[String] = T { s"_${artifactScalaVersion()}" } + override def artifactName: T[String] = T { s"${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( |