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