Seven modules, seven copies of the same Gradle block
Copy-pasted build config drifts silently per module. A convention plugin makes the shared part shared.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
15 posts
Copy-pasted build config drifts silently per module. A convention plugin makes the shared part shared.
Gradle metadata decides which variant each target gets. A library with no native artifact fails at link, not at resolution.
Declared versions are requests, not guarantees. Resolution picks the highest.
Metadata, klibs and platform artifacts resolve through different Gradle variants.
A layering rule nobody can violate is a dependency declaration, not a document.
Cache keys for native compilation include the toolchain, so they rarely hit.
A task capturing Project at execution time disables it for the whole build.
The default hierarchy creates intermediate source sets you never declared.
The hierarchy template inserts nodes based on declared targets. A directory for a node that does not exist compiles nowhere and warns about nothing.
Android and JVM targets cache well. Native link steps mostly do not, and that asymmetry is where your CI time goes.
Calling it a configuration cache incompatibility frames a real defect as a missing feature. The task captures a live object where it should capture a value.
A budget that lives in a shared understanding has already moved. A baseline works because changing it leaves a reviewable diff with somebody's name on it.