The Long Slow Death of Apache

Meh!

Two steps forward, four steps back. I’m still (day number 4, maybe, I’ve lost count) trying to get a Turbine/Torque web application up and running with the Maven build tool. Here’s a short list of some of the difficulties I’m facing….

Torque (an OM layer for the database) has the capability to generate Java classes based on an XML schema of your database. It can also generate the sql scripts to run to actually generate the tables defined in your schema file. NIfty, eh? Well, yesterday, I managed to convince Maven to actually generate the sql scripts, run them in the database, and generate the Java class files. Fantastic, I thought. I’m almost home. Now, let’s just do this:

# maven java:compile

and I’ll actually have a deployable web app. Right? Wrong! The compiler spit out about one hundred messages, ranging from syntax errors within the generated code to missing libraries. The missing libraries errors were especially nice because:

1. The plugin used by Maven is built around Torque 3.1
2. The current production release of Torque is 3.0.1 (released THIS MORNING)

Nice. Attempt #1 to fix this problem: get a copy of the latest Torque source from CVS, build it, and it should work right? Wrong!

Attempt #2: Get the earlier version of the Maven/Torque plugin (3.0). Wrong again!

Well, I walked away from that yesterday. Today, I thought I’d try again. So I typed:

# maven torque:main

And Maven says:

Goal "torque:main" does not exist in this project.

SWEET!!!!

I nuked the Maven installation, re-installed….same problem. Right now, I hate Maven. I wish it would curl up and die a slow, painful death.

So what is the problem here? Well, many of the Apache Jakarta projects share developers, especially the Turbine/Torque/Maven projects. These guys started to develop Maven (which is currently at version 1.0beta9) and began to use it to build the other projects. They liked Maven better than Ant (the standard Java build tool — also an Apache project) so they decided that the newer releases of the other projects would also require Maven to build instead of Ant. While it sounds nice as a concept, the implementation just doesn’t work. The problems start with the Torque version issue I outlined above. Since the developers, who are working on Torque 3.1, are using Maven, they thought the latest release version should include the plugin for Torque 3.1. Well, fellas, no one else is using Torque 3.1. So we’re sorta screwed.

Another problem…documentation. Now, most open source projects suffer from horrific documentation, but these projects suffer even more. To really get things working, you generally have to find kludges, and each person has their own set of kludges that work. Unfortunately, only one person writes a HOWTO, and it only includes their kludges. Some of these work for me, others don’t. At point, I received a response to a question I posted to the Maven mailing list that said sorry I can’t help you, but my system just works. It’s almost like it comes down to luck. That sounds like a great way to run a software project — maybe we’ll get lucky today and our build system will work as advertised.

Well….it’s a little later now. I’ve actually gotten a bit closer to resolving the issues, but I’m battling a classpath issue I thought I had solved yesterday concerning our database driver. What a mess. We’re giving this til the end of week, and if we can’t get it up and running, we’re moving back to Ant.