Ahh - I see where I made the mistake (cut-n-paste) error. Cheers
Raphaël On 17/03/06, Piéroni Raphaël <[EMAIL PROTECTED]> wrote: > > the @goal annotation is to be defined in the class javadoc, not in the > execute method javadoc... > > Just checkout the code of an existing mojo as an example :) > > Regards, > > Raphaël > > 2006/3/17, Mark <[EMAIL PROTECTED]>: > > > > I had a go at creating my first plugin, so I followed: > > > > http://maven.apache.org/guides/plugin/guide-java-plugin-development.html > > > > I aslo looked at: > > > > http://maven.apache.org/developers/mojo-api-specification.html > > > > My problem is that the mojo sections isn't being created in > > META-INF/maven/plugin.xml from the annotated java file so you get a > > java.lang.NullPointerException when you try to invoke the plugin. > > > > Any ideas why this didn't work for me ? > > ** > > *Here is what happened:* > > > > package jms.maven.first.mojo; > > > > import org.apache.maven.plugin.AbstractMojo; > > import org.apache.maven.plugin.MojoExecutionException; > > import org.apache.maven.plugin.MojoFailureException ; > > > > public class GreetingMojo extends AbstractMojo > > { > > /** > > * @goal sayhi > > * @description Says "Hi" to the user > > */ > > public void execute() throws MojoExecutionException, > MojoFailureException > > { > > getLog().info("Hello, world."); > > } > > } > > > > I made sure the <packaging>maven-plugin</packaging> was in the pom, > before > > I ran mvn install: > > > > [INFO] Scanning for projects... > > [INFO] > > > ---------------------------------------------------------------------------- > > [INFO] Building Sample Parameter-less Maven Plugin > > [INFO] task-segment: [install] > > [INFO] > > > ---------------------------------------------------------------------------- > > > > [INFO] [plugin:descriptor] > > [INFO] Using 2 extractors. > > [INFO] Applying extractor for language: java > > [INFO] Extractor for language: java found 0 mojo descriptors. > > [INFO] Applying extractor for language: bsh > > [INFO] Extractor for language: bsh found 0 mojo descriptors. > > [INFO] [resources:resources] > > [INFO] Using default encoding to copy filtered resources. > > [INFO] [compiler:compile] > > [INFO] Nothing to compile - all classes are up to date > > [INFO] [resources:testResources] > > [INFO] Using default encoding to copy filtered resources. > > [INFO] [compiler:testCompile] > > [INFO] No sources to compile > > [INFO] [surefire:test] > > [INFO] No tests to run. > > [INFO] [jar:jar] > > [INFO] Building jar: E:\java\work\workspaces- > > 3.1.2\default\jms.maven.first.mojo\targe > > [INFO] [plugin:addPluginArtifactMetadata] > > [INFO] [install:install] > > [INFO] Installing E:\java\work\workspaces- > > 3.1.2\default\jms.maven.first.mojo\target\m > > [INFO] [plugin:updateRegistry] > > [INFO] > > > ---------------------------------------------------------------------------- > > [INFO] BUILD SUCCESSFUL > > [INFO] > > > ---------------------------------------------------------------------------- > > > > > [INFO] Total time: 4 seconds > > [INFO] Finished at: Fri Mar 17 08:41:15 GMT 2006 > > [INFO] Final Memory: 5M/10M > > [INFO] > > > ---------------------------------------------------------------------------- > > > > > *I suppose the important bits are:* > > > > [INFO] Extractor for language: java found 0 mojo descriptors. > > [INFO] Applying extractor for language: bsh > > [INFO] Extractor for language: bsh found 0 mojo descriptors. > > > > *Sure enough if you try to invoke the plugin you get:* > > > > [INFO] Scanning for projects... > > [INFO] > > > ---------------------------------------------------------------------------- > > [ERROR] FATAL ERROR > > [INFO] > > > ---------------------------------------------------------------------------- > > > > [INFO] null > > [INFO] > > > ---------------------------------------------------------------------------- > > > [INFO] Trace > > java.lang.NullPointerException > > at org.apache.maven.plugin.descriptor.PluginDescriptor.getMojo ( > > PluginDescriptor.java:261) > > at > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor ( > > DefaultLifecycleExecutor.java:1363) > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.segmentTaskListByAggregationNeeds > ( > > DefaultLifecycleExecutor.java:376) > > at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute( > > DefaultLifecycleExecutor.java:132) > > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java > :316) > > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:113) > > at org.apache.maven.cli.MavenCli.main(MavenCli.java:249) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke ( > > NativeMethodAccessorImpl.java:39) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > > DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke (Method.java :585) > > at org.codehaus.classworlds.Launcher.launchEnhanced( > Launcher.java > > :315) > > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > > at org.codehaus.classworlds.Launcher.mainWithExitCode ( > > Launcher.java:430) > > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > > [INFO] > > > ---------------------------------------------------------------------------- > > [INFO] Total time: < 1 second > > [INFO] Finished at: Fri Mar 17 08:45:46 GMT 2006 > > [INFO] Final Memory: 1M/2M > > [INFO] > > > ---------------------------------------------------------------------------- > > > > Delving into the plugin jar META-INF/maven/plugin.xml file you find: > > > > <plugin> > > <description></description> > > <groupId>javamark</groupId> > > <artifactId>maven-hello-plugin</artifactId> > > <version> 1.0-SNAPSHOT</version> > > <goalPrefix>hello</goalPrefix> > > <isolatedRealm>false</isolatedRealm> > > <inheritedByDefault>true</inheritedByDefault> > > <mojos/> > > <dependencies/> > > </plugin> > > > > First off I am not sure where <goalPrefix>hello</goalPrefix> comes from > I > > would have thought this should be <goalPrefix>sayhi</goalPrefix> . > > > > The workaround was to *manually* create the mojo section as: > > > > <mojos> > > <mojo> > > <goal>sayhi</goal> > > <requiresProject>true</requiresProject> > > <requiresOnline>false</requiresOnline> > > <inheritedByDefault>true</inheritedByDefault> > > <implementation>jms.maven.first.mojo.GreetingMojo</implementation> > > > <language>java</language> > > <instantiationStrategy>per-lookup</instantiationStrategy> > > <executionStrategy>once-per-session</executionStrategy> > > </mojo> > > </mojos> > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > >
