Part of the technology upgrade in the three Java based projects is also tool update. We have started with Eclipse version 1 and gradually moved up to the currently used Eclipse 3.0. The build and deployment process was based on custom written Ant build script, which compiled, created WAR, deployed, undeployed, run the tests, created source snapshot – you name it. The Eclipse was used mostly as editor and debugger – using JPDA talking to Tomcat started in debug mode.
That worked pretty much fine and there is no real need to fix it. The process was a bit work intensive – as you had most of time redeploy the WAR file, which (in most cases) required shutdown and restart of Tomcat (we have started back with Tomcat 3.x and the reloadable WAR’s came later).
Since that time, technologies evolved, we have now Eclipse 3.3 aka Europa with Web Tool Projects that promises usable editor for JSP, XML, integration with application servers and many other improvements. back in Eclipse 3.x time we used the commercial extensions MyEclipseIDE to achieve that – without it, the JSP and XML would be just plain text file without even colorization.
To be up to date, we want to use current Eclipse, so I gave 3.3 with WTP (Web Tools Project) a try. It works, but …. I mean – if you start developing new Web project from scratch, everything is fine: you can define app server configuration, Eclipse synchronizes the deployed WAR as soon as you change anything and you can debug – placing breakpoints. Sometimes (and actually quite often) it wants to restart the server – but I have not found any issues with WTP and was quite impressed with how things evolved.
The troubles begins if you have existing Web application that you need to somehow get into Eclipse WTP and do not want to change your structure to what Eclipse considers to be the Dynamic Web project. I have not found easy and obvious way how to load existing sources and tell the system: this is my Web application, here is the Web folder (and it is named war, not WebContent), here are the libraries I want you to put into WEB-INF/lib and so on. Or at least – here is my Ant file, use this task to build WAR and deploy it to that server. Chances are it is possible if you spend enough time digging deeper – but I had no time doing that.
Influenced by the very nice experience with Netbeans-based Ruby development, I also tried the Beta1 of Netbeans 6. On the positive side, it was noticeably more responsive and faster on my battered Fujitsu notebook than Eclipse 3.3. It seemed also more flexible when it came to working with existing structure. I had to rename existing build directory, as it wanted to use it – and it prompted for different Ant file name (having found existing build.xml). Generated build file was pretty intense – filled with looots of targets named as callbacks – (pre_build_something, build_something, post_build_something). I managed to get further that with WTP but what was a showstopper was an error in communicating with Tomcat (6.0.14). After configuring server, Netbeans starts it but never gets any information that the Tomcat is indeen running (which it was). As result, you cannot stop it, and next deploy will try start another Tomcat and die on port conflicts. It is Beta1, and possibly it may be a my machine configuration issue – but that was it, Netbeans was not the solution.
One thing that I did not appreciate about the Netbeans that it silently placed two JAR’s into my Tomcat’s lib directory. I use the server with or without dev environment, so messing with the classes loaded is not a great idea, guys ! The files are easy to recognize – the names have the format org_netbeans_SOMETHING.jar. Actually, I ended up deleting and reinstalling Tomcat to make sure there are no hidden changes.
Last attempt was getting back to MyEclipseIDE, which worked for us back then so well. As a matter of fact, it was so great that in 2005 I have purchased licenses for the whole team from my own pocket, just to be able to use it on the project (after finding out that to get approval from government department my team members worked for to expense the huge amount 3 times 29 CAD would require four meetings and seven signatures :-)).
The MyEclipseIDE is now in version 6.0GA (general availability), specially for the version 3.3 of Eclipse. I downloaded again the Eclipse core 3.3 release and did manual install of MyEclipseIDE (== MEI). The guys at Genuitech – company behind MEI got it right: to make a an existing project a Web project, you simply add to it a Web project nature – same way as you can add it Spring nature, JSTL nature etc. It is very intuitive and very obvious.
After doing this, I was able to create the Web project in existing source tree, configure it, define where is what and define deployment of one of the many servers and bang – it worked. I was able to edit JSP, place breakpoint into scriplet, and step through it.
There is much more in the MEI – visual designers for JSP and JSF, database inspector, – most of which I do not need and do not really care about, but the convenience of working with existing legacy code without changing structure and user comfort on the core developers tasks is IMHO well worth $49.
So final score: WTP project is very nice and does the job if you have the luxury start from scratch, but for real world, MyEclipse still leads the pack :-).