On a recent project I joined I was amazed to see how things were working in regards to the IDE.
First, the environment was not uniform, there were:
- An
ad hoc approach towards the IDE - different IDE versions and different
set of plugins. Good plugins were not easily distributed among all the
developers. - Different way of
getting and storing the local version of the source code - different
plugin for the IBM ClearCase. Some people even downloaded and committed
the source manually - through an outside (to the IDE) application. - no
one-step build even for debugging - the building required a few manual
steps to build and run. Some developers did not use debugging, some
used it manually since the IDE could not automatically deploy everything
So after some days on the project I proposed to make a uniform environment that would have automatic building and deploying.
Maybe
now's the time to give some info on the project: Web project including
ajax written in java, IDE: Eclipse. Lot's of legacy code and legacy
dependencies (which had to be removed).
The problems:
- Scattered source code and resources:
There were several projects and each had the source in a
java directory, some web resources in a web directory and all kind of tests plus test resources in a tests directory. - Dependencies on numeroous (~150) libraries scattered around.
So
first I had to separate web content from source code. This could work
with linked folders. So I created a few java projects with only the
source code.
Then create a new web project that depended on all the
other projects and had several linked resources for all the web
content. The hardest thing was that in an Eclipse web project one can
have only one folder that's gonna be the root one, vis à vie you can't
have two directories with web content that shall be deployed in the web
root folder. (At least it looks that way when one goes through the configuration of a web project)
After some research it appearred that actually this was possible (manually):
Web-project/.settings/org.eclipse.wst.common.component:
So after this was done the only thing left was to configure the deployment to different servers.
So the moral of that story is that even with a directory structure that complicated one could be able to abstract all that from developers and create an IDE that can do most common tasks automatically.