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
10 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.
The default hierarchy creates intermediate source sets you never declared.
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.
Thirty-six fork modules were declared in a template-owned file that syncs by overwrite. The seam built for exactly this was present, documented and empty.
Killing a build daemon discards the configuration cache, build cache, file watching and JIT state at once. Forty seconds becomes half an hour.
The Compose BOM aligns runtime artifacts. The Kotlin/Compose compiler is a separate alignment problem, and mixing the two up produces errors that look like your code is wrong when it isn't.