Thanks to Graeme Gillies for this funny anecdote from the Atlassian Giveaway. I love the fact that he persisted in nailing this.
When I started at a company (which shall remain nameless) being the
new (junior) guy I was made the “build guy” of one of their biggest
projects to date. I quickly learnt that the code had cyclic
dependencies amongst other things, which mean that if you did a fresh
checkout into a fresh workspace (no builds before) the code would not
compile because it relied on “cruft” and left over artifacts of
previous builds to build correctly.
They were using Apache Ant at the time (this was a J2EE project) and
then the decision was eventually made to migrate to Maven 1. This
would seem like a great thing to all, and finally a way of reviewing
and getting the build process back under order. Unfortunately what
happened instead was that when you tried to compile the build with
Maven it would break half way through complaining about dependencies,
after which I was instructed to then run the ant build which would run
and break half way through as well, when that happened, run maven
again, it should get further this time, when it breaks, run ant, then
maven, then ant, etc. Eventually what would happen is each build
script would break, but get further and further each time until
eventually one of them somehow gave you a completed build.
Took me the better half of 6 months but eventually I pulled it apart
and got it sorted.