Re: Dependency resolution in Java builds
On Tue, 8 Feb 2011, Lew wrote:
Joshua Maurice wrote:
Builds is one of the most under-appreciated aspects of programming.
Second to deployment, which is subordinate to operations, which subsumes
the aforementioned.
Generally, programmers as a class are woefully ignorant of
build/deployment/ops matters. I've seen this repeatedly in
multi-million-dollar projects. One such had radically different builds
on developer machines from those on test/production machines. You could
pass all unit tests on the developer machine and fail on the test box,
for example.
It's simply stunning that people let this happen in this day and age.
Even more stunning, we did it on our current project. There are some
necessary differences between the dev and server builds (exploded vs
packed EARs, for example), but the differences between the build processes
for them are far greater than that difference requires. I didn't make the
decision to make them so different; someone else did a long time ago. But
that difference has persisted and grown on my watch, so there's blood on
my hands.
Perhaps all that is required for bad builds to triumph is for good
programmers to do nothing.
Another symptom is framework plethora. Let's just throw our
RichFaces/Acegi/Echo2/Spring/Spring-JDBC/Spring-Aspect/Spring-OMG!/ all
over our XHTML over various disparate JMS scaffolds between localhost
processes. No, that's not a rant, that's a prototypic description of
more than one real-world scenario, both large and small projects. The
exact frameworks in question vary (I mentioned ones I've encountered in
various combination) but the arity is similar.
Isn't that just a question of shovelling JARs onto the classpath and then
jarring up the right things? Or do these frameworks have more involved
build requirements?
I forbore to mention the classloader and library incompatibilities
between JARS loaded by unchecked programmers and versions provided by
the application server.
There is that.
On a less recent project, I worked for about six months with the ops
guys, in a town I'll call Deploymentville. Their opinion of the
project's programming team, about twenty miles up the highway in
Programmerton? "We like to get those Programmerton guys over here for
about six months," one ops guru told me, grinning wickedly. "They go
back ... /changed/."
There is this very nebulous thing called The Devops Movement, which is not
an antagonist from a James Bond novel, but some sort of theory that people
with experience of operations should be involved in development:
http://en.wikipedia.org/wiki/DevOps
Seems lke a good idea.
tom
--
.... but when you spin it it looks like a dancing foetus!