ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mariusz Nowostawski <mari...@marni.otago.ac.nz>
Subject RE: [PATCH] attempt 2 at javac refactoring.
Date Fri, 22 Dec 2000 02:38:21 GMT
Hey Jay,

First of all, I do agree with yours and Diane point of view. I do think,
the build file writer SHOULD have the ability to stop/fail the build
process when a particular "custom" compiler is not present. I have never
said anything against it.
But I also want build file writer to have the ability to suggest a custom
compiler. Those are two seperate issues. I will repeat here:

A. the compiler is NOT SPECIFIED at all in a build file
ANT default compiler is picked, or the .ant.properties compiler is picked.
The current ANT does that. It picks .ant.properties (assuming build file
reads those first), if none compiler is specified it tries modern, if
modern is not present it tries classic, if classic is not present it
fails.


B. the custom compiler MUST be used
I imagine the build file writer will check for all
needed "custom" compilers first (before doing anything) and if the
any of "custom" compilers is not present, simply fail the build with
proper message why and which compiler is needed. Current ANT sort of does
that. If I specify build.compiler before reading properties, my compiler
is forced. If it is not present during the javac task execution exception
is thrown.


C. the custom compiler is SUGGESTED
It cannot be done anyhow at the moment.` 
I would like to have the ability to do this:
check if custom compiler is present, if yes use it, if not
check if modern compiler is present, if yes use it, if not
check if classic compiler is present, if yes use it, if not
fail the build with proper error message, and suggest installing custom
compiler.

I would imagine that C. behaviour would be added simply to the generic
javac task implementation, however, if you oppose it, tell me how I can
achieve that by writting my build file --  it is fine with me. I am not
saying that this and that behaviour must be inside ANT, I am saying all
three  options should be doable in ANT.  Putting C. as a default
behaviour, making B by checking the compiler existance and failing the
build if required compiler is not present, and leaving A as is, is for me
the simplest possible way of achieving it. If you have any other better
proposal for achieving all three possible options otherwise, tell me, it
is fine for me to have it there by other means.


Thus:

> [...]  There may
> have been a good reason for the user for specifying a non-standard (i.e.:
> classic or modern) compiler (e.g.: compiler coverage).  By automatically
> picking a different compiler because it can't be found I don't think is a
> good default behaviour.

I fully agree, we have case B here, and no automatic picking should be
done by ANT.  If the custom is not present, build simply fails with proper
error message. In fact, I even think the build should fail before doing
anything, to me it is logical to check_for_all_needed_things as a first
step of my build file - if one of the required components/compilers is not
present, I should not do anything, I should simply fail and list what's
missing. That's why I think leaving the check for custom compiler
existance up to the javac task itself is bad.  Javac to me is simply for
"compiling java files". That's why I do not care if it tries different
compilers in a standard order, and that's why I like current ant trying
modern and then classic. The check for particular custom compiler is not
up to javac task, it is a sperate thing.
But as I said, I do not really care how it is achieved, I simply want
A. B. and C. to be achievable in ANT, that's all.

> I also don't think that making the ant tool itself interactive is a good
> idea either. [...]

I agree, I do not like it either. That's why, for case B. build
process should simply fail, for case C. build process should simply follow
the "standard" behaviour. I do cancel my "interactive" example from the
previous post.

cheers
Mariusz


Mime
View raw message