Jeff Turner wrote:
>
> On Thu, Sep 06, 2001 at 10:26:34PM -0400, Berin Loritsch wrote:
> > I proposed this on the general lists, and got a couple +1s
> > from the folks there. Please let me know if this makes sense
> > for us. This proposal is a minimum set of targets and
> > conventions for build.xml files. This allows a familiar
> > environment for all projects (if adopted).
> >
> [..]
> > If a program can be installed, then a build file must
> > use these properties (which can be overridden by a user's
> > .antrc file).
>
> .antrc is for setting environment variables. It is distinct from
> .ant.properties (aka build.properties), which I presume you mean?
Yes.
> > The standard targets I propose we all adopt are similar to
> > the Make utility conventions ('all' is the default target):
> >
> > 'all'
> > Compiles the program with debugging enabled by default.
> > This target is not required to build documentation. Standard
> > compilation properties and defaults are:
> > * build.debug=on
> > * build.optimize=off
>
> Great. I've noticed a tendency for people to call this "main". Anyway,
> it's a good addition, because it allows "ant clean all" to be done on
> any project, whereas without knowing the default target, you're stuck
> with "ant clean ; ant".
Exactly. Actually, this isn't as standard as you might think.
For Avalon projects it is 'main'
For Cocoon projects it is 'package'
For Axis projects it is 'all'
Borrowing a convention from GNU in this respect is not bad.
> > 'install'
> > This target ensures that everything is built, including
> > documentation. It then copies the files in the corresponding
> > directories already mentioned above. All jars should be
> > considered libraries, and scripts should be provided to run
> > them.
>
> A bit off-topic but..
>
> I've managed to avoid "invoking scripts" in my projects by adding the
> following to the jar manifest:
>
> Class-Path: [requisite jars]
> Main-Class: [main class]
>
> Eg,
> Class-Path: crimson.jar jaxp.jar catalog.jar
> Main-Class: net.socialchange.validator.Validator
>
> Then the project can be invoked with "java -jar foo.jar".
Yep, but many projects have more things that have to be set up
for classpaths and setting java heap sizes, etc. Esp. servers.
I find it a little nicer to have an invoking script in many cases
so that I can simply type "foo" and the java app runs.
Although, in windows if you set ".jar" files to invoke "javaw -jar %1"
you only have to type "foo.jar"--but this isn't common for all
environments.
Besides, the number of jars used can be made dynamic when we use
invoking scripts.
> > 'check'
> > This target is used to compile and execute any unit tests that
> > are built into the project.
>
> Or just "test"?
Well, the common convention for make files is 'check'. Many
Jakarta/XML projects are just beginning to add unit testing--so
I thought standardizing on an already common convention (I believe
even for Apache httpd) would be a good idea. If you want "test"
to alias "check" that's fine.
> Another question: what is the default target? I don't see anything
> suitable above, because they all build docs, which usually takes a long
> time.
As I mentioned above in parenthesis (which is probably why you missed
it), the "all" target is the default.
> I'd suggest keeping a "main" target, defaulted to "all", which people
> can then change to "all, tests" or "clean, all, tests" as they see fit.
>
> --Jeff
> (wishing you success where others have failed)
Thanks. It seems to be meeting with decent reception right now.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]