I wish we had this good discussion in may, when we wroked on plugin-tools ease 
of use enhancements

I understand your point
And in fact, when I write that the feature was added partly because parameter 
default-value="${project}" read-only="true", I see I didn't document it 
either, now that I'm able to do it because it is absolutely clear in my head 
(and wasn't before the work in may)

let's go ahead:
- now that the expressions will be well documented in future Maven versions 
(see [1] instead of [2])
- given that I'll add a documentation on the default-value pattern to get 
Maven objects, whatever we decide here
I'm ok to deprecate the @component trick in favour of the documentation 
written, because the trick can be confusing

tell me if you open a Jira issue, I'll be glad to work on it

Regards,

Hervé


[1] http://maven.apache.org/ref/3.1-SNAPSHOT/maven-
core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html

[2] http://maven.apache.org/ref/3.1-SNAPSHOT/maven-
core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html

Le mercredi 28 novembre 2012 20:19:44 Jason van Zyl a écrit :
> How does it help by telling them something factually incorrect? A component
> has a specific definition of being an instance created by the container.
> On Nov 28, 2012, at 7:23 PM, Hervé BOUTEMY <[email protected]> wrote:
> > no, we choose to do that for ease of use for the average plugin developer
> > 
> > we had a long discussion on how to ease plugin development, find a better
> > name than "expression", understand that such Maven object injection case
> > is best written as default-value than expression, and so on...
> > 
> > and actual plugins using @Component for injecting classical MavenProject
> > is
> > easier than @Parameter( defaultValue="${project}" ) even if the former is
> > a
> > trick
> > 
> > Le mercredi 28 novembre 2012 19:05:10 Jason van Zyl a écrit :
> >> I would remove that from the doco. I assume the @Parameter method still
> >> works and just keep that method.
> >> 
> >> jvz
> >> 
> >> On 2012-11-28, at 6:57 PM, Hervé BOUTEMY <[email protected]> wrote:
> >>> magic has been done:
> >>> see http://maven.apache.org/plugin-tools/apidocs/src-
> >>> html/org/apache/maven/tools/plugin/util/PluginUtils.html#line.40
> >>> 
> >>> Le mercredi 28 novembre 2012 18:54:11 Jason van Zyl a écrit :
> >>>> Internally the way @component works is to take the role of component
> >>>> supplied or figure it out. With that role a lookup against the
> >>>> container
> >>>> is
> >>>> executed. The MavenProject is not something that is available from the
> >>>> container because it is not a component. So I doubt it works, unless
> >>>> some
> >>>> magic was done to just make the @Component act on MavenProject's which
> >>>> itself doesn't make sense. It is meant to be a parameter, and that's
> >>>> what
> >>>> it has always been.
> >>>> 
> >>>> On Nov 28, 2012, at 6:03 PM, Barrie Treloar <[email protected]> wrote:
> >>>>> On Thu, Nov 29, 2012 at 8:49 AM, Jason van Zyl <[email protected]> wrote:
> >>>>>> The MavenProject is not a component that is injected by the
> >>>>>> container.
> >>>>>> It's handled by the PluginParameterExpressionEvaluator[1] which looks
> >>>>>> at
> >>>>>> all the non-@component things and sets their values once the Mojo
> >>>>>> instance is constructed.
> >>>>>> 
> >>>>>> [1]:
> >>>>>> https://github.com/apache/maven-3/blob/trunk/maven-core/src/main/java
> >>>>>> /o
> >>>>>> r
> >>>>>> g/apache/maven/plugin/PluginParameterExpressionEvaluator.java>
> >>>>> 
> >>>>> Does that mean our docs are wrong?
> >>>>> Do you have an example?
> >>>>> 
> >>>>> I've not used annotations before and I was trying to help someone
> >>>>> else's user list question.
> >>>>> And unfortunately google returns javadoc matches as well so wading
> >>>>> through examples was time consuming and not very enlightening.
> >>>>> 
> >>>>> And the link Olivier sent is using
> >>>>> 
> >>>>>  /**
> >>>>>  
> >>>>>   * The Maven project.
> >>>>>   */
> >>>>>  
> >>>>>  @Component
> >>>>>  private MavenProject project;
> >>>>> 
> >>>>> and is working, but when I tried that it didn't.
> >>>>> 
> >>>>> I'm going to try looking at the pom to see if there are some incorrect
> >>>>> versions of dependencies might be causing an issue.
> >>>>> 
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>> For additional commands, e-mail: [email protected]
> >>>> 
> >>>> Thanks,
> >>>> 
> >>>> Jason
> >>>> 
> >>>> ----------------------------------------------------------
> >>>> Jason van Zyl
> >>>> Founder & CTO, Sonatype
> >>>> Founder,  Apache Maven
> >>>> http://twitter.com/jvanzyl
> >>>> ---------------------------------------------------------
> >>>> 
> >>>> To do two things at once is to do neither.
> >>>> 
> >>>> -- Publilius Syrus, Roman slave, first century B.C.
> >>> 
> >>> ---------------------------------------------------------------------
> >>> 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]
> 
> Thanks,
> 
> Jason
> 
> ----------------------------------------------------------
> Jason van Zyl
> Founder & CTO, Sonatype
> Founder,  Apache Maven
> http://twitter.com/jvanzyl
> ---------------------------------------------------------
> 
> To do two things at once is to do neither.
> 
>  -- Publilius Syrus, Roman slave, first century B.C.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to