maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wolfgang häfelinger (JIRA) <j...@codehaus.org>
Subject [jira] Commented: (MPLUGIN-182) Recognize annotations placed on setters
Date Tue, 22 Feb 2011 15:32:24 GMT

    [ 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

       

Mime
View raw message