> So every concrete simple target like <target name="foo" depends="bar, > baz" /> became > > <target name="foo" depends="bar, baz, -pre-foo, -foo, -post-foo" /> > <target name="-foo" > ... </target> > <target name="-pre-foo" /> > <target name="-post-foo" />
This looks pretty ugly this me! I believe that this whole discussion focusses too much on targets instead of macros. Macros are a very powerfull feature and they deserve much more attention! Why not simply: <!-- === framework === --> <target name="foo" depends="bar,baz" description="public foo target"> <foo /> </target> <macrodef name="foo" > <sequential> <!-- to the foo thing --> </sequential> </macrodef> If a user then really need to override "foo", he or she would simply write in build.xml something like <macrodef name="foo"> <sequential> <echo> before original foo ..</echo> <c:foo /> <!-- assume framework in NS "c" /> <echo> after original foo .. </echo> </sequential> </macrodef> Notice that I'm only using the name "foo" and not "-post-foo" and all your other names. Regards, Wolfgang Häfelinger Research & Architecture | Dir. 2.7.0.2 European Patent Office Patentlaan 3-9 | 2288 EE Rijswijk | The Netherlands Tel. +31 (0)70 340 4931 [EMAIL PROTECTED] http://www.epo.org "Dominique Devienne" <[EMAIL PROTECTED]> 14-01-2008 17:17 Please respond to "Ant Developers List" <dev@ant.apache.org> To "Ant Developers List" <dev@ant.apache.org> cc Subject Re: [DISCUSS] EasyAnt: Ant based pre packaged build system for java projects On 1/14/08, Stefan Bodewig <[EMAIL PROTECTED]> wrote: > "Dominique Devienne" <[EMAIL PROTECTED]> writes: > Having something like before/after/around advices (where around is the > same as an override that doesn't change the dependencies list) may > suffice and leave overwriting the whole target definition to the worst > case. Thanks for reminding me of this issue Stefan. Indeed, something I really didn't like about overriding the whole target, is that you had to duplicate the dependency list as well... Which is why I now remember that I now remember I used 4, not 3 targets, in the "abstract" build, the forth one being the target's own content, separate from its dependency list: So every concrete simple target like <target name="foo" depends="bar, baz" /> became <target name="foo" depends="bar, baz, -pre-foo, -foo, -post-foo" /> <target name="-foo" > ... </target> <target name="-pre-foo" /> <target name="-post-foo" /> in the "abstract" build. Override -foo to replace just the target content, without it's dependency list. Or override foo to have complete control, but in my experience it's -foo that needed overriding, not foo. Note though that unlike before and after, around isn't as representative a name. When I thought about this issue a while back, I thought of using a magic name such as "super" in the depends attribute to refer to the overridden target's dependency list, similar to using <super/> in the target's body to refer to the overridden target's task list/content. --DD --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]