Samuel Andrew McIntyre wrote:
Hi Jeremy,
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.
We have a very similar issue in a couple of other projects. What we've done there is have a separate module for each artifact (jar) that is being produced and use dependencies to ensure that they get built in the correct order.
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. :)
I don't think that will be necessary - I think it should be possible to compile code with the appropriate JDK. However, a similar issue applies to other classes such as the OSGi library that require licensing. For those, the user can install them in their local repository manually or, if terms permit, install them in a private repo inside their organization.
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.
Will do.
-- Jeremy
