Gradle Newsletter, July 2020 ======== Welcome to the July 2020 Gradle Build Tool newsletter. This issue covers news from the community, highlights several blog posts by the Gradle Team, and summarizes some of the changes available in the Gradle 6.5 release. ## From the Community ### Plugins - [Changelog][1] - a new plugin from JetBrains for managing changelogs - [FloorPlan][2] - a new plugin for visualizing database evolution - [Nokee][3] - the set of plugins for building native projects [announced version 0.4][4] - [Plugin Toolbox][5] - a new set of plugins supporting the Gradle plugin development process - [Shadow][6] - the popular plugin to create Fat Jars released a new major version 6.0.0 - [Thrifty][7] - a new plugin from Microsoft for integrating with the Apache Thrift software stack for Android ### Blog Posts - [Migrating Spring Boot's Build to Gradle][8] - shares how migration from Maven to Gradle made local build times 20-30 times faster and CI build 3-4 times faster - [Java Class Shadowing and Shading][9] - explains the class shadowing problem in Java and how to implement shading in Gradle as one of the solutions - [Simpler and Safer Artifact Signing on CI Server with Gradle][10] - discusses some of the challenges of releasing from CI, describes how to sign artifacts on CI with [in-memory keys][11] and advocates doing so for simplicity and increased security - [Git Repos as Gradle Dependencies][12] - compares multiple ways to split codebases and recommends [GradleGitDependencies][13] plugin to consume Git repositories as dependencies - [Using Java Feature Previews with Gradle][14] - describes how to enable Java feature previews like [records][15] in Gradle builds - [Faster Builds with Highly Par­al­lel GitHub Actions][16] - describes how to speed up CI builds by generating a build job for each - Gradle sub­pro­ject and leveraging the [build cache][17] (we’ve been there ourselves but prefer [Distributed Testing][18] nowadays) - [Timeouts and Your Big Gradle Project][19] - discusses different levels of timeouts for Gradle builds using [built-in mechanism][20] and [Timeouts Enforcer Plugin][21] - [How We Stay Up to Date with our Dependencies][22] - shares a custom solution for semi-automated dependency version upgrades in a case not supported by [Dependabot][23] - [Gradle Plugins and Composite Builds][24] - describes how to use [composite builds][25] for Gradle plugin development - [The Proper Care and Feeding of Your Gradle Build][26] - discusses the [Dependency Analysis Gradle Plugin][27] ### Videos - [Authoring Gradle Plugins for Readability, Maintainability and User Experience][28] - demonstrates how to create declarative build scripts that are concise and maintainable - [Scaling Your Android Build (Part 1): Going Beyond Modularization with Gradle][29] - provides tips and tricks on scaling Android builds ### Other - [Micronaut 2.0.0][30] makes Gradle builds faster by adding support for [incremental annotation processing][31] ## From the Gradle Team ### File System Watching One of the most important aspects we consider in our mission to improve developer productivity is the fast feedback of incremental builds, especially in the IDE. In recent months, we’ve been working tirelessly to improve Gradle performance in such scenarios. Gradle 6.5 [introduced experimental file-system watching][32]. Another major experimental optimization called configuration cache is coming in Gradle 6.6. Stay tuned! ### Gradle vs Bazel for JVM Some teams have been asking us about the suitability of the Bazel build tool for JVM projects as an alternative to Gradle. We investigated this and summarized our findings in the [Gradle vs Bazel for JVM projects comparison][33]. Long story short - stick with Gradle for faster and easier to create and maintain builds. ### Refining Issue Backlog We [introduced a stale issue bot][34] in our bug tracker to automatically close old issues with no activity. In the event that an issue that is still affecting you gets marked as “stale” or closed, feel free to update or re-open it. So far this has helped our team tremendously to reduce the noise and focus our attention on valid and relevant defects. ### Gradle's Social Commitment In a statement to our community published earlier this month entitled "Gradle Demands Accountability," we expressed solidarity with the peaceful protesters demanding systemic changes to the treatment of people of color and how we plan to help. You can read the statement [here][35]. ## Gradle Releases ### Gradle 6.5 Gradle 6.5 has been released. This release includes an experimental opt-in for [file-system watching][36], a major improvement for speedy local incremental builds. Other changes include [better dependency version ordering][37], [new samples][38], and many bug fixes. See [release notes][39] for details. ## Upcoming Events * __Aug 12__ 9:00 am PT (3.5 hours): [Training: Gradle Build Cache Deep Dive][40] * __Aug 19__ 9:30 am PT (2.5 hours): [Workshop: Maximize Developer Productivity with Fast and Reliable Gradle and Maven Builds][41] * __Sep 15-16__ 8:30 am PT (4 hours each day): [Training: Intro to Gradle][42] * __Sep 18__ 9:00 (3.5 hours): [Training: Maven Build Cache Deep Dive][43] See the [Gradle Training webpage][44] for an up-to-date list of all upcoming educational and training events. ---- _If you have some news you’d like us to share in the next issue, use `#gradle` on Twitter or send us an email with the details to [newsletter@gradle.com][45]._ Until next time! —The Gradle Team -- Gradle Inc. 325 9th Street San Francisco, CA 94103 https://gradle.org (Unsubscribe from future Gradle emails) [1]: https://github.com/JetBrains/gradle-changelog-plugin [2]: https://github.com/julioz/FloorPlan [3]: https://nokee.dev/ [4]: https://nokee.dev/blog/release-0.4-announcement/ [5]: https://github.com/gradle-plugins/toolbox [6]: https://github.com/johnrengelman/shadow [7]: https://github.com/microsoft/thrifty/tree/master/thrifty-gradle-plugin [8]: https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle [9]: https://medium.com/@akhaku/java-class-shadowing-and-shading-9439b0eacb13 [10]: https://blog.solidsoft.pl/2020/06/03/simpler-and-safer-artifact-signing-on-ci-server-with-gradle/ [11]: https://docs.gradle.org/current/userguide/signing_plugin.html#sec:in-memory-keys&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [12]: https://www.droidcon.com/news-detail?content-id=/repository/collaboration/Groups/spaces/droidcon_hq/Documents/public/news/android-news/Git%20repos%20as%20Gradle%20dependencies [13]: https://github.com/alexvasilkov/GradleGitDependenciesPlugin [14]: https://melix.github.io/blog/2020/06/java-feature-previews-gradle.html [15]: https://blogs.oracle.com/javamagazine/records-come-to-java [16]: https://rnorth.org/faster-parallel-github-builds/ [17]: https://docs.gradle.org/current/userguide/build_cache.html [18]: https://gradle.com/blog/gradle-enterprise-unveils-distributed-testing/&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [19]: https://ubiratansoares.dev/post/timeouts-and-your-big-gradle-project/ [20]: https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:task_timeouts [21]: https://github.com/dotanuki-labs/gradle-timeouts-enforcer [22]: https://medium.com/@StefMa/how-we-stay-up-to-date-with-our-dependencies-7365528a3ec8 [23]: https://dependabot.com/blog/gradle-support/ [24]: https://proandroiddev.com/gradle-plugins-and-composite-builds-962350501c38 [25]: https://docs.gradle.org/current/userguide/composite_builds.html [26]: https://dev.to/autonomousapps/the-proper-care-and-feeding-of-your-gradle-build-d8g [27]: https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin [28]: https://www.youtube.com/watch?time_continue=1&v=MaansFoPHKg [29]: https://www.youtube.com/watch?v=dmAXnXRbHYo [30]: https://docs.micronaut.io/2.0.0/guide/index.html#incrementalannotationgradle [31]: https://docs.gradle.org/current/userguide/java_plugin.html#sec:incremental_annotation_processing [32]: https://blog.gradle.org/introducing-file-system-watching [33]: https://blog.gradle.org/gradle-vs-bazel-jvm [34]: https://blog.gradle.org/stale-issue-backlog [35]: https://gradle.org/protests/ [36]: https://docs.gradle.org/6.5/release-notes.html#file-watching [37]: https://docs.gradle.org/6.5/release-notes.html#dependency-ordering [38]: https://docs.gradle.org/6.5/release-notes.html#new-samples [39]: https://docs.gradle.org/6.5/release-notes.html [40]: https://gradle.com/training/build-cache-deep-dive/?time=1597190400&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [41]: https://gradle.com/training/developer-productivity-workshop/?time=1597795200&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [42]: https://gradle.com/training/introduction-to-gradle/?time=1600128000&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [43]: https://gradle.com/training/maven-build-cache-deep-dive/?time=1600387200&utm_source=newsletter&utm_medium=email&utm_campaign=202007 [44]: https://gradle.com/training/ [45]: mailto:newsletter@gradle.com