@@ -12,17 +12,15 @@ import java.nio.file.attribute.PosixFilePermission
1212import de .tobiasroeser .mill .integrationtest ._
1313import de .tobiasroeser .mill .vcs .version ._
1414
15- import mill .{ Agg , PathRef , T }
15+ import mill ._
1616import mill .contrib .scoverage .ScoverageModule
17- import mill .define .{Cross , Module , Sources , Target }
18- import mill .util .Util
1917import mill .scalalib ._
20- import mill .scalalib .api .ZincWorkerUtil
18+ import mill .scalalib .api .JvmWorkerUtil
2119import mill .scalalib .publish ._
2220
2321import os .Path
2422
25- private def baseDir = build.millSourcePath
23+ private def baseDir = build.moduleDir
2624
2725trait Deps {
2826 // The mill API version used in the project/sources/dependencies, also default for integration tests
@@ -32,17 +30,25 @@ trait Deps {
3230 def millTestVersions : Seq [String ]
3331 val scoverageVersion = " 2.4.1"
3432
35- val bndlib = ivy " biz.aQute.bnd:biz.aQute.bndlib:6.4.1 "
36- val logbackClassic = ivy " ch.qos.logback:logback-classic:1.1.3 "
37- def millMain = ivy " com.lihaoyi::mill-main: ${millVersion}"
38- def millScalalib = ivy " com.lihaoyi::mill-scalalib: ${millVersion}"
39- val scalaTest = ivy " org.scalatest::scalatest:3.2.19 "
40- def scalaLibrary = ivy " org.scala-lang:scala-library: ${scalaVersion}"
41- val scoveragePlugin = ivy " org.scoverage:::scalac-scoverage-plugin: ${scoverageVersion}"
42- val scoverageRuntime = ivy " org.scoverage::scalac-scoverage-runtime: ${scoverageVersion}"
43- val slf4j = ivy " org.slf4j:slf4j-api:1.7.36 "
33+ val bndlib = mvn " biz.aQute.bnd:biz.aQute.bndlib:6.4.1 "
34+ val logbackClassic = mvn " ch.qos.logback:logback-classic:1.1.3 "
35+ def millMain = mvn " com.lihaoyi::mill-main: ${millVersion}"
36+ def millScalalib = mvn " com.lihaoyi::mill-scalalib: ${millVersion}"
37+ val scalaTest = mvn " org.scalatest::scalatest:3.2.19 "
38+ def scalaLibrary = mvn " org.scala-lang:scala-library: ${scalaVersion}"
39+ val scoveragePlugin = mvn " org.scoverage:::scalac-scoverage-plugin: ${scoverageVersion}"
40+ val scoverageRuntime = mvn " org.scoverage::scalac-scoverage-runtime: ${scoverageVersion}"
41+ val slf4j = mvn " org.slf4j:slf4j-api:1.7.36 "
4442}
4543
44+ object Deps_1 extends Deps {
45+ override val millVersion = " 1.0.0" // scala-steward:off
46+ override def millPlatform = " 1"
47+ // keep in sync with .github/workflows/build.yml
48+ override val millTestVersions = Seq (" 1.1.0-RC1" , millVersion)
49+ override def millScalalib : Dep = mvn " com.lihaoyi::mill-libs: ${millVersion}"
50+ override def scalaVersion = " 3.7.4"
51+ }
4652object Deps_0_11 extends Deps {
4753 override val millVersion = " 0.11.0" // scala-steward:off
4854 override def millPlatform = " 0.11"
@@ -57,7 +63,7 @@ object Deps_0_10 extends Deps {
5763}
5864
5965/** Cross build versions */
60- val millPlatforms = Seq (Deps_0_11 , Deps_0_10 ).map(x => x.millPlatform -> x)
66+ val millPlatforms = Seq (Deps_1 , Deps_0_11 , Deps_0_10 ).map(x => x.millPlatform -> x)
6167
6268trait MyScoverageModule extends ScoverageModule {
6369 override lazy val scoverage : ScoverageData = new MyScoverageData {}
@@ -69,21 +75,26 @@ trait MyScoverageModule extends ScoverageModule {
6975trait MillOsgiModule extends ScalaModule with PublishModule with Cross .Module [String ] {
7076 def millPlatform : String = crossValue
7177 def deps : Deps = millPlatforms.toMap.apply(millPlatform)
72- override def scalaVersion = T { deps.scalaVersion }
73- override def ivyDeps = Agg (deps.scalaLibrary)
74- override def artifactSuffix = s " _mill ${deps.millPlatform}_ ${artifactScalaVersion()}"
78+ override def scalaVersion = Task { deps.scalaVersion }
79+ // override def ivyDeps = Agg(deps.scalaLibrary)
80+ // override def artifactSuffix = s"_mill${deps.millPlatform}_${artifactScalaVersion()}"
81+ override def platformSuffix = s " _mill ${millPlatform}"
7582 def publishVersion = VcsVersion .vcsState().format()
7683 override def javacOptions = Seq (" -source" , " 1.8" , " -target" , " 1.8" , " -encoding" , " UTF-8" )
77- override def scalacOptions = T {
84+ override def scalacOptions = Task {
7885 val jvmSpecific =
7986 if (scala.util.Properties .isJavaAtLeast(11 ))
8087 Seq (" -release" , " 8" )
8188 else
8289 Seq (" -target:jvm-1.8" )
8390
84- jvmSpecific ++ Seq (" -encoding" , " UTF-8" , " -deprecation" , " -Xsource:3" )
91+ val svSpecific =
92+ if (scalaVersion().startsWith(" 3" )) Seq (" -Ydebug-unpickling" )
93+ else Seq (" -Xsource:3" )
94+
95+ jvmSpecific ++ svSpecific ++ Seq (" -encoding" , " UTF-8" , " -deprecation" )
8596 }
86- override def pomSettings = T {
97+ override def pomSettings = Task {
8798 PomSettings (
8899 description = " Mill module adding OSGi bundle support" ,
89100 organization = " de.tototec" ,
@@ -93,13 +104,16 @@ trait MillOsgiModule extends ScalaModule with PublishModule with Cross.Module[St
93104 developers = Seq (Developer (" lefou" , " Tobias Roeser" , " https.//github.com/lefou" ))
94105 )
95106 }
96- override def sources = T .sources {
97- super .sources() ++
98- (
99- ZincWorkerUtil .matchingVersions(deps.millPlatform) ++
100- ZincWorkerUtil .versionRanges(deps.millPlatform, millPlatforms.map(_._1))
101- )
102- .map(p => PathRef (millSourcePath / s " src- ${p}" ))
107+ def sources0 = Task .Sources {
108+ (
109+ JvmWorkerUtil .matchingVersions(deps.millPlatform) ++
110+ JvmWorkerUtil .versionRanges(deps.millPlatform, millPlatforms.map(_._1))
111+ )
112+ .map(p => PathRef (moduleDir / s " src- ${p}" ))
113+ }
114+ override def sources = Task {
115+ super .sources() ++ sources0()
116+
103117 }
104118}
105119
@@ -110,13 +124,17 @@ trait Core extends MillOsgiModule with MyScoverageModule {
110124 deps.bndlib,
111125 deps.slf4j
112126 )
113- override def compileIvyDeps = Agg (
114- deps.millMain,
115- deps.millScalalib
116- )
127+ override def compileIvyDeps =
128+ if (deps.millPlatform == " 1" ) Agg (
129+ deps.millScalalib
130+ )
131+ else Agg (
132+ deps.millMain,
133+ deps.millScalalib
134+ )
117135
118- override def generatedSources : Target [Seq [PathRef ]] = T {
119- val dest = T .dest
136+ override def generatedSources : T [Seq [PathRef ]] = T {
137+ val dest = Task .dest
120138 val infoClass =
121139 s """ // Generated with mill from build.sc
122140 |package de.tobiasroeser.mill.osgi.internal
@@ -132,7 +150,7 @@ trait Core extends MillOsgiModule with MyScoverageModule {
132150
133151 override def scoverageVersion = deps.scoverageVersion
134152
135- // override def skipIdea: Boolean = millPlatforms.head._1 != millPlatform
153+ override def skipIdea : Boolean = millPlatforms.head._1 != millPlatform
136154
137155 object test extends ScoverageTests with TestModule .ScalaTest {
138156 override def ivyDeps = Agg (
@@ -144,7 +162,10 @@ trait Core extends MillOsgiModule with MyScoverageModule {
144162
145163object testsupport extends Cross [TestSupport ](millPlatforms.map(_._1))
146164trait TestSupport extends MillOsgiModule {
147- override def compileIvyDeps = Agg (
165+ override def compileIvyDeps = if (deps.millPlatform == " 1" ) Agg (
166+ deps.millScalalib
167+ )
168+ else Agg (
148169 deps.millMain,
149170 deps.millScalalib
150171 )
@@ -161,33 +182,33 @@ trait ItestCross extends MillIntegrationTestModule with Cross.Module[String] {
161182 override def millTestVersion = T { millVersion }
162183 override def pluginsUnderTest = Seq (core(deps.millPlatform), testsupport(deps.millPlatform))
163184 override def prefetchIvyDeps = Agg (
164- ivy " com.typesafe.akka:akka-http-core_2.12:10.1.11 "
185+ mvn " com.typesafe.akka:akka-http-core_2.12:10.1.11 "
165186 )
166- override def sources = T .sources {
187+ override def sources = Task . Sources {
167188 super .sources() ++
168- ZincWorkerUtil .versionRanges(deps.millPlatform, millPlatforms.map(_._1))
169- .map(p => PathRef (millSourcePath / s " src- ${p}" ))
189+ JvmWorkerUtil .versionRanges(deps.millPlatform, millPlatforms.map(_._1))
190+ .map(p => PathRef (moduleDir / s " src- ${p}" ))
170191 }
171192
172193 override def pluginUnderTestDetails : Task [Seq [(PathRef , (PathRef , (PathRef , (PathRef , (PathRef , Artifact )))))]] =
173- T .traverse(pluginsUnderTest) { p =>
194+ Task .traverse(pluginsUnderTest) { p =>
174195 val jar = p match {
175196 case p : ScoverageModule => p.scoverage.jar
176197 case p => p.jar
177198 }
178199 jar zip (p.sourceJar zip (p.docJar zip (p.pom zip (p.ivy zip p.artifactMetadata))))
179200 }
180- override def perTestResources = T .sources { Seq (generatedSharedSrc()) }
181- def generatedSharedSrc = T {
182- val scov = deps.scoverageRuntime.dep
201+ override def perTestResources = Task { Seq (generatedSharedSrc()) }
202+ def generatedSharedSrc = Task {
203+ val scov = deps.scoverageRuntime
183204 os.write(
184- T .dest / " shared.sc" ,
205+ Task .dest / " shared.sc" ,
185206 s """ // Load the plugin under test
186207 |import $$ file.plugins
187208 |// Load scoverage runtime to get coverage results
188- |import $$ ivy.` ${scov.module. organization.value }:: ${scov.module. name.value }: ${scov.version}`
209+ |import $$ ivy.` ${scov.organization}:: ${scov.name}: ${scov.version}`
189210 | """ .stripMargin
190211 )
191- PathRef (T .dest)
212+ PathRef (Task .dest)
192213 }
193214}
0 commit comments