+1
"Craig R. McClanahan" wrote:
>
> I'd like to propose a modification to the way that the build scripts for
> Tomcat 4 work, based on experience gained in the Jakarta Commons project,
> Struts, and a couple of non-Jakarta projects that use the same approach.
>
> Basically, the changes go like this:
>
> * Ant must be installed as an application, and $ANT_HOME/bin must be
> on your PATH environment variable so that the "ant" command can be
> used directly from the shell command prompt.
>
> * Dispense with "build.bat" and "build.sh" scripts, because we will be
> executing Ant directly.
>
> * Dispense with environment variables to point at all of the dependencies.
> This will be replaced by references in "build.properties" files as
> discussed further below.
>
> * The top-level build.xml script for Tomcat will include the lines:
> <property file="build.properties"/>
> <property file="${user.home}/build.properties"/>
> so that values specific to your environment can be set locally (i.e.
> in the top level "jakarta-tomcat-4.0" directory, or globally (in
> your user home directory).
>
> * Because of the way that Ant works, these conventions create an ordered
> hierarchy for property assignment (first definition wins):
> - User's properties that are specific to this project
> - User's global properties file (in the user.home directory)
> - Default properties declared in build.xml (after the lines above).
>
> * Subordinate build.xml scripts (in catalina, jasper, etc.) will include:
> <property file="build.properties"/>
> <property file="../build.properties"/>
> <property file="${user.home}/build.properties"/>
> so that you can use "ant" directly in those directories as well, and
> still pick up all of your local dependencies.
>
> * Because the "build.properties" files are local to your development
> system, they are *not* checked in to CVS (in fact, they will get
> added to the ".cvsignore" list). However, an example properties file
> "build.properties.sample" will be checked in that documents the
> variables that must, or can, be set.
>
> * Besides being easier (than environment variables) to manipulate, using
> properties files in this way has several advantages:
> - Using "${user.home}/build.properties" lets you share property
> assignments across all projects using the same conventions.
> - Using "build.properties" lets you override global property settings
> for a different project (say, for example, that you want to use a
> different XML parser for building Tomcat than for building other
> projects).
> - You can do variable substitutions in your "build.properties" settings
> just like you can when setting properties explicitly - Ant resolves
> them when the properties files are loaded.
>
> * Now, to execute a build, you simply type
> ant dist
> instead of "./build.sh dist" or "build dist" depending on platform.
>
> If this proposal is accepted, I'll go ahead and do the necessary grunt
> work this week.
>
> Comments? Questions?
>
> Craig