Gradle 3.5-rc-1 is now available for testing

Gradle 3.5 RC1 is now available

The Gradle team is pleased to announce Gradle 3.5.

First and foremost, we’re excited to announce the new Build Cache! Beyond incremental builds, Gradle can save time by reusing outputs from previous executions of a task, resolving them locally or remotely. We’ve worked hard to ensure many built-in tasks are cacheable and safe to try; however, this feature should not be used in production without fully understanding its current limitations, so it is not enabled by default.

We have been testing this feature at scale for quite some time on the Gradle build itself and with enterprise partners, and the feedback has been very positive. While this feature is incubating, we are improving the user experience, documentation, and debuggability so that everyone can enable the Build Cache eventually.

We would like your feedback. Please read the Build Cache user manual, try it in non-critical environments, and submit GitHub issues with build scans if you encounter problems.

Next, we lamented that sometimes Gradle console output did not show all work-in-progress during a build (especially with --parallel), so we’ve developed brand new console output!

Gradle Script Kotlin v0.8.0 (included in the distribution) is a major step forward in
usability. It brings a more consistent DSL, convenient and type-safe access to contributed project extensions and conventions, much better error reporting, bug fixes and, of course, the latest and greatest Kotlin release.

Finally, plugin resolution rules give you tighter control over how plugins are resolved through the new pluginManagement {} block.

We hope you will build happiness with Gradle 3.5, and we look forward to your feedback via Twitter or on GitHub.

Upgrade Instructions

Switch your build to use Gradle 3.5 RC1 quickly by updating your wrapper properties:

./gradlew wrapper --gradle-version=3.5-rc-1

Standalone downloads are available at https://gradle.org/release-candidate.

Reporting Problems

If you find a problem with Gradle 3.5 RC1, please file a bug on GitHub Issues adhering to our issue guidelines. If you’re not sure you’re encountering a bug, please use the forum.

RC1 breaks the ErrorProne plugin (see bug report). It fails with…

Caused by: java.lang.UnsupportedOperationException
    at org.gradle.api.tasks.compile.JavaCompile.setToolChain(JavaCompile.java:141)
    at org.gradle.api.tasks.compile.JavaCompile_Decorated.setToolChain(Unknown Source)
    at net.ltgt.gradle.errorprone.ErrorPronePlugin$1.execute(ErrorPronePlugin.java:20)
    at net.ltgt.gradle.errorprone.ErrorPronePlugin$1.execute(ErrorPronePlugin.java:17)
1 Like

Apart from the ErrorProne plugin failing, now the Findbugs is even noisier - this is what a successful quiet build of a single module looks like these days (all output comes from Findbugs):

C:\...\nuggets>gradlew clean build -q

Scanning archives (0 / 44)
Scanning archives (1 / 44)
Scanning archives (2 / 44)
Scanning archives (3 / 44)
Scanning archives (4 / 44)
Scanning archives (5 / 44)
Scanning archives (6 / 44)
Scanning archives (7 / 44)
Scanning archives (8 / 44)
Scanning archives (9 / 44)
Scanning archives (10 / 44)
Scanning archives (11 / 44)
Scanning archives (12 / 44)
Scanning archives (13 / 44)
Scanning archives (14 / 44)
Scanning archives (15 / 44)
Scanning archives (16 / 44)
Scanning archives (17 / 44)
Scanning archives (18 / 44)
Scanning archives (19 / 44)
Scanning archives (20 / 44)
Scanning archives (21 / 44)
Scanning archives (22 / 44)
Scanning archives (23 / 44)
Scanning archives (24 / 44)
Scanning archives (25 / 44)
Scanning archives (26 / 44)
Scanning archives (27 / 44)
Scanning archives (28 / 44)
Scanning archives (29 / 44)
Scanning archives (30 / 44)
Scanning archives (31 / 44)
Scanning archives (32 / 44)
Scanning archives (33 / 44)
Scanning archives (34 / 44)
Scanning archives (35 / 44)
Scanning archives (36 / 44)
Scanning archives (37 / 44)
Scanning archives (38 / 44)
Scanning archives (39 / 44)
Scanning archives (40 / 44)
Scanning archives (41 / 44)
Scanning archives (42 / 44)
Scanning archives (43 / 44)
Scanning archives (44 / 44)

2 analysis passes to perform

Pass 1: Analyzing classes (0 / 195) - 00% complete
Pass 1: Analyzing classes (1 / 195) - 00% complete
Pass 1: Analyzing classes (2 / 195) - 01% complete
Pass 1: Analyzing classes (3 / 195) - 01% complete
Pass 1: Analyzing classes (4 / 195) - 02% complete
Pass 1: Analyzing classes (5 / 195) - 02% complete
Pass 1: Analyzing classes (6 / 195) - 03% complete
Pass 1: Analyzing classes (7 / 195) - 03% complete
Pass 1: Analyzing classes (8 / 195) - 04% complete
Pass 1: Analyzing classes (9 / 195) - 04% complete
Pass 1: Analyzing classes (10 / 195) - 05% complete
Pass 1: Analyzing classes (11 / 195) - 05% complete
Pass 1: Analyzing classes (12 / 195) - 06% complete
Pass 1: Analyzing classes (13 / 195) - 06% complete
Pass 1: Analyzing classes (14 / 195) - 07% complete
Pass 1: Analyzing classes (15 / 195) - 07% complete
Pass 1: Analyzing classes (16 / 195) - 08% complete
Pass 1: Analyzing classes (17 / 195) - 08% complete
Pass 1: Analyzing classes (18 / 195) - 09% complete
Pass 1: Analyzing classes (19 / 195) - 09% complete
Pass 1: Analyzing classes (20 / 195) - 10% complete
Pass 1: Analyzing classes (21 / 195) - 10% complete
Pass 1: Analyzing classes (22 / 195) - 11% complete
Pass 1: Analyzing classes (23 / 195) - 11% complete
Pass 1: Analyzing classes (24 / 195) - 12% complete
Pass 1: Analyzing classes (25 / 195) - 12% complete
Pass 1: Analyzing classes (26 / 195) - 13% complete
Pass 1: Analyzing classes (27 / 195) - 13% complete
Pass 1: Analyzing classes (28 / 195) - 14% complete
Pass 1: Analyzing classes (29 / 195) - 14% complete
Pass 1: Analyzing classes (30 / 195) - 15% complete
Pass 1: Analyzing classes (31 / 195) - 15% complete
Pass 1: Analyzing classes (32 / 195) - 16% complete
Pass 1: Analyzing classes (33 / 195) - 16% complete
Pass 1: Analyzing classes (34 / 195) - 17% complete
Pass 1: Analyzing classes (35 / 195) - 17% complete
Pass 1: Analyzing classes (36 / 195) - 18% complete
Pass 1: Analyzing classes (37 / 195) - 18% complete
Pass 1: Analyzing classes (38 / 195) - 19% complete
Pass 1: Analyzing classes (39 / 195) - 20% complete
Pass 1: Analyzing classes (40 / 195) - 20% complete
Pass 1: Analyzing classes (41 / 195) - 21% complete
Pass 1: Analyzing classes (42 / 195) - 21% complete
Pass 1: Analyzing classes (43 / 195) - 22% complete
Pass 1: Analyzing classes (44 / 195) - 22% complete
Pass 1: Analyzing classes (45 / 195) - 23% complete
Pass 1: Analyzing classes (46 / 195) - 23% complete
Pass 1: Analyzing classes (47 / 195) - 24% complete
Pass 1: Analyzing classes (48 / 195) - 24% complete
Pass 1: Analyzing classes (49 / 195) - 25% complete
Pass 1: Analyzing classes (50 / 195) - 25% complete
Pass 1: Analyzing classes (51 / 195) - 26% complete
Pass 1: Analyzing classes (52 / 195) - 26% complete
Pass 1: Analyzing classes (53 / 195) - 27% complete
Pass 1: Analyzing classes (54 / 195) - 27% complete
Pass 1: Analyzing classes (55 / 195) - 28% complete
Pass 1: Analyzing classes (56 / 195) - 28% complete
Pass 1: Analyzing classes (57 / 195) - 29% complete
Pass 1: Analyzing classes (58 / 195) - 29% complete
Pass 1: Analyzing classes (59 / 195) - 30% complete
Pass 1: Analyzing classes (60 / 195) - 30% complete
Pass 1: Analyzing classes (61 / 195) - 31% complete
Pass 1: Analyzing classes (62 / 195) - 31% complete
Pass 1: Analyzing classes (63 / 195) - 32% complete
Pass 1: Analyzing classes (64 / 195) - 32% complete
Pass 1: Analyzing classes (65 / 195) - 33% complete
Pass 1: Analyzing classes (66 / 195) - 33% complete
Pass 1: Analyzing classes (67 / 195) - 34% complete
Pass 1: Analyzing classes (68 / 195) - 34% complete
Pass 1: Analyzing classes (69 / 195) - 35% complete
Pass 1: Analyzing classes (70 / 195) - 35% complete
Pass 1: Analyzing classes (71 / 195) - 36% complete
Pass 1: Analyzing classes (72 / 195) - 36% complete
Pass 1: Analyzing classes (73 / 195) - 37% complete
Pass 1: Analyzing classes (74 / 195) - 37% complete
Pass 1: Analyzing classes (75 / 195) - 38% complete
Pass 1: Analyzing classes (76 / 195) - 38% complete
Pass 1: Analyzing classes (77 / 195) - 39% complete
Pass 1: Analyzing classes (78 / 195) - 40% complete
Pass 1: Analyzing classes (79 / 195) - 40% complete
Pass 1: Analyzing classes (80 / 195) - 41% complete
Pass 1: Analyzing classes (81 / 195) - 41% complete
Pass 1: Analyzing classes (82 / 195) - 42% complete
Pass 1: Analyzing classes (83 / 195) - 42% complete
Pass 1: Analyzing classes (84 / 195) - 43% complete
Pass 1: Analyzing classes (85 / 195) - 43% complete
Pass 1: Analyzing classes (86 / 195) - 44% complete
Pass 1: Analyzing classes (87 / 195) - 44% complete
Pass 1: Analyzing classes (88 / 195) - 45% complete
Pass 1: Analyzing classes (89 / 195) - 45% complete
Pass 1: Analyzing classes (90 / 195) - 46% complete
Pass 1: Analyzing classes (91 / 195) - 46% complete
Pass 1: Analyzing classes (92 / 195) - 47% complete
Pass 1: Analyzing classes (93 / 195) - 47% complete
Pass 1: Analyzing classes (94 / 195) - 48% complete
Pass 1: Analyzing classes (95 / 195) - 48% complete
Pass 1: Analyzing classes (96 / 195) - 49% complete
Pass 1: Analyzing classes (97 / 195) - 49% complete
Pass 1: Analyzing classes (98 / 195) - 50% complete
Pass 1: Analyzing classes (99 / 195) - 50% complete
Pass 1: Analyzing classes (100 / 195) - 51% complete
Pass 1: Analyzing classes (101 / 195) - 51% complete
Pass 1: Analyzing classes (102 / 195) - 52% complete
Pass 1: Analyzing classes (103 / 195) - 52% complete
Pass 1: Analyzing classes (104 / 195) - 53% complete
Pass 1: Analyzing classes (105 / 195) - 53% complete
Pass 1: Analyzing classes (106 / 195) - 54% complete
Pass 1: Analyzing classes (107 / 195) - 54% complete
Pass 1: Analyzing classes (108 / 195) - 55% complete
Pass 1: Analyzing classes (109 / 195) - 55% complete
Pass 1: Analyzing classes (110 / 195) - 56% complete
Pass 1: Analyzing classes (111 / 195) - 56% complete
Pass 1: Analyzing classes (112 / 195) - 57% complete
Pass 1: Analyzing classes (113 / 195) - 57% complete
Pass 1: Analyzing classes (114 / 195) - 58% complete
Pass 1: Analyzing classes (115 / 195) - 58% complete
Pass 1: Analyzing classes (116 / 195) - 59% complete
Pass 1: Analyzing classes (117 / 195) - 60% complete
Pass 1: Analyzing classes (118 / 195) - 60% complete
Pass 1: Analyzing classes (119 / 195) - 61% complete
Pass 1: Analyzing classes (120 / 195) - 61% complete
Pass 1: Analyzing classes (121 / 195) - 62% complete
Pass 1: Analyzing classes (122 / 195) - 62% complete
Pass 1: Analyzing classes (123 / 195) - 63% complete
Pass 1: Analyzing classes (124 / 195) - 63% complete
Pass 1: Analyzing classes (125 / 195) - 64% complete
Pass 1: Analyzing classes (126 / 195) - 64% complete
Pass 1: Analyzing classes (127 / 195) - 65% complete
Pass 1: Analyzing classes (128 / 195) - 65% complete
Pass 1: Analyzing classes (129 / 195) - 66% complete
Pass 1: Analyzing classes (130 / 195) - 66% complete
Pass 1: Analyzing classes (131 / 195) - 67% complete
Pass 1: Analyzing classes (132 / 195) - 67% complete
Pass 1: Analyzing classes (133 / 195) - 68% complete
Pass 1: Analyzing classes (134 / 195) - 68% complete
Pass 1: Analyzing classes (135 / 195) - 69% complete
Pass 1: Analyzing classes (136 / 195) - 69% complete
Pass 1: Analyzing classes (137 / 195) - 70% complete
Pass 1: Analyzing classes (138 / 195) - 70% complete
Pass 1: Analyzing classes (139 / 195) - 71% complete
Pass 1: Analyzing classes (140 / 195) - 71% complete
Pass 1: Analyzing classes (141 / 195) - 72% complete
Pass 1: Analyzing classes (142 / 195) - 72% complete
Pass 1: Analyzing classes (143 / 195) - 73% complete
Pass 1: Analyzing classes (144 / 195) - 73% complete
Pass 1: Analyzing classes (145 / 195) - 74% complete
Pass 1: Analyzing classes (146 / 195) - 74% complete
Pass 1: Analyzing classes (147 / 195) - 75% complete
Pass 1: Analyzing classes (148 / 195) - 75% complete
Pass 1: Analyzing classes (149 / 195) - 76% complete
Pass 1: Analyzing classes (150 / 195) - 76% complete
Pass 1: Analyzing classes (151 / 195) - 77% complete
Pass 1: Analyzing classes (152 / 195) - 77% complete
Pass 1: Analyzing classes (153 / 195) - 78% complete
Pass 1: Analyzing classes (154 / 195) - 78% complete
Pass 1: Analyzing classes (155 / 195) - 79% complete
Pass 1: Analyzing classes (156 / 195) - 80% complete
Pass 1: Analyzing classes (157 / 195) - 80% complete
Pass 1: Analyzing classes (158 / 195) - 81% complete
Pass 1: Analyzing classes (159 / 195) - 81% complete
Pass 1: Analyzing classes (160 / 195) - 82% complete
Pass 1: Analyzing classes (161 / 195) - 82% complete
Pass 1: Analyzing classes (162 / 195) - 83% complete
Pass 1: Analyzing classes (163 / 195) - 83% complete
Pass 1: Analyzing classes (164 / 195) - 84% complete
Pass 1: Analyzing classes (165 / 195) - 84% complete
Pass 1: Analyzing classes (166 / 195) - 85% complete
Pass 1: Analyzing classes (167 / 195) - 85% complete
Pass 1: Analyzing classes (168 / 195) - 86% complete
Pass 1: Analyzing classes (169 / 195) - 86% complete
Pass 1: Analyzing classes (170 / 195) - 87% complete
Pass 1: Analyzing classes (171 / 195) - 87% complete
Pass 1: Analyzing classes (172 / 195) - 88% complete
Pass 1: Analyzing classes (173 / 195) - 88% complete
Pass 1: Analyzing classes (174 / 195) - 89% complete
Pass 1: Analyzing classes (175 / 195) - 89% complete
Pass 1: Analyzing classes (176 / 195) - 90% complete
Pass 1: Analyzing classes (177 / 195) - 90% complete
Pass 1: Analyzing classes (178 / 195) - 91% complete
Pass 1: Analyzing classes (179 / 195) - 91% complete
Pass 1: Analyzing classes (180 / 195) - 92% complete
Pass 1: Analyzing classes (181 / 195) - 92% complete
Pass 1: Analyzing classes (182 / 195) - 93% complete
Pass 1: Analyzing classes (183 / 195) - 93% complete
Pass 1: Analyzing classes (184 / 195) - 94% complete
Pass 1: Analyzing classes (185 / 195) - 94% complete
Pass 1: Analyzing classes (186 / 195) - 95% complete
Pass 1: Analyzing classes (187 / 195) - 95% complete
Pass 1: Analyzing classes (188 / 195) - 96% complete
Pass 1: Analyzing classes (189 / 195) - 96% complete
Pass 1: Analyzing classes (190 / 195) - 97% complete
Pass 1: Analyzing classes (191 / 195) - 97% complete
Pass 1: Analyzing classes (192 / 195) - 98% complete
Pass 1: Analyzing classes (193 / 195) - 98% complete
Pass 1: Analyzing classes (194 / 195) - 99% complete
Pass 1: Analyzing classes (195 / 195) - 100% complete

Pass 2: Analyzing classes (0 / 40) - 00% complete
Pass 2: Analyzing classes (1 / 40) - 02% complete
Pass 2: Analyzing classes (2 / 40) - 05% complete
Pass 2: Analyzing classes (3 / 40) - 07% complete
Pass 2: Analyzing classes (4 / 40) - 10% complete
Pass 2: Analyzing classes (5 / 40) - 12% complete
Pass 2: Analyzing classes (6 / 40) - 15% complete
Pass 2: Analyzing classes (7 / 40) - 17% complete
Pass 2: Analyzing classes (8 / 40) - 20% complete
Pass 2: Analyzing classes (9 / 40) - 22% complete
Pass 2: Analyzing classes (10 / 40) - 25% complete
Pass 2: Analyzing classes (11 / 40) - 27% complete
Pass 2: Analyzing classes (12 / 40) - 30% complete
Pass 2: Analyzing classes (13 / 40) - 32% complete
Pass 2: Analyzing classes (14 / 40) - 35% complete
Pass 2: Analyzing classes (15 / 40) - 37% complete
Pass 2: Analyzing classes (16 / 40) - 40% complete
Pass 2: Analyzing classes (17 / 40) - 42% complete
Pass 2: Analyzing classes (18 / 40) - 45% complete
Pass 2: Analyzing classes (19 / 40) - 47% complete
Pass 2: Analyzing classes (20 / 40) - 50% complete
Pass 2: Analyzing classes (21 / 40) - 52% complete
Pass 2: Analyzing classes (22 / 40) - 55% complete
Pass 2: Analyzing classes (23 / 40) - 57% complete
Pass 2: Analyzing classes (24 / 40) - 60% complete
Pass 2: Analyzing classes (25 / 40) - 62% complete
Pass 2: Analyzing classes (26 / 40) - 65% complete
Pass 2: Analyzing classes (27 / 40) - 67% complete
Pass 2: Analyzing classes (28 / 40) - 70% complete
Pass 2: Analyzing classes (29 / 40) - 72% complete
Pass 2: Analyzing classes (30 / 40) - 75% complete
Pass 2: Analyzing classes (31 / 40) - 77% complete
Pass 2: Analyzing classes (32 / 40) - 80% complete
Pass 2: Analyzing classes (33 / 40) - 82% complete
Pass 2: Analyzing classes (34 / 40) - 85% complete
Pass 2: Analyzing classes (35 / 40) - 87% complete
Pass 2: Analyzing classes (36 / 40) - 90% complete
Pass 2: Analyzing classes (37 / 40) - 92% complete
Pass 2: Analyzing classes (38 / 40) - 95% complete
Pass 2: Analyzing classes (39 / 40) - 97% complete
Pass 2: Analyzing classes (40 / 40) - 100% complete
Done with analysis
The following errors occurred during analysis:
  Cannot open codebase filesystem:C:\...\nuggets\build\classes\main\META-INF\nuggets_main.kotlin_module
    java.io.IOException: Wrong magic bytes of 3 for zip file C:\...\nuggets\build\classes\main\META-INF\nuggets_main.kot
lin_module of 84 bytes
      At edu.umd.cs.findbugs.classfile.impl.ZipFileCodeBase.<init>(ZipFileCodeBase.java:87)
      At edu.umd.cs.findbugs.classfile.impl.ZipCodeBaseFactory.makeZipCodeBase(ZipCodeBaseFactory.java:39)
      At edu.umd.cs.findbugs.classfile.impl.ClassFactory.createFilesystemCodeBase(ClassFactory.java:121)
      At edu.umd.cs.findbugs.classfile.impl.FilesystemCodeBaseLocator.openCodeBase(FilesystemCodeBaseLocator.java:77)
      At edu.umd.cs.findbugs.classfile.impl.ClassPathBuilder.processWorkList(ClassPathBuilder.java:607)
      At edu.umd.cs.findbugs.classfile.impl.ClassPathBuilder.build(ClassPathBuilder.java:226)
      At edu.umd.cs.findbugs.FindBugs2.buildClassPath(FindBugs2.java:677)
      At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:218)
      At org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:39)
      At sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      At sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      At sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      At java.lang.reflect.Method.invoke(Method.java:498)
      At org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:88)
      At org.gradle.process.internal.worker.request.WorkerAction.runThenStop(WorkerAction.java:72)
      At sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      At sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      At sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      At java.lang.reflect.Method.invoke(Method.java:498)
      At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
      At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
      At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnect
ion.java:147)
      At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnect
ion.java:129)
      At org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
      At org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
      At org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
      At java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      At java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      At java.lang.Thread.run(Thread.java:745)


C:\...\nuggets>echo %ERRORLEVEL%
0

Thank @ddimitrov for the report. I opened an issue to track this work.