Skip to content

Commit 353f304

Browse files
authored
Add Dep.millProjectModule to refer to mill project modules (#4790)
This is meant as a replacement for `mill.util.ModuleUtils.millProjectModule`, which I annotated as deprecated. The main motivation for this change is to handle mill module dependencies more regular. Since they can be resolved together with other dependencies, this should result in better conflict resolution. The older API rather forces us to concat two potential redundant or conflicting classpaths. There is one last usage of the older `ModuleUtils.millProjectModule` from `VisualizeModule`, which resides in `mill.main` and can't access `CoursierModule` or `Dep`. Don't know how to best handle it. Pull request: #4790
1 parent 69d8de9 commit 353f304

File tree

17 files changed

+94
-105
lines changed

17 files changed

+94
-105
lines changed

bsp/src/mill/bsp/BSP.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ import mill.api.{Ctx, PathRef}
44
import mill.{T, Task, given}
55
import mill.define.{Command, Discover, Evaluator, ExternalModule}
66
import mill.main.BuildInfo
7-
import mill.util.MillModuleUtil.millProjectModule
8-
import mill.scalalib.CoursierModule
7+
import mill.scalalib.{CoursierModule, Dep}
98

109
object BSP extends ExternalModule with CoursierModule {
1110

1211
lazy val millDiscover = Discover[this.type]
1312

1413
private def bspWorkerLibs: T[Seq[PathRef]] = Task {
15-
millProjectModule("mill-bsp-worker", repositoriesTask())
14+
defaultResolver().classpath(Seq(Dep.millProjectModule("mill-bsp-worker")))
1615
}
1716

1817
/**

contrib/playlib/src/mill/playlib/RouterModule.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package mill.playlib
22

33
import mill.api.PathRef
4-
import mill.util.MillModuleUtil.millProjectModule
54
import mill.playlib.api.RouteCompilerType
65
import mill.scalalib._
76
import mill.scalalib.api._
@@ -75,15 +74,16 @@ trait RouterModule extends ScalaModule with Version {
7574
}
7675

7776
def playRouteCompilerWorkerClasspath = Task {
78-
millProjectModule(
79-
s"mill-contrib-playlib-worker-${playMinorVersion()}",
80-
repositoriesTask(),
81-
artifactSuffix = playMinorVersion() match {
77+
val minorVersion = playMinorVersion()
78+
val dep = Dep.millProjectModule(
79+
s"mill-contrib-playlib-worker-${minorVersion}",
80+
artifactSuffix = minorVersion match {
8281
case "2.6" => "_2.12"
8382
case "2.7" | "2.8" => "_2.13"
8483
case _ => "_3"
8584
}
8685
)
86+
defaultResolver().classpath(Seq(dep))
8787
}
8888

8989
def playRouterToolsClasspath = Task {

contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import mill.contrib.scoverage.api.ScoverageReportWorkerApi2.ReportType
77
import mill.main.BuildInfo
88
import mill.scalalib.api.ZincWorkerUtil
99
import mill.scalalib.{Dep, DepSyntax, JavaModule, ScalaModule}
10-
import mill.util.MillModuleUtil.millProjectModule
1110

1211
/**
1312
* Adds targets to a [[mill.scalalib.ScalaModule]] to create test coverage reports.
@@ -121,12 +120,9 @@ trait ScoverageModule extends ScalaModule { outer: ScalaModule =>
121120
}
122121

123122
def scoverageReportWorkerClasspath: T[Seq[PathRef]] = Task {
124-
val workerArtifact = "mill-contrib-scoverage-worker2"
125-
126-
millProjectModule(
127-
workerArtifact,
128-
repositoriesTask()
129-
)
123+
defaultResolver().classpath(Seq(
124+
Dep.millProjectModule("mill-contrib-scoverage-worker2")
125+
))
130126
}
131127

132128
/** Inner worker module. This is not an `object` to allow users to override and customize it. */

contrib/testng/test/src/mill/testng/TestNGTests.scala

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package mill
2-
package testng
1+
package mill.testng
32

3+
import mill.*
44
import mill.define.{Discover, Target}
5-
import mill.util.MillModuleUtil.millProjectModule
65
import mill.scalalib.*
76
import mill.testkit.UnitTester
87
import mill.testkit.TestBaseModule
@@ -13,23 +12,13 @@ object TestNGTests extends TestSuite {
1312
object demo extends TestBaseModule with JavaModule {
1413

1514
object test extends JavaTests {
16-
def testngClasspath = Task {
17-
millProjectModule(
18-
"mill-contrib-testng",
19-
repositoriesTask(),
20-
artifactSuffix = ""
21-
)
22-
}
23-
24-
override def runClasspath: T[Seq[PathRef]] =
25-
Task { super.runClasspath() ++ testngClasspath() }
26-
override def ivyDeps = Task {
27-
super.ivyDeps() ++
28-
Seq(
29-
ivy"org.testng:testng:6.11",
30-
ivy"de.tototec:de.tobiasroeser.lambdatest:0.8.0"
31-
)
32-
}
15+
override def runIvyDeps = super.runIvyDeps() ++ Seq(
16+
Dep.millProjectModule("mill-contrib-testng", artifactSuffix = "")
17+
)
18+
override def ivyDeps = super.ivyDeps() ++ Seq(
19+
ivy"org.testng:testng:6.11",
20+
ivy"de.tototec:de.tobiasroeser.lambdatest:0.8.0"
21+
)
3322
override def testFramework = Task {
3423
"mill.testng.TestNGFramework"
3524
}

kotlinlib/src/mill/kotlinlib/KotlinModule.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import mill.scalalib.api.{CompilationResult, ZincWorkerApi}
1313
import mill.scalalib.bsp.{BspBuildTarget, BspModule}
1414
import mill.scalalib.{JavaModule, Lib, ZincWorkerModule}
1515
import mill.util.Jvm
16-
import mill.util.MillModuleUtil.millProjectModule
1716
import mill.T
1817

1918
import java.io.File
@@ -88,10 +87,9 @@ trait KotlinModule extends JavaModule { outer =>
8887
protected def kotlinWorkerRef: ModuleRef[KotlinWorkerModule] = ModuleRef(KotlinWorkerModule)
8988

9089
private[kotlinlib] def kotlinWorkerClasspath = Task {
91-
millProjectModule(
92-
"mill-kotlinlib-worker-impl",
93-
repositoriesTask()
94-
)
90+
defaultResolver().classpath(Seq(
91+
Dep.millProjectModule("mill-kotlinlib-worker-impl")
92+
))
9593
}
9694

9795
/**
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mill.init
2+
3+
import scala.util.control.NoStackTrace
4+
5+
@mill.api.experimental
6+
case class BuildGenException(message: String) extends Exception(message) with NoStackTrace

main/init/src/mill/init/BuildGenModule.scala

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package mill.init
22

3-
import coursier.LocalRepositories
4-
import coursier.core.Repository
5-
import coursier.maven.MavenRepository
63
import mill.api.{PathRef, Result}
74
import mill.main.buildgen.BuildGenUtil
5+
import mill.scalalib.{CoursierModule, Dep}
86
import mill.scalalib.scalafmt.ScalafmtWorkerModule
9-
import mill.util.{Jvm, MillModuleUtil}
7+
import mill.util.Jvm
108
import mill.{Command, T, Task, TaskModule}
119

12-
import scala.util.control.NoStackTrace
13-
1410
@mill.api.experimental
15-
trait BuildGenModule extends TaskModule {
11+
trait BuildGenModule extends CoursierModule with TaskModule {
1612

1713
def defaultCommandName(): String = "init"
1814

19-
def buildGenClasspath: T[Seq[PathRef]]
15+
def buildGenDeps: T[Seq[Dep]] = Task { Seq.empty[Dep] }
16+
17+
def buildGenClasspath: T[Seq[PathRef]] = Task {
18+
defaultResolver().classpath(buildGenDeps())
19+
}
2020

2121
def buildGenMainClass: T[String]
2222

@@ -48,18 +48,3 @@ trait BuildGenModule extends TaskModule {
4848
}
4949
}
5050
}
51-
@mill.api.experimental
52-
object BuildGenModule {
53-
54-
def millModule(artifact: String): Result[Seq[PathRef]] =
55-
MillModuleUtil.millProjectModule(artifact, millRepositories)
56-
57-
def millRepositories: Seq[Repository] = Seq(
58-
LocalRepositories.ivy2Local,
59-
MavenRepository("https://repo1.maven.org/maven2"),
60-
MavenRepository("https://oss.sonatype.org/content/repositories/releases")
61-
)
62-
}
63-
64-
@mill.api.experimental
65-
case class BuildGenException(message: String) extends Exception(message) with NoStackTrace
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package mill.init
22

33
import mill.T
4-
import mill.api.{PathRef}
54
import mill.define.{Discover, ExternalModule}
5+
import mill.scalalib.Dep
66

77
@mill.api.experimental
88
object InitGradleModule extends ExternalModule with BuildGenModule {
99

1010
lazy val millDiscover = Discover[this.type]
1111

12-
def buildGenClasspath: T[Seq[PathRef]] = BuildGenModule.millModule("mill-main-init-gradle")
12+
override def buildGenDeps = super.buildGenDeps() ++ Seq(
13+
Dep.millProjectModule("mill-main-init-gradle")
14+
)
1315

1416
def buildGenMainClass: T[String] = "mill.main.gradle.GradleBuildGenMain"
1517
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package mill.init
22

33
import mill.T
4-
import mill.api.{PathRef}
54
import mill.define.{Discover, ExternalModule}
5+
import mill.scalalib.Dep
66

77
@mill.api.experimental
88
object InitMavenModule extends ExternalModule with BuildGenModule {
99

1010
lazy val millDiscover = Discover[this.type]
1111

12-
def buildGenClasspath: T[Seq[PathRef]] = BuildGenModule.millModule("mill-main-init-maven")
12+
override def buildGenDeps = super.buildGenDeps() ++ Seq(
13+
Dep.millProjectModule("mill-main-init-maven")
14+
)
1315

1416
def buildGenMainClass: T[String] = "mill.main.maven.MavenBuildGenMain"
1517
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package mill.init
22

33
import mill.T
4-
import mill.api.PathRef
54
import mill.define.{Discover, ExternalModule}
5+
import mill.scalalib.Dep
66

77
@mill.api.experimental
88
object InitSbtModule extends ExternalModule with BuildGenModule {
99
lazy val millDiscover = Discover[this.type]
1010

11-
def buildGenClasspath: T[Seq[PathRef]] = BuildGenModule.millModule("mill-main-init-sbt")
11+
override def buildGenDeps = super.buildGenDeps() ++ Seq(
12+
Dep.millProjectModule("mill-main-init-sbt")
13+
)
1214

1315
def buildGenMainClass: T[String] = "mill.main.sbt.SbtBuildGenMain"
1416
}

0 commit comments

Comments
 (0)