summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sc11
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala4
-rw-r--r--scalalib/src/mill/scalalib/GenIdea.scala2
-rw-r--r--scalalib/src/mill/scalalib/JavaModule.scala25
-rw-r--r--scalalib/src/mill/scalalib/Lib.scala22
-rw-r--r--scalalib/src/mill/scalalib/PublishModule.scala18
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala37
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala4
-rw-r--r--scalalib/src/mill/scalalib/publish/settings.scala14
-rw-r--r--scalalib/test/src/mill/scalalib/ResolveDepsTests.scala6
10 files changed, 70 insertions, 73 deletions
diff --git a/build.sc b/build.sc
index 1890edf2..ee5777c4 100755
--- a/build.sc
+++ b/build.sc
@@ -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..59b7cc63 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
)
}
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(
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 - {