[
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