Hi Jeremy,
Maven is certainly an interesting tool, and I would be interested in seeing how it could be applied to the Derby build, but there is one problem that I'm not sure Maven handles well: we require the runtime classes from multiple JDKs in order to build.
Derby currently supports both JDBC 2.0 and JDBC 3.0, and instantiates the proper driver at runtime based on which version of the JDK in which Derby is running. This means that we need to compile the driver classes against the proper interfaces for the java.sql classes from both JDK 1.3.x and JDK 1.4.x. This introduces a peculiar complexity into the build: when building the JDBC 2.0 driver, we need to make sure that the compilation classpath only includes the JDK 1.3.x classes, and when building the JDBC 3.0 driver, we need to make sure that the compilation classpath only includes the JDK 1.4.x classes. This means that, unlike most other Java projects, Derby has a specific build order as well: (roughly) build core classes, build JDBC 2.0 classes, build JDBC 3.0 classes, build remainder. As you can imagine, once the JDBC 4.0 specification is released, this situation will become even more complex, or will remain at least as complex.
Maven's dependency system is an excellent idea, but I'm not sure that it is currently able to handle this situation. It seems like the runtime classes for compilation of a project are always assumed to be those of the JDK in which Maven is running. And while it is probably possible to write a plugin for Maven that would handle compiling against the runtime classes for multiple JDK revisions, it is probably not legal to add the Java runtime classes for the JDKs we compile against to Maven's dependency repository. :)
All that said, the rest of the build seems like it might fit into the Maven model. And I like Maven's goal of project cross-pollination and how it integrates with the other Apache projects. I for one would be very interested to see how well Maven is able to handle our build, so if you are willing to try it out, feel free to do so, and post your findings here.
Thanks, Andrew
