Self contained build processes
Pardon the rant. I have recently been exposed to the build processes of a number of projects both internal and external (open source) and I am frustrated. When I download a software project and see a build.xml file in the root of the project, it is my assumption that I should be able to go to a command line, type ant from the appropriate directory and something should happen successfully. However, lately I seem to see more projects where that doesn’t happen.
The reason for this is that these build processes are written in a way that they depend on things external to the project. I can understand that if there are documented inter-project dependencies. That makes sense. What I don’t understand is when a project’s build process is dependent on a particular IDE. I realize that Eclipse has a large collection of plugins in it and within that labyrinth of directories just about any well known open source project’s jar files can be found. However, what about the people that don’t have your particular plugins installed or (gasp) they are using a different IDE (InteliJ perhaps)?
In an enterprise I can imagine the argument that since everyone in the enterprise uses the same IDE, it’s safe. However, that ties you into not only an IDE but potentially a version of IDE or plugin. This is not an ideal state. And for open source projects, there is no excuse. Build processes should be self contained. Open source has no control over the environments of their developers and so the projects should be structured as such.
So, please, if you are creating a build process for your project. Make it self contained. Please? Let’s hear how your build process pet peeves in the comments!

Blog