Yes, me too. -----Original Message----- From: Wayne Fay [mailto:[EMAIL PROTECTED] Sent: Wednesday, March 21, 2007 2:20 PM To: Maven Developers List Subject: Re: maven-enforcer-plugin
I like this approach better as well... Seems very natural. Wayne On 3/21/07, Jason Dillon <[EMAIL PROTECTED]> wrote: > Hey, this occurred to me last night... > > Why not have one goal, enforcer:enforce, then abstract the things to > enforce into rules... > > public interface EnforcementRule { > void execute(); > } > > And then configure... > > <plugin> > <groupId>... > <artifactId>... > <configuration> > <rules> > <requireJavaVersion> > <version>[1.3,1.6]</version> > </requireJavaVersion> > <requireMavenVersion> > <version>[2.0.5)</version> > </requireMavenVersion> > </rules> > </configuration> > </plugin> > > IIUC if have 'EnforcementRule[] rules;' in your mojo and you define > impls of EnforcementRule like RequireJavaVersion and > RequireMavenVersion in the same package, then plexus should inject > the instances of the right class into the array. > > Then the mojo is really simple, can execute any kind of rules from > it... and folks can use the implementation="" stuff to inject their > own rules too if needed. Then the goal basically executes the rules > and then based on if they pass/fail do something about it (fail the > build, warn, etc.). > > --jason > > > On Mar 20, 2007, at 4:19 PM, Brian E. Fox wrote: > > > > > > > > >> Personally I have not problem adding extra execution per thing > >> I want to enforce. IMO that is much clearer and simplifies > >> the implementing mojo. > > > > Potentially yes, but it's also a performance issue invoking the plugin > > extra times. In my situation, I have about 100+ modules that would be > > doing this. If I can figure out how to make it execute only once per > > execution no matter where the build is started, then I think > > separating > > them is logical. In fact, if this is possible, I think it's a > > requirement. > > > > > >> Funny... most folks I know don't use version ranges. We > >> (geronimo) tried to use them at one point for our specs, but > >> key plugins (like the idea plugin) don't support it. > > > >> I don't think that most folks using M2 are familiar with > >> ranges... nor do they use them... and when those who do use > >> them... usually tend to find out they don't work so well. > > > > Fair enough. I think I discovered why they don't work in many cases > > while trying to use them. > > > >> The OS stuff falls into the same boat, why reinvent a syntax when one > >> already exists? > > > >> Ya, I hear ya... it was just a comment... and more about how > >> the range syntax hurts my brain more than anything ;-) Just > >> looking at a range its not really easy to tell what it > >> means... where IMO the 1.0+ and 1.0* syntax is relatively > >> clear w/o having to go read a syntax mapping table ;-) > > > > Although I am not a fan of the implementation, the syntax is logical > > once you understand it. Not entirely covering all scenarios, but > > certainly enough for this. I don't think the 1.0+, 1.0* is enough to > > handle all cases. > > > > Consider 2.1. Perhaps there is a regression in backwards compatibility > > in the first build. Someone may want to say 2.0.6 < x < 2.1 || x > 2.1 > > (in otherwords greater than 2.0.6 but not 2.1.0. You can do this with > > the current specification. I'm not sure that any expression > > language is > > going to be completely natural and support enough use cases... If > > that's > > true, then this one is as good as any. I could be convinced otherwise > > though if there are some alternatives that can be pointed out. > > > > Does anyone else have an opinion? > > > > (btw, I anticipated exactly this disussion, which is why I put out the > > RFC) > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]