db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samuel Andrew McIntyre <fuzzylo...@nonintuitive.com>
Subject Re: Maven build?
Date Sat, 28 Aug 2004 06:35:12 GMT
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.


View raw message