Maven is slow as shit. Change one line, wait 3 minutes. My IDE already compiled it but Maven doesn't give a fuck, does its whole song and dance anyway.
Same exact build, same machine - sometimes 2 minutes, sometimes 8. Yesterday took 12 minutes because Maven decided to redownload the internet for no reason. Cache was there. I checked. Maven just said "nah."
Tried switching to Gradle. Daemon crashes every other day and uses all your RAM. I've got 16GB, Gradle uses 14GB to build hello world. Kill the daemon, restart everything, still broken.
The Broken Shit I'm Currently Debugging
Right now Maven works locally but fails in Docker. Same JDK version, same everything. Turns out <scope>provided</scope>
behaves different in containers. Nobody documents this shit.
Last month tried Gradle. Daemon randomly dies. Spent 2 days figuring out why ./gradlew build
used 8GB RAM for hello world. Some moron set org.gradle.jvmargs=-Xmx8g
in global gradle.properties. Nobody remembered.
Oh wait, it gets better. Our Surefire plugin broke with JUnit 5.10.1. Works with 5.10.0, not 5.10.1. GitHub issue from 6 months ago, still no fix. Half our plugins are maintained by ghosts from 2019.
Today's Fresh Hell
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile
- Great error message, Maven. Which file? Which line? Stack trace doesn't help. Real useful.
Actually, wait - our Jenkins is now failing with java.lang.OutOfMemoryError: GC overhead limit exceeded
again. Third time this week. Kill the daemon, works for 2 hours, dies again. Pretty sure Gradle has memory leaks on purpose.
Oh, and my favorite bullshit from this morning: Could not resolve dependencies for project
. I literally added it to pom.xml 30 seconds ago. Maven Central has it. Internet works. Maven's just having a moment. Run again, works fine.
Gradle's build cache corrupted itself again. Tests pass locally, fail in CI. Delete ~/.gradle/caches
, magically works. This happens weekly. It's like Russian roulette but for deployments.
Oh right, and Maven 3.8.1 broke everything by blocking HTTP repos. Good security move, but half our Nexus repos died overnight. IT took a week to care.
Gradle 7.0 changed some dependency resolution shit. Builds that worked for 2 years suddenly failed. Fix was some obscure flag buried in random SO comment. Found it after 6 hours.
Why I'm Looking at Alternatives (Besides Being Dead Inside)
I'm just tired of waiting. Builds take longer than my attention span. Make tiny change, kick off build, get coffee, check Slack, debate life choices - still running. My IDE compiled everything 5 minutes ago.
Look, I've tried everything. Mill actually works - cut our 20 minute builds to 3 minutes. Yes, the Scala config syntax scared away junior devs, but honestly that's on them. Bazel is supposedly amazing if you have Google's army of build engineers and infinite time to write BUILD files.
Real talk: unless you enjoy pain, just try Mill first. Everything else is either broken (Gradle), slow as shit (Maven), or requires a PhD (Bazel).
Actually, new problem as of yesterday: Maven fails with The process cannot access the file because it is being used by another process
on Windows. Classic Windows file locking. Maven tries deleting temp files before Windows releases them. Fix? Add a fucking sleep. Enterprise tooling in 2025, everyone.
Still haven't figured out why Docker builds randomly fail on Thursdays. Same dockerfile, same everything. Think it's related to some Maven plugin lifecycle weirdness, but honestly gave up debugging it. Just restart Jenkins until it works.