I totally agree with everything you in this post Conor ;-) --DD

> -----Original Message-----
> From: Conor MacNeill [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 01, 2003 5:28 AM
> To: Ant Developers List
> Subject: Re: override
> 
> On Fri, 1 Aug 2003 07:40 pm, Jose Alberto Fernandez wrote:
> >
> > OK, lets get on the nitty gritty of the matter. :-)
> >
> > What do you mean by unrelated imports? If they are unrelated why do you
> > need to import them toghether?
> 
> They may be unrelated because they are written by different people.
> 
> I will give an example. Let's say one person distributes a build fragment,
> a
> template really, for building a Java project. Someone else distributes a
> fragment to do documentation generation. In both cases I want to use the
> bulk
> of the template as is but I need to override some of the steps. In the
> java
> generation fragment I wish to add an xdoclet step before the compile step
> whereas in the documetation generation I have some funky logo processing
> that
> needs to be inserted into the document generation workflow.
> 
> So it is this overriding that prevents me from using straight <ant>. The
> authors of the fragments can't know my special requirements but that is no
> problem as I can override some individual steps. The authors may have even
> inserted empty targets to make overriding easy - classic template method
> pattern.
> 
> Unfortunately the authors of the two build fragments don't know of the
> existence of each other and used the same target names in their fragments
> whether it is a simple "init", "compile", "clean" or any of the other very
> common names you find in builds.
> 
> > Why don't you use <ant/> to call between the
> > unrelated targets? In other words, the now famous example of "bad"
> > crosstalk, I could argue is due to bad usage of the <import/> feature.
> 
> You could argue that but you'd be wrong :-)
> 
> > The
> > build should not have imported files A and B, but just <ant/> them. You
> > should have gotten the desired effect.
> 
> No override - back to copy, paste and hack. I lose all the benefits.
> 
> >
> > On the other hand, if you have to import them, then it is because they
> have
> > to share something or one defines some target for the other, or
> something.
> 
> I disagree. Importing them into a common build does not imply they have
> something in common other than they are both fragments I wish to use in my
> build process. If you want them to interact you should achieve that
> *explicitly* by operations in the importing build file not by some
> implicit
> coincidence of names.
> 
> > If that is the case, then you are crosstalking. And then the whole
> argument
> > changes. You would have to add something to the language to be able to
> say:
> > for this target I want crosstalk, but for that other I do not.
> >
> > I think this will lead to spagguetti incomprenhensible buildfiles when
> > things go on large scale.
> 
> I disagree. What will be spaghetti will be trying to determine the subtle
> failures that come about because of unintended interactions. Not only
> that,
> there will be no alternative but to alter the fragments, defeating their
> purpose. Every fragment author will need to know about every other
> fragment
> author's naming scheme. It is this that will not scale to a large system -
> a
> system where you can reuse build fragments written by other people.
> 
> Conor

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to