Looks good to me, although I'd like to follow Peter's suggestion that we use
./doc/api rather than ./javadoc.  (For all the reasons Peter suggested, plus
it gives us a place to put non-javadoc documentation.)

I prefer "build" to "dist", but that's the color of the bikeshed as far as
I'm concerned.

I'll try to change collections, pool and dbcp to conform, unless someone
beats me to it (hint, hint).

-----Original Message-----
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Saturday, April 28, 2001 6:56 PM
To: [EMAIL PROTECTED]
Subject: Common "ant dist" Behavior


I've been reviewing the build processes for the various commons and
sandbox packages, and we seem to be converting on common practices that
ultimately need to be documented.  One of the places we are not done with
yet (primarily because we haven't talked about it) is the definition of
what happens as a result of the "ant dist" command on a package, which
should create a "binary distribution".  This "binary distribution"
would be the thing that would be packaged up (zip, tar.gz, tar.Z) and
utilized by projects wishing to take advantage of our code.

To increase commonality, I propose the following guidelines:

(1) "ant dist" Output Directory:

    Suggestion:
      ${commons.home}/${package}/build

    Reasoning:
    - All current packages (except Cactus) do this already
    - Give CJAN-like tools a common convention to assume
    - Can point build.properties files at the name of this directory (eg.
      commons-beanutils.home=${commons.home}/beanutils/build)

(2) Binary Distribution Contents

    The "ant dist" target for a package should ensure that all of the
    following contents are placed in the output directory:

    Suggestion:
      LICENSE                       Copy of Apache License
      README                        README with dependencies, etc.
      commons-xxxxx.jar             Package JAR (no version number)
      javadoc/                      Package Javadocs

    Reasoning for "No Version Number":
    - Allows build.xml files that use these JARs to define properties
 
(commons-beanutils.jar=${commons-beanutils.home}/commons-beanutils.jar)
      without worrying about version numbers
    - We're going to maintain API stability, right? :-)
    - Versioning information should be included in the MANIFEST.MF
      file inside the JAR anyway, so it's redundant in the filename

    Reasoning for Including Javadocs:
    - Projects that utilize Commons packages will often want to copy the
      Javadocs (along with the JAR file) into their own distributions
      (I certainly want to do this for Struts, for example)
    - High quality Commons packages will have included extensive usage
      information in their Javadocs (including the package.html files
      for each Java package), so no extra docs should normally be
      required.
    - Give CJAN-like tools a common convention to assume

    Reasoning for No Source:
    - Smaller downloads (although these packages are so small that this
      is not necessarily a compelling issue for Commons).
    - Source distributions (that is, mirrors of the package subdirectory
      from the Commons CVS repository) should be available separately,
      with snapshots matching the code included in a released binary
      distribution.

What do you think?

Craig

Reply via email to