[ http://jira.codehaus.org/browse/MNG-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_119150 ]
bentmann edited comment on MNG-3273 at 1/8/08 8:53 AM: ---------------------------------------------------------------- bq. (more can be found in the "Parameter Expressions" document) Where is this "Parameter Expressions" document? Is http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide meant or something else? Whatever, either a hyperlink to the target document should be established or the phrase should be deleted (in case this document does not exist, no need to point users into nirvana). Really off-topic: Is it be intention or by accident that this JIRA project does not allow formatting/markup in comments? was (Author: bentmann): bq. (more can be found in the "Parameter Expressions" document) Where is this "Parameter Expressions" document? Is http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide meant or something else? Whatever, either a hyperlink to the target document should be established or the phrase should be deleted (in case this document does not exist, no need to point users into nirvana). Really off-topic: Is it be intention or by accident that this project does not allow formatting/markup in comments? > Point out known pitfalls when developing plugins > ------------------------------------------------ > > Key: MNG-3273 > URL: http://jira.codehaus.org/browse/MNG-3273 > Project: Maven 2 > Issue Type: Improvement > Components: Documentation: Guides > Reporter: Benjamin Bentmann > Assignee: Vincent Siveton > Priority: Minor > Attachments: pitfalls-resource-bundles.patch, > pitfalls-resource-bundles.patch, pitfalls.patch, plugin-api-logger.patch > > > Writing a simple Maven plugin is quite easy but getting it wrong is also > quite easy. I am just a novice but have so far noticed two subtle > anti-patterns that plugin developers should avoid. I would expect that the > Maven core team knows some more aspects about mojo programming that plugin > developers should be aware of to fight bugs right from the beginning. All > those pitfalls would fit nicely into [Plugin > Development|http://maven.apache.org/guides/plugin/guide-java-plugin-development.html]. > Some examples: It is a bad idea to code something like > {code:java} > public MyMojo { > private Log log = getLog(); > public void execute() throws MojoExecutionException { > log.debug("..."); > } > } > {code} > Getting the logger this way will retrieve some default logger instead of the > logger that is injected into the mojo (by the plexus container?). This is > easily noticed by the different output styles of the log messages and the > fact that one gets [debug] message without having "-X" enabled. > Not bad but rather dangerous is something like > {code:java} > public MyMojo { > /** > * This parameter will take a file path (file paths are > platform-dependent...) > * @parameter > */ > private String outputDirectory; > public void execute() throws MojoExecutionException { > File outputDir = new File(outputDirectory).getAbsoluteFile(); > outputDir.mkdirs(); > } > } > {code} > java.io.File resolves relative paths like "target/something" that users might > provide in the plugin configuration against the current directory which needs > not be the project base directory. Therefore, path parameters should be > declared of type java.io.File rather than simple strings as Maven seems to > automatically push in properly resolved paths into the mojo. If one really > needs the parameter to be of type String (i.e. to try resource lookup from > class path), the best practice to properly get an absolute path should be > documented. > How to get a plugin ready for reactor builds might also be worth some warning > words. What does one need to know about aggregator-style execution, execution > project, forking ... ? > A further improvement might be links to recommended libraries like > plexus-utils or plexus-components. This would point peoply to existing code > and prevent to error-prone reinvention of the wheel (only a few things on > earth are that simple that people get them reliably right...) -- 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