idiomatic-gradle VS Gradle buildSrcVersions

Compare idiomatic-gradle vs Gradle buildSrcVersions and see what are their differences.

idiomatic-gradle

How do I idiomatically structure a large build with Gradle 7.2+? (by jjohannes)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
idiomatic-gradle Gradle buildSrcVersions
5 8
431 1,621
- 0.5%
0.0 8.8
about 1 year ago 3 months ago
Kotlin Kotlin
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

idiomatic-gradle

Posts with mentions or reviews of idiomatic-gradle. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-13.
  • Android Developers Blog: Kotlin DSL is Now the Default for New Gradle Builds
    2 projects | /r/androiddev | 13 Apr 2023
    You should look into how https://github.com/jjohannes/idiomatic-gradle and similar projects handle it (nowinandroid has a good set up as well).
  • just enough gradle
    2 projects | /r/androiddev | 4 Jan 2023
    And finally, look at the idiomatic gradle repo. There is also a free video series that goes with this Understanding Gradle – Video Series. There are lots of bad practices in gradle that will slow your builds down, like using allProjects {}
  • For builds: Gradle vs Maven vs IntelliJ
    3 projects | /r/Kotlin | 25 May 2022
    I'd suggest getting rid of buildSrc, and just using build composition. I mentioned in another response, but check out https://github.com/jjohannes/idiomatic-gradle for how to use precompiled script plugins that are connected to the project via includedBuilds. The only issues I've had with this are generally resolved by just running the sub-build independently to resolve any caching issues in the 'primary' build. A simple gradlew build --settings-file ./build-logic/settings.gradle.kts run will generally resolve that, and that issue seems largely because of the 'root' build being a peer or anscestor of the included build (due to legacy structure of the project, an issue the linked example repo does not have).
  • Herding elephants: Wrangling a 3,500-module Gradle project
    1 project | dev.to | 11 Nov 2021
    When we initially migrated from buildSrc to an included build, it seemed an elegant solution to the problems outlined above. We were dropping buildSrc, with all its problems, and using the modern facility that Gradle considers the preferred, idiomatic replacement for buildSrc. (For a very elaborate example of this, see the idiomatic-gradle repo by former Gradle engineer Jendrik Johannes.) Included builds are indeed the best of both worlds in many ways: they can exist under version control in the same repository as the build that uses them; they can be easily opened in a separate IDE instance, improving build engineer productivity; they don't have the automatic test behavior of buildSrc, which improves feature engineer performance; and they're generally very well-behaved, without any of the magic of buildSrc.

Gradle buildSrcVersions

Posts with mentions or reviews of Gradle buildSrcVersions. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-19.
  • Dependency Managers Don't Manage Your Dependencies (2021)
    3 projects | news.ycombinator.com | 19 Jun 2023
    Lately I've been using gradle with kotlin-js and a mix of npm and jvm dependencies. There's the https://splitties.github.io/refreshVersions/ plugin that I can recommend if you are using gradle (with or without kotlin-js).

    It manages plugin dependencies, library dependencies, and version dependencies. It can use the new gradle version catalog or not if you prefer. On first use, you migrate your versions and it extracts these to a versions.properties (or your version catalog). Then whenever you run refreshVersions it indicates available new versions in comments in this file. It also indicates unused dependencies. Though for npms this is a bit harder. All you need to do is manually use the versions you want.

    I run this frequently to stay on top of upstream changes. Few software engineers realize that the testing and integration overhead with version changes multiplies (just like with other forms of change). Libraries that you haven't updated amount to technical debt that you haven't addressed. So, the workload increases massively if you don't update for a while. Staying up to date minimizes the workload. This plugin makes that super easy.

    Given that we are using kotlin-js, we have to deal with a rapidly evolving library ecosystem so we do have occasional issues that we need to work around by either downgrading or fixing some code. Whenever I can't update something, I document it in my versions.properties with a comment. Often you just have to wait for the next release or so for things to straighten out. The price of using cutting edge software.

    Kotlin-js manages a yarn lock file as well. So it properly locks dependencies. Whenever you update npm dependencies, you have to run a command to upgrade the lock file. There's also a whole mess of webpack dependencies that comes along with kotlin-js.

  • Weeks of Debugging Your Build can Save Hours of Learning Gradle
    3 projects | dev.to | 15 May 2023
    {$% embed https://github.com/splitties/refreshVersions %}
  • Gradle plugin for updating dependencies?
    4 projects | /r/Kotlin | 22 Apr 2023
    I need a Gradle plugin for managing version upgrades for dependencies. I used refreshVersions; however, I don't like how those dependencies end up in multiple files, e.g., versions.properties vs lib.versions.toml. I want something simpler. So, what do you prefer?
  • Easy way to migrate to Gradle's version catalog
    2 projects | /r/androiddev | 21 Jul 2022
    As somebody with a deep personal hatred of TOML I recommend refreshVersions https://github.com/jmfayard/refreshVersions just a million times better and will support version catalogs soon maybe
  • How to keep all the common dependencies between multiple modules in single project gradle file?
    1 project | /r/androiddev | 12 May 2022
    refreshVersions, it is literally the best
  • What is the best way to manage and organize build gradle dependencies?
    1 project | /r/androiddev | 5 Dec 2021
  • How to build a GraphQL Gateway with Spring Boot and Kotlin
    3 projects | dev.to | 14 Jun 2021
    Note that I'm using gradle refreshVersions to make it easy to keep the project up-to-date. Therefore, the versions are not defined in the build.gradle files, they are centralized in the versions.properties file. RefreshVersions is bootstrapped like this in settings.gradle.kts:
  • Unit test your knowledge πŸ’‘
    4 projects | dev.to | 28 May 2021
    Also the official sample for gradle refreshVersions

What are some alternatives?

When comparing idiomatic-gradle and Gradle buildSrcVersions you can also consider the following projects:

gradle-maven-publish-plugin - A Gradle plugin that publishes your Android and Kotlin libraries, including sources and javadoc, to Maven Central or any other Nexus instance.

logback-android - πŸ“„The reliable, generic, fast and flexible logging framework for Android

slack-gradle-plugin - Gradle and IntelliJ build tooling used in Slack's Android repo

WheelView-Android

custom-floating-action-button - This view is for replacement of standard Floating Action Button from Google Support Library. It is easy to use, customizable and you can also add text to button

Guava - Google core libraries for Java

kotlin-plugin - Build kotlin code using sbt

sixpack-java - A Java client for the Sixpack A/B testing framework https://github.com/seatgeek/sixpack

nowinandroid - A fully functional Android app built entirely with Kotlin and Jetpack Compose

deep-clean - When Gradle or the IDE let you down, just --nuke all them caches

AboutLibraries - AboutLibraries automatically collects all dependencies and licenses of any gradle project (Kotlin MultiPlatform), and provides easy to integrate UI components for Android and Compose-jb environments

ZXing - ZXing ("Zebra Crossing") barcode scanning library for Java, Android