Build Logs
softwaremill/quicklens • 3.8.0-RC3:2025-12-04
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-RC3
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-RC3"
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-RC3
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-RC3
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-RC3
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-RC3"
70"++3.8.0-RC3 -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-RC3 """{"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 9.316s.
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-RC3
90OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in quicklensNative3/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklensNative/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklensJS/crossScalaVersions
93OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in quicklens3/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in quicklens3/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.11.12) in quicklens2_11/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.15) in quicklens/crossScalaVersions
97OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in root/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in root/crossScalaVersions
99OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in quicklensJS3/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in quicklensJS3/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in quicklensNative3/crossScalaVersions
102[info] set current project to root (in build file:/build/repo/)
103[info] Setting Scala version to 3.8.0-RC3 on 4 projects.
104[info] Switching Scala version on:
105[info] quicklensJS3 (3.8.0-RC3)
106[info] * root (3.8.0-RC3)
107[info] quicklens3 (3.8.0-RC3)
108[info] quicklensNative3 (3.8.0-RC3)
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 Dec 4, 2025, 2:25:59 PM
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] ModifyLazyTest:
208[info] - should modify a single-nested case class field
209[info] - should modify a deeply-nested case class field
210[info] - should modify several fields
211[info] - should modify a case class field if the condition is true
212[info] - should leave a case class unchanged if the condition is flase
213[info] ModifyOptionAtTest:
214[info] - should modify a Option with case class item
215[info] - should modify a Option in a case class hierarchy
216[info] - should crashes on missing key
217[info] ModifyEnumTest:
218[info] - should modify a field in an enum case
219[info] - should modify a field in an enum case with extension method
220[info] ModifyArrayIndexTest:
221[info] - should modify a non-nested array with case class item
222[info] - should modify a nested array using index
223[info] - should modify a nested array using index and each
224[info] - should not modify if given index does not exist
225[info] LiteralTypeTest:
226[info] - should modify a literal type field with an explicit parameter
227[info] - should modify a literal type field as a type parameter with an explicit parameter
228[info] - should not compile for a wrong literal type
229[info] CompileTimeTest:
230[info] - should not compile for too long in case of chained modify invocations
231[info] ModifyAtTest:
232[info] - should modify a non-nested list with case class item
233[info] - should modify a nested list using at
234[info] - should modify a nested list using at and each
235[info] - should modify both lists and options
236[info] - should throw an exception if there's no element at the given index
237[info] ModifyAllOrderTest:
238[info] - should apply modifications in the correct order if child is first
239[info] - should apply modifications in the correct order if parent is first
240[info] - should apply modifications in the correct order: child, parent, child
241[info] - should apply modifications in the correct order: child, child, parent
242[info] - should apply modifications in the correct order on option: child, child, parent
243[info] - should apply modifications in the correct order on option: child, parent, child
244[info] HugeModifyTest:
245[info] - should expand a huge function
246[info] ModifySeqIndexTest:
247[info] - should modify a non-nested seq with case class item
248[info] - should modify a nested seq using index
249[info] - should modify a nested seq using index and each
250[info] - should not modify if given index does not exist
251[info] ModifyEachWhereTest:
252[info] - should modify a single-nested optional case class field only if the condition returns true
253[info] - should modify a single-nested optional case class field (pimped) only if the condition returns true
254[info] - should modify be able to eachWhere a lambda
255[info] - should modify be able to eachWhere a lambda 1
256[info] - should allow referencing local variable
257[info] - should allow referencing local variable 1
258[info] - should not modify an optional case class field if it is none regardless of the condition
259[info] - should modify only those list elements where the condition returns true
260[info] - should allow .each at then end only if the condition returns true
261[info] ModifyPimpTest:
262[info] - should modify a field once
263[info] - should modify a deeply-nested case class field
264[info] - should modify several fields
265[info] - should modify polymorphic case class field
266[info] ModifyMapIndexTest:
267[info] - should modify a non-nested map with case class item
268[info] - should modify a non-nested sorted map with case class item
269[info] - should modify a non-nested hash map with case class item
270[info] - should modify a non-nested listed map with case class item
271[info] - should modify a nested map using index
272[info] - should not modify if there's no such element
273[info] SecondParamListTest:
274[info] - should modify an object with second implicit param list
275[info] - should should give a meaningful error for an object with more than one non-implicit param list
276[info] EnormousModifyAllTest:
277[info] ModifyEachTest:
278[info] - should modify a single-nested optional case class field
279[info] - should modify a single-nested optional case class field (pimped)
280[info] - should modify multiple deeply-nested optional case class field
281[info] - should not modify an optional case class field if it is none
282[info] - should modify both lists and options
283[info] - should allow .each at the end
284[info] - should expand an enormous function
285[info] ModifySimpleTest:
286[info] - should modify a single-nested case class field
287[info] - should modify a single-nested case class field using apply
288[info] - should modify a deeply-nested case class field
289[info] - should modify several fields
290[info] - should modify a case class field if the condition is true
291[info] - should leave a case class unchanged if the condition is false
292[info] - should modify polymorphic case class field
293[info] - should modify polymorphic case class field using apply
294[info] - should modify polymorphic case class field if condition is true
295[info] - should leave a polymorphic case class field if condition is false
296[info] ModitySealedAbstractClass:
297[info] - should Modify abstract class hierarchy
298[info] RepeatedModifyTest:
299[info] - should properly handle repeated modify invocations for different fields
300[info] - should properly handle repeated modify invocations for the same field
301[info] ModifyAndTypeTest:
302[info] - should modify an & type object
303[info] - should modify an & type object 1
304[info] - should modify an & type object 2
305[info] - should modify an & type object 3
306[info] ModifyAllOptimizedTest:
307[info] - should Have a correct number of copy calls with single focus
308[info] - should optimize number of copy calls 1
309[info] - should optimize number of copy calls 2
310[info] - should optimize number of copy calls 3
311[info] - should optimize number of copy calls 4
312[info] - should optimize number of copy calls 5
313[info] - should optimize number of copy calls 6
314[info] - should optimize number of each function delegates 1
315[info] - should optimize number of each function delegates 2
316[info] - should optimize number of each function delegates 3
317[info] ModifySelfThisTest:
318[info] - should modify an object even in presence of self alias
319[info] - should modify an object even in presence of self type
320[info] ModifyOptionIndexTest:
321[info] - should modify a Option with case class item
322[info] - should modify a Option in a case class hierarchy
323[info] - should not modify on missing key
324[info] LensTest:
325[info] - should create reusable lens of the given type
326[info] - should compose lens
327[info] ExplicitCopyTest:
328[info] - should modify a class with an explicit copy method
329[info] - should modify a class that has a method with the same name as a field
330[info] - should modify a case class with an additional explicit copy
331[info] - should modify a case class with an ambiguous additional explicit copy
332[info] - should modify a class with two explicit copy methods
333[info] - should modify a case class with an ambiguous additional explicit copy and pick the synthetic one first
334[info] - should not compile when modifying a field which is not present as a copy parameter
335[info] ExtensionCopyTest:
336[info] - should modify a simple class with an extension copy method
337[info] - should modify a simple class with an extension copy method in companion
338[info] - should modify a class with extension methods in companion
339[info] - should modify an opaque type with extension methods
340[info] ModifyIndexTest:
341[info] - should modify a non-nested list with case class item
342[info] - should modify a nested list using index
343[info] - should modify a nested list using index and each
344[info] - should modify both lists and options
345[info] - should not modify if given index does not exist
346[info] SealedTest:
347[info] - should modify a field in a sealed trait
348[info] - should modify a field in a sealed trait through a Functor
349[info] - should modify a Functor field in a sealed trait
350[info] - should modify a field in a hierarchy of sealed traits
351[info] - should modify a list of pets from the example
352[info] ModifyAliasTest:
353[info] - should modify an object declared using type alias
354[info] - should modify a sealed hierarchy declared using type alias
355[info] CustomModifyProxyTest:
356[info] - should correctly modify a class using a custom modify proxy method
357[info] SetToSimpleTest:
358[info] - should set a new value of a single-nested case class field
359[info] - should set a new value in a case class if the condition is true
360[info] - should leave a case class unchanged if the condition is false
361[info] - should set a new value in a case class if it is defined
362[info] - should leave a case class unchanged if the value is not defined
363[info] ModifyWhenTest:
364[info] - should modify a field in a subtype
365[info] - should ignore subtypes other than the selected one
366[info] - should modify a Functor field in a subtype
367[info] - should modify a field in a subtype through a Functor
368[info] - should modify a field in a subtypes (parameterized)
369[info] - should ignore subtypes other than the selected one (parameterized)
370[info] ModifyEitherTest:
371[info] - should modify a single-nested left case class field
372[info] - should modify a single-nested left case class field (pimped)
373[info] - should modify a single-nested right case class field
374[info] - should modify a single-nested right case class field (pimped)
375[info] - should modify multiple deeply-nested either case class fields
376[info] - should not modify left case class field if it is right
377[info] - should not modify right case class field if it is left
378[info] - should allow .eachLeft at then end
379[info] - should allow .eachRight at then end
380[info] LensLazyTest:
381[info] - should create reusable lens of the given type
382[info] - should compose lens
383[info] TupleModifyTest:
384[info] - should modify case classes using setTo
385[info] - should modify tuples using setTo
386[info] - should modify tuples using using
387[info] - should modify tuples using multiple modify
388[info] ModifyIndexedSeqIndexTest:
389[info] - should modify a non-nested indexed seq with case class item
390[info] - should modify a nested indexed seq using index
391[info] - should modify a nested indexed seq using index and each
392[info] - should not modify if given index does not exist
393[info] ModifyOptionAtOrElseTest:
394[info] - should modify a Some
395[info] - should modify a None with default
396[info] - should modify a Option in a case class hierarchy
397[info] RepeatedModifyAllTest:
398[info] - should expand a very long repeated function
399[info] - should expand a very long repeated function correct number of times
400[info] ModifyMapAtTest:
401[info] - should modify a non-nested map with case class item
402[info] - should modify a non-nested map with atOrElse
403[info] - should modify a non-nested sorted map with case class item
404[info] - should modify a non-nested hash map with case class item
405[info] - should modify a non-nested listed map with case class item
406[info] - should modify a nested map using at
407[info] - should modify a nested map using atOrElse
408[info] - should modify a non-nested map using each
409[info] - should modify a non-nested sorted map using each
410[info] - should modify a non-nested hash map using each
411[info] - should modify a non-nested list map using each
412[info] - should throw an exception if there's no such element
413[info] - should modify a map using at with a derived class
414
415************************
416Build summary:
417[{
418 "module": "quicklens",
419 "compile": {"status": "ok", "tookMs": 10668, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
420 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
421 "test-compile": {"status": "ok", "tookMs": 15899, "warnings": 8, "errors": 0, "sourceVersion": "3.8"},
422 "test": {"status": "ok", "tookMs": 993, "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: 37 s, completed Dec 4, 2025, 2:26:36 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.