Build Logs

softwaremill/quicklens • 3.8.0-RC2:2025-11-28

Errors

2

Warnings

54

Total Lines

435

1##################################
2Clonning https://github.com/softwaremill/quicklens.git into /build/repo using revision v1.9.12
3##################################
4Note: switching to '964ff968bdb424f27ff7de2fbcd0b3b4cf582a7b'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21Would override fixed Scala version: 3.3.4
22----
23Preparing build for 3.8.0-RC2
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3 = "3.3.4"
35Replacement: val scala3 = "3.8.0-RC2"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val scala3 = "3.3.4"' in build.sbt
40----
41Starting build for 3.8.0-RC2
42Execute tests: true
43sbt project found:
44Sbt version 1.10.6 is not supported, minimal supported version is 1.11.5
45Enforcing usage of sbt in version 1.11.5
46No prepare script found for project softwaremill/quicklens
47##################################
48Scala version: 3.8.0-RC2
49Targets: com.softwaremill.quicklens%quicklens
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.4\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Dfile.encoding=UTF-8
60-Dcommunitybuild.scala=3.8.0-RC2
61-Dcommunitybuild.project.dependencies.add=
62-Xmx7G
63-Xms4G
64-Xss8M
65-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
66-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
67-jar
68/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
69"setCrossScalaVersions 3.8.0-RC2"
70"++3.8.0-RC2 -v"
71"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
72"set every credentials := Nil"
73"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
74"removeScalacOptionsStartingWith -P:wartremover"
75
76moduleMappings
77"runBuild 3.8.0-RC2 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.4\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" com.softwaremill.quicklens%quicklens"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
81[info] loading project definition from /build/repo/project
82[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
83[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
84[info] Compilation completed in 8.598s.
85[info] done compiling
86[info] loading settings for project root from build.sbt...
87[info] resolving key references (10838 settings) ...
88[info] set current project to root (in build file:/build/repo/)
89Execute setCrossScalaVersions: 3.8.0-RC2
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklensNative/crossScalaVersions
91OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in quicklens3/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in quicklens3/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklensJS/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklens/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.11.12) in quicklens2_11/crossScalaVersions
96OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in quicklensNative3/crossScalaVersions
97OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in root/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in root/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in quicklensNative3/crossScalaVersions
100OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in quicklensJS3/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in quicklensJS3/crossScalaVersions
102[info] set current project to root (in build file:/build/repo/)
103[info] Setting Scala version to 3.8.0-RC2 on 4 projects.
104[info] Switching Scala version on:
105[info] quicklensJS3 (3.8.0-RC2)
106[info] * root (3.8.0-RC2)
107[info] quicklens3 (3.8.0-RC2)
108[info] quicklensNative3 (3.8.0-RC2)
109[info] Excluding projects:
110[info] quicklensNative2_12 (2.12.20)
111[info] quicklensJS (2.13.15)
112[info] quicklensJS2_12 (2.12.20)
113[info] quicklens2_12 (2.12.20)
114[info] quicklensNative (2.13.15)
115[info] quicklens2_11 (2.11.12)
116[info] quicklens (2.13.15)
117[info] Reapplying settings...
118[info] set current project to root (in build file:/build/repo/)
119Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
120[info] Reapplying settings...
121[info] set current project to root (in build file:/build/repo/)
122[info] Defining Global / credentials, credentials and 9 others.
123[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 87 others.
124[info] Run `last` for details.
125[info] Reapplying settings...
126[info] set current project to root (in build file:/build/repo/)
127Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
128[info] Reapplying settings...
129OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
130
131 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
132 Did you mean quicklensJS2_12 / allExcludeDependencies ?
133 , retry without global scopes
134[info] Reapplying settings...
135[info] set current project to root (in build file:/build/repo/)
136Execute removeScalacOptionsStartingWith: -P:wartremover
137[info] Reapplying settings...
138[info] set current project to root (in build file:/build/repo/)
139[success] Total time: 0 s, completed Nov 28, 2025, 11:59:27 AM
140Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.4\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
141Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
142Starting build...
143Projects: Set(quicklens3)
144Starting build for ProjectRef(file:/build/repo/,quicklens3) (quicklens)... [0/1]
145OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
146OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
147OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
148Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Ykind-projector, -Wvalue-discard, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
149[info] compiling 2 Scala sources to /build/repo/quicklens/target/jvm-3/classes ...
150[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
151[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/quicklens/src/main/scala-3/com/softwaremill/quicklens/QuicklensMacros.scala:121:28
152[warn] 121 | case (Field(name1), Field(name2)) => name1 == name2
153[warn] | ^
154[warn] |the type test for PathSymbol.Field cannot be checked at runtime because it's a local class
155[warn] |
156[warn] | longer explanation available when compiling with `-explain`
157[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/quicklens/src/main/scala-3/com/softwaremill/quicklens/QuicklensMacros.scala:122:39
158[warn] 122 | case (Extension(term1, name1), Extension(term2, name2)) => term1 == term2 && name1 == name2
159[warn] | ^
160[warn] |the type test for PathSymbol.Extension cannot be checked at runtime because it's a local class
161[warn] |
162[warn] | longer explanation available when compiling with `-explain`
163[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/quicklens/src/main/scala-3/com/softwaremill/quicklens/QuicklensMacros.scala:123:60
164[warn] 123 | case (FunctionDelegate(name1, _, typeTree1, args1), FunctionDelegate(name2, _, typeTree2, args2)) =>
165[warn] | ^
166[warn] |the type test for PathSymbol.FunctionDelegate cannot be checked at runtime because it's a local class
167[warn] |
168[warn] | longer explanation available when compiling with `-explain`
169[warn] four warnings found
170[info] done compiling
171[info] compiling 40 Scala sources to /build/repo/quicklens/target/jvm-3/test-classes ...
172[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
173[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala-3/com/softwaremill/quicklens/test/LiteralTypeTest.scala:3:43
174[warn] 3 |import com.softwaremill.quicklens.TestData.duplicate
175[warn] | ^^^^^^^^^
176[warn] | unused import
177[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala-3/com/softwaremill/quicklens/test/ModifyAllOptimizedTest.scala:6:21
178[warn] 6 |import scala.reflect.ClassTag
179[warn] | ^^^^^^^^
180[warn] | unused import
181[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:3:43
182[warn] 3 |import com.softwaremill.quicklens.TestData._
183[warn] | ^
184[warn] | unused import
185[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:11:47
186[warn] 11 | case class State(inside: Boolean)(implicit d: Double)
187[warn] | ^
188[warn] | unused implicit parameter
189[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:24:38
190[warn] 24 | import com.softwaremill.quicklens._
191[warn] | ^
192[warn] | unused import
193[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:26:38
194[warn] 26 | case class State(inside: Boolean)(d: Double)
195[warn] | ^
196[warn] | unused explicit parameter
197[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:30:8
198[warn] 30 | val state1 = State(true)(d)
199[warn] | ^^^^^^
200[warn] | unused local definition
201[warn] -- [E198] Unused Symbol Warning: /build/repo/quicklens/src/test/scala/com/softwaremill/quicklens/SecondParamListTest.scala:32:17
202[warn] 32 | implicit val dd: Double = d
203[warn] | ^^
204[warn] | unused local definition
205[warn] 9 warnings found
206[info] done compiling
207[info] SecondParamListTest:
208[info] - should modify an object with second implicit param list
209[info] - should should give a meaningful error for an object with more than one non-implicit param list
210[info] HugeModifyTest:
211[info] - should expand a huge function
212[info] ModifyOptionAtTest:
213[info] - should modify a Option with case class item
214[info] - should modify a Option in a case class hierarchy
215[info] - should crashes on missing key
216[info] TupleModifyTest:
217[info] - should modify case classes using setTo
218[info] - should modify tuples using setTo
219[info] - should modify tuples using using
220[info] - should modify tuples using multiple modify
221[info] CompileTimeTest:
222[info] - should not compile for too long in case of chained modify invocations
223[info] ModifyWhenTest:
224[info] - should modify a field in a subtype
225[info] - should ignore subtypes other than the selected one
226[info] - should modify a Functor field in a subtype
227[info] - should modify a field in a subtype through a Functor
228[info] - should modify a field in a subtypes (parameterized)
229[info] - should ignore subtypes other than the selected one (parameterized)
230[info] ModifyArrayIndexTest:
231[info] - should modify a non-nested array with case class item
232[info] - should modify a nested array using index
233[info] - should modify a nested array using index and each
234[info] - should not modify if given index does not exist
235[info] ModifyPimpTest:
236[info] - should modify a field once
237[info] - should modify a deeply-nested case class field
238[info] - should modify several fields
239[info] - should modify polymorphic case class field
240[info] ModitySealedAbstractClass:
241[info] - should Modify abstract class hierarchy
242[info] ModifyMapIndexTest:
243[info] - should modify a non-nested map with case class item
244[info] - should modify a non-nested sorted map with case class item
245[info] - should modify a non-nested hash map with case class item
246[info] - should modify a non-nested listed map with case class item
247[info] - should modify a nested map using index
248[info] - should not modify if there's no such element
249[info] ModifyAliasTest:
250[info] - should modify an object declared using type alias
251[info] - should modify a sealed hierarchy declared using type alias
252[info] ModifyOptionIndexTest:
253[info] - should modify a Option with case class item
254[info] - should modify a Option in a case class hierarchy
255[info] - should not modify on missing key
256[info] EnormousModifyAllTest:
257[info] - should expand an enormous function
258[info] ModifyIndexedSeqIndexTest:
259[info] - should modify a non-nested indexed seq with case class item
260[info] - should modify a nested indexed seq using index
261[info] - should modify a nested indexed seq using index and each
262[info] - should not modify if given index does not exist
263[info] ModifyAllOrderTest:
264[info] - should apply modifications in the correct order if child is first
265[info] - should apply modifications in the correct order if parent is first
266[info] - should apply modifications in the correct order: child, parent, child
267[info] - should apply modifications in the correct order: child, child, parent
268[info] - should apply modifications in the correct order on option: child, child, parent
269[info] - should apply modifications in the correct order on option: child, parent, child
270[info] ModifySimpleTest:
271[info] - should modify a single-nested case class field
272[info] - should modify a single-nested case class field using apply
273[info] - should modify a deeply-nested case class field
274[info] - should modify several fields
275[info] - should modify a case class field if the condition is true
276[info] - should leave a case class unchanged if the condition is false
277[info] - should modify polymorphic case class field
278[info] - should modify polymorphic case class field using apply
279[info] - should modify polymorphic case class field if condition is true
280[info] - should leave a polymorphic case class field if condition is false
281[info] ExtensionCopyTest:
282[info] - should modify a simple class with an extension copy method
283[info] - should modify a simple class with an extension copy method in companion
284[info] - should modify a class with extension methods in companion
285[info] - should modify an opaque type with extension methods
286[info] ModifyAndTypeTest:
287[info] - should modify an & type object
288[info] - should modify an & type object 1
289[info] - should modify an & type object 2
290[info] - should modify an & type object 3
291[info] ModifySeqIndexTest:
292[info] - should modify a non-nested seq with case class item
293[info] - should modify a nested seq using index
294[info] - should modify a nested seq using index and each
295[info] - should not modify if given index does not exist
296[info] SealedTest:
297[info] - should modify a field in a sealed trait
298[info] - should modify a field in a sealed trait through a Functor
299[info] - should modify a Functor field in a sealed trait
300[info] - should modify a field in a hierarchy of sealed traits
301[info] - should modify a list of pets from the example
302[info] ModifyEachWhereTest:
303[info] - should modify a single-nested optional case class field only if the condition returns true
304[info] - should modify a single-nested optional case class field (pimped) only if the condition returns true
305[info] - should modify be able to eachWhere a lambda
306[info] - should modify be able to eachWhere a lambda 1
307[info] - should allow referencing local variable
308[info] - should allow referencing local variable 1
309[info] - should not modify an optional case class field if it is none regardless of the condition
310[info] - should modify only those list elements where the condition returns true
311[info] - should allow .each at then end only if the condition returns true
312[info] CustomModifyProxyTest:
313[info] - should correctly modify a class using a custom modify proxy method
314[info] LensLazyTest:
315[info] - should create reusable lens of the given type
316[info] - should compose lens
317[info] SetToSimpleTest:
318[info] - should set a new value of a single-nested case class field
319[info] - should set a new value in a case class if the condition is true
320[info] - should leave a case class unchanged if the condition is false
321[info] - should set a new value in a case class if it is defined
322[info] - should leave a case class unchanged if the value is not defined
323[info] LiteralTypeTest:
324[info] - should modify a literal type field with an explicit parameter
325[info] - should modify a literal type field as a type parameter with an explicit parameter
326[info] - should not compile for a wrong literal type
327[info] ModifyAtTest:
328[info] - should modify a non-nested list with case class item
329[info] - should modify a nested list using at
330[info] - should modify a nested list using at and each
331[info] - should modify both lists and options
332[info] - should throw an exception if there's no element at the given index
333[info] ModifyEnumTest:
334[info] - should modify a field in an enum case
335[info] - should modify a field in an enum case with extension method
336[info] ModifyMapAtTest:
337[info] - should modify a non-nested map with case class item
338[info] - should modify a non-nested map with atOrElse
339[info] - should modify a non-nested sorted map with case class item
340[info] - should modify a non-nested hash map with case class item
341[info] - should modify a non-nested listed map with case class item
342[info] - should modify a nested map using at
343[info] - should modify a nested map using atOrElse
344[info] - should modify a non-nested map using each
345[info] - should modify a non-nested sorted map using each
346[info] - should modify a non-nested hash map using each
347[info] - should modify a non-nested list map using each
348[info] - should throw an exception if there's no such element
349[info] - should modify a map using at with a derived class
350[info] ModifyOptionAtOrElseTest:
351[info] - should modify a Some
352[info] - should modify a None with default
353[info] - should modify a Option in a case class hierarchy
354[info] RepeatedModifyAllTest:
355[info] - should expand a very long repeated function
356[info] - should expand a very long repeated function correct number of times
357[info] ModifyLazyTest:
358[info] - should modify a single-nested case class field
359[info] - should modify a deeply-nested case class field
360[info] - should modify several fields
361[info] - should modify a case class field if the condition is true
362[info] - should leave a case class unchanged if the condition is flase
363[info] ModifyAllOptimizedTest:
364[info] - should Have a correct number of copy calls with single focus
365[info] - should optimize number of copy calls 1
366[info] - should optimize number of copy calls 2
367[info] - should optimize number of copy calls 3
368[info] - should optimize number of copy calls 4
369[info] - should optimize number of copy calls 5
370[info] - should optimize number of copy calls 6
371[info] - should optimize number of each function delegates 1
372[info] - should optimize number of each function delegates 2
373[info] - should optimize number of each function delegates 3
374[info] ModifySelfThisTest:
375[info] - should modify an object even in presence of self alias
376[info] - should modify an object even in presence of self type
377[info] LensTest:
378[info] - should create reusable lens of the given type
379[info] - should compose lens
380[info] ExplicitCopyTest:
381[info] - should modify a class with an explicit copy method
382[info] - should modify a class that has a method with the same name as a field
383[info] - should modify a case class with an additional explicit copy
384[info] - should modify a case class with an ambiguous additional explicit copy
385[info] - should modify a class with two explicit copy methods
386[info] - should modify a case class with an ambiguous additional explicit copy and pick the synthetic one first
387[info] - should not compile when modifying a field which is not present as a copy parameter
388[info] ModifyIndexTest:
389[info] - should modify a non-nested list with case class item
390[info] - should modify a nested list using index
391[info] - should modify a nested list using index and each
392[info] - should modify both lists and options
393[info] - should not modify if given index does not exist
394[info] RepeatedModifyTest:
395[info] - should properly handle repeated modify invocations for different fields
396[info] - should properly handle repeated modify invocations for the same field
397[info] ModifyEachTest:
398[info] - should modify a single-nested optional case class field
399[info] - should modify a single-nested optional case class field (pimped)
400[info] - should modify multiple deeply-nested optional case class field
401[info] - should not modify an optional case class field if it is none
402[info] - should modify both lists and options
403[info] - should allow .each at the end
404[info] ModifyEitherTest:
405[info] - should modify a single-nested left case class field
406[info] - should modify a single-nested left case class field (pimped)
407[info] - should modify a single-nested right case class field
408[info] - should modify a single-nested right case class field (pimped)
409[info] - should modify multiple deeply-nested either case class fields
410[info] - should not modify left case class field if it is right
411[info] - should not modify right case class field if it is left
412[info] - should allow .eachLeft at then end
413[info] - should allow .eachRight at then end
414
415************************
416Build summary:
417[{
418 "module": "quicklens",
419 "compile": {"status": "ok", "tookMs": 11700, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
420 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
421 "test-compile": {"status": "ok", "tookMs": 15295, "warnings": 8, "errors": 0, "sourceVersion": "3.8"},
422 "test": {"status": "ok", "tookMs": 960, "passed": 168, "failed": 0, "ignored": 0, "skipped": 0, "total": 168, "byFramework": [{"framework": "unknown", "stats": {"passed": 168, "failed": 0, "ignored": 0, "skipped": 0, "total": 168}}]},
423 "publish": {"status": "skipped", "tookMs": 0},
424 "metadata": {
425 "crossScalaVersions": ["2.12.20", "3.3.4"]
426}
427}]
428************************
429[success] Total time: 40 s, completed Nov 28, 2025, 12:00:07 PM
430[0JChecking patch project/plugins.sbt...
431Checking patch project/build.properties...
432Checking patch build.sbt...
433Applied patch project/plugins.sbt cleanly.
434Applied patch project/build.properties cleanly.
435Applied patch build.sbt cleanly.