[ 
http://jira.codehaus.org/browse/MPLUGIN-182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=257254#action_257254
 ] 

wolfgang häfelinger commented on MPLUGIN-182:
---------------------------------------------

Here is then a working example:
{code:java}
/**
 * @goal echo
 * @requiresProject false
 */
public class EchoMojo extends AbstractMojo {
        
        /**
         * Notice that I changed field msg to be of type StringBuffer. Would 
that
         * matter for our getter signature? It turns out, that only the field's 
         * name matters!
         *
         * I added this alias cause I was hoping that this would change the 
setter
         * from setMsg() to setMessage(). Helas, this does not work.
         *
         * @parameter alias="message" expression="${echo.message}" 
         */
        
        private StringBuffer msg;
        
        /* this setter is not used by Maven/Plexus .. regardless how much you 
twist
         * Maven/Plexus configuration.
         */
        public void setMessage(String message) {
                this.msg = via("setMessage", message);
        }

        /* This setter is used rather than field injection. This works (somehow)
         * despite that setMsg() expects a String rather than a StringBuffer.
         */

        public void setMsg(String m) {
                this.msg = via("setMsg", m);
        }

        /* small helper */
        private StringBuffer via(String method, String msg) {
                return new StringBuffer(String.format("%s [via %s(..)]", msg, 
method));
        }
        
        
        public void execute() throws 
MojoExecutionException,MojoFailureException {
                getLog().info("what now??");
                getLog().info(msg.toString());
                getLog().info("<>");
        }
}
{code}

On execution, this will eventually print a log message like 
{code}
mvn myplugin:echo -Decho.message="I love good old Ant"
[INFO] what now??
[INFO] I love good old Ant [via setMsg(..)]
[INFO] <>
{code}



> Recognize annotations placed on setters
> ---------------------------------------
>
>                 Key: MPLUGIN-182
>                 URL: http://jira.codehaus.org/browse/MPLUGIN-182
>             Project: Maven 2.x Plugin Tools
>          Issue Type: New Feature
>          Components: Java Plugins, Plugin Plugin
>    Affects Versions: 2.7
>         Environment: $ mvn -version
> Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
> Java version: 1.6.0_22
> Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
> Default locale: en_US, platform encoding: MacRoman
> OS name: "mac os x" version: "10.6.4" arch: "x86_64" Family: "mac"
>            Reporter: wolfgang häfelinger
>
> According to documentation (Maven Book, p405), the following example should 
> work ("You can also use these annotations on public setter methods, [..]").
> {code:java}
> /**
>  * @goal echo
>  * @requiresProject false
>  */
> public class EchoMojo extends AbstractMojo {
>       private String msg;
>       
>       /**
>        * @parameter expression="${echo.message}" 
>        */
>       public void setMessage(String message) {
>               this.msg = message;
>       }
>       
>       public void execute() throws 
> MojoExecutionException,MojoFailureException {
>               getLog().info("what now??");
>               getLog().info(msg);
>               getLog().info("<>");
>       }
> }
> {code}
> It does not work.
> The generated plugin.xml states, that there are *no* parameters for this Mojo:
> {code:xml}
> ..
>     <mojo>
>       <goal>echo</goal>
>       <description></description>
>       <requiresDirectInvocation>false</requiresDirectInvocation>
>       <requiresProject>false</requiresProject>
>       <requiresReports>false</requiresReports>
>       <aggregator>false</aggregator>
>       <requiresOnline>false</requiresOnline>
>       <inheritedByDefault>true</inheritedByDefault>
>       
> <implementation>org.epo.common.maven.plugins.epo.EchoMojo</implementation>
>       <language>java</language>
>       <instantiationStrategy>per-lookup</instantiationStrategy>
>       <executionStrategy>once-per-session</executionStrategy>
>       <threadSafe>false</threadSafe>
>       <parameters/>
>     </mojo>
> ..
> {code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to