Hi Nicola, > -----Original Message----- > From: Nicola Ken Barozzi [mailto:[EMAIL PROTECTED]] > Sent: 04 July 2002 16:00 > To: [EMAIL PROTECTED]; Turbine Maven Users List > Subject: Re: [Centipede] Final proposal > > > James Strachan wrote: > > From: "Nicola Ken Barozzi" <[EMAIL PROTECTED]> > > > >>James Strachan wrote: > ... > >>>add pre/post processing easily. > >> > >>Which is exactly what we want to avoid. > >>Pre and Post are used for decorating an existing build, ie enhancing > >>present functionality. > >> > >>Instead, we define /features/ centrally, and specify the sequence of > >>"goal" to attain to have that feature. > >> > >>Let's assume you have a docs goal, with pre-goal and post-goal. > >>What's the order in which you run the pre and post goals? > >>A sequence I assume. > >>Taking for granted that I wouldn't want to use the default goal itself, > >>I could simply do: > >> > >><feature name="docs"> > >> <pre1/> > >> <pre2/> > >> <docs/> > >> <post1/> > >> <post2/> > >></feature> > >> > >>No need of pres and posts. > > > > Sure, if your build is as simplistic as the above then that mechanism > works > > fine in both Ant and Jelly. When you have a full build of multiple > > inter-related goals/features with interrelated dependencies using the > above > > simplistic model has many limitations, which we've been through on the > Maven > > project. This is exactly why we stopped using Ant for callbacks - its > much > > too painful for non-trivial stuff. > > As I said, callback are not needed. > Each plugin should be indipendent and not require other plugins; this > make it easier to reuse and not dependent on other stuff. > > Each target can say that it can partecipate in a feature, and that it > can use stuff created by other features.
[snip] Trying to have each plugin independent one of another is a nice goal. But difficult to achieve without lots of build code duplication. Just check the Ant dependency graphs (http://www.teria.com/~koseki/vizant/examples.html), you'll see that there are dependencies between functional build units. If you normalize them, you duplicate lots of code. Thus, we need a way to tell the master build that before we run our new plugin, it has to run such and such targets/goals from such other plugin. Yes, I know, we introduce plugin dependency but just as long as our new plugin only relies on core plugins there is no problem (same issue as Ant build files relying on core ant tasks vs optional ones - we just abstract one level higher, plugins instead of tasks). In addition, let's say I add a Test Coverage plugin. As a user, I may or may not want it to be called when I run the "site" target to generate the web site. Thus I need a way to tell this to Maven. Maven provides a default wiring of targets but we need to let the user the ability to add either his own build code before/after or change the order of targets (not sure we have that yet in Maven, do we Jason/Bob ? I mean can a user change the default sequence order of targets ?). I don't see what is wrong with that ? Thanks -Vincent -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
