I'm looking at what is required for ant builds of LCF, and for this I sort of want to understand "accepted practices" for Apache
builds of this kind.
(1) Structure
LCF will build many distinct jars, which need to be kept distinct because not all deployments can build or include all
functionality. So there will be, at minimum:
- A set of jars representing the framework itself
- A set of jars for each connector
I say a "set" here, because some components (e.g. the framework and the documentum connector) do in fact contain multiple
sub-components.
The question is - do we want a single ant build for the whole thing? Or independent ant builds for each major component? Based
on the way it's packaged in debian for MetaCarta, independent components would be better. Is that acceptable?
(2) Dependencies
LCF requires upstream dependencies, many from apache, others from third parties such as postgresql. The dependencies come in
the following flavors:
- Sun dependency (standard jsp tag library jars and tlds: jstl.jar,
standard.jar, sql.tld, c.tld, fmt.tld, x.tld, and servlet.jar)
- Apache dependency, unexceptional (commons-fileupload, commons-collections,
commons-codec, commons-logging, log4j, axis, castor)
- Apache dependency, requiring upstream modifications in order to build
properly (commons-httpclient, xerces2-java)
- LGPL dependency, possibly requiring upstream modifications in order to run
properly (jcifs)
- LGPL dependency, not requiring upstream modifications in order to run
properly (postgres jdbc driver)
- BSD jar dependency (Bitstream pool driver, jdbcpool-0.99.jar)
- Third party proprietary jars (not enumerated here)
- Dependencies which will be immediately removed (metacarta-license.jar)
I take it we'll just presume, for the purposes of ant, that the correctly generated jars are just dropped in the ant/lib area?
What ant build strategy should we use for all of the above categories?
(3) Axis/castor build items
Connectors that build from wsdls or xsds use axis or castor to generate the appropriate java class code. Is there a standard
Apache ant task that we can use for these?
Thanks,
Karl