The scalamojo-maven-plugin is an extension of the maven-plugin-plugin plugin report to decorate mojo descriptors extracted by the Maven Plugin Tool for Annotations with additional mojo and parameter details extracted from scaladoc: description, @since, and @deprecated.
If there are problems please let me know.
package org.example.mojo import org.apache.maven.execution.MavenSession import org.apache.maven.plugin.AbstractMojo import org.apache.maven.plugin.MojoExecution import org.apache.maven.plugin.descriptor.PluginDescriptor import org.apache.maven.plugins.annotations.ResolutionScope import org.apache.maven.plugins.annotations.Component import org.apache.maven.plugins.annotations.Execute import org.apache.maven.plugins.annotations.InstantiationStrategy import org.apache.maven.plugins.annotations.LifecyclePhase import org.apache.maven.plugins.annotations.Mojo import org.apache.maven.plugins.annotations.Parameter import org.apache.maven.project.MavenProject import org.apache.maven.settings.Settings /** * Mojo Description. @Mojo( name = "<goal-name>" ) is the minimal required annotation. * @since <since-text> * @deprecated <deprecated-text> */ @Mojo( name = "<goal-name>", aggregator = <false|true>, configurator = "<role hint>", executionStrategy = "<once-per-session|always>", inheritByDefault = <true|false>, instantiationStrategy = InstantiationStrategy.<strategy>, defaultPhase = "<phase-name>", requiresDependencyResolution = ResolutionScope.<scope>, requiresDependencyCollection = ResolutionScope.<scope>, // (since Maven 3.0) requiresDirectInvocation = <false|true>, requiresOnline = <false|true>, requiresProject = <true|false>, requiresReports = <false|true>, // (unsupported since Maven 3.0) threadSafe = <false|true> ) // (since Maven 3.0) @Execute( goal = "<goal-name>", phase = LifecyclePhase.<phase> lifecycle = "<lifecycle-id>" ) class MyMojo extends AbstractMojo { /** * @since <since-text> * @deprecated <deprecated-text> */ @Parameter( alias = "myAlias", property = "a.property", defaultValue = "an expression with ${variables} eventually", readonly = <false|true> required = <false|true> ) var parameter: String = null @Component( role = classOf[MyComponentExtension], hint = "..." ) var component: MyComponent = null @Component var session: MavenSession = null @Component var project: MavenProject = null @Component var mojo: MojoExecution = null @Component // for Maven 3 only var plugin: PluginDescriptor = null @Component var settings: Settings = null def execute() { ... } }