Index: src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java	(working copy)
@@ -27,6 +27,8 @@
 import org.apache.maven.model.Site;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -83,67 +85,61 @@
 {
     /**
      * Directory containing the generated project sites and report distributions.
-     *
-     * @parameter alias="outputDirectory" expression="${project.reporting.outputDirectory}"
-     * @required
      */
+    @Parameter( alias = "outputDirectory", property = "project.reporting.outputDirectory", required = true )
     private File inputDirectory;
 
     /**
      * Whether to run the "chmod" command on the remote site after the deploy.
      * Defaults to "true".
      *
-     * @parameter expression="${maven.site.chmod}" default-value="true"
      * @since 2.1
      */
+    @Parameter( property = "maven.site.chmod", defaultValue = "true" )
     private boolean chmod;
 
     /**
      * The mode used by the "chmod" command. Only used if chmod = true.
      * Defaults to "g+w,a+rX".
      *
-     * @parameter expression="${maven.site.chmod.mode}" default-value="g+w,a+rX"
      * @since 2.1
      */
+    @Parameter( property = "maven.site.chmod.mode", defaultValue = "g+w,a+rX" )
     private String chmodMode;
 
     /**
      * The options used by the "chmod" command. Only used if chmod = true.
      * Defaults to "-Rf".
      *
-     * @parameter expression="${maven.site.chmod.options}" default-value="-Rf"
      * @since 2.1
      */
+    @Parameter( property = "maven.site.chmod.options", defaultValue = "-Rf" )
     private String chmodOptions;
 
     /**
      * Set this to 'true' to skip site deployment.
      *
-     * @parameter expression="${maven.site.deploy.skip}" default-value="false"
      * @since 3.0
      */
+    @Parameter( property = "maven.site.deploy.skip", defaultValue = "false" )
+
     private boolean skipDeploy;
 
     /**
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     /**
      * The current user system settings for use in Maven.
-     *
-     * @parameter expression="${settings}"
-     * @required
-     * @readonly
      */
+    @Component
     private Settings settings;
 
     /**
-     * @parameter expression="${session}"
-     * @required
-     * @readonly
      * @since 3.0-beta-2
      */
+    @Component
     protected MavenSession mavenSession;
 
     private PlexusContainer container;
Index: src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java	(working copy)
@@ -21,6 +21,7 @@
 
 import org.apache.maven.model.Site;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * Deploys the generated site using <a href="/wagon/">wagon supported
@@ -34,8 +35,8 @@
  *
  * @author <a href="mailto:michal@org.codehaus.org">Michal Maczka</a>
  * @version $Id$
- * @goal deploy
  */
+@Mojo( name = "deploy" )
 public class SiteDeployMojo
     extends AbstractDeployMojo
 {
Index: src/main/java/org/apache/maven/plugins/site/EffectiveSiteMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/EffectiveSiteMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/EffectiveSiteMojo.java	(working copy)
@@ -37,6 +37,8 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.WriterFactory;
@@ -50,9 +52,9 @@
  *
  * @author <a href="mailto:hboutemy@apache.org">Hervé Boutemy</a>
  * @version $Id$
- * @goal effective-site
  * @since 2.2
  */
+@Mojo( name = "effective-site" )
 public class EffectiveSiteMojo
     extends AbstractSiteRenderingMojo
 {
@@ -60,9 +62,8 @@
      * Optional parameter to write the output of this help in a given file, instead of writing to the console.
      * <br/>
      * <b>Note</b>: Could be a relative path.
-     *
-     * @parameter expression="${output}"
      */
+    @Parameter( property = "output" )
     protected File output;
 
     /**
Index: src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java	(working copy)
@@ -46,6 +46,8 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.exec.MavenReportExecution;
 import org.apache.maven.reporting.exec.MavenReportExecutor;
@@ -82,115 +84,103 @@
      *     &lt;xdoc&gt;changes.xml,navigation.xml&lt;/xdoc&gt;
      *   &lt;/moduleExcludes&gt;
      * </pre>
-     *
-     * @parameter
      */
+    @Parameter
     private Map<String, String> moduleExcludes;
 
     /**
      * The component for assembling inheritance.
-     *
-     * @component
      */
+    @Component
     private DecorationModelInheritanceAssembler assembler;
 
     /**
      * Remote repositories used for the project.
      *
      * @todo this is used for site descriptor resolution - it should relate to the actual project but for some reason they are not always filled in
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true )
     private List<ArtifactRepository> repositories;
 
     /**
      * Directory containing the template page.
      *
-     * @parameter expression="${templateDirectory}" default-value="src/site"
      * @deprecated use templateFile or skinning instead
      */
+    @Parameter( property = "templateDirectory", defaultValue = "src/site" )
     private File templateDirectory;
 
     /**
      * Default template page.
      *
-     * @parameter expression="${template}"
      * @deprecated use templateFile or skinning instead
      */
+    @Parameter( property = "template" )
     private String template;
 
     /**
      * The location of a Velocity template file to use. When used, skins and the default templates, CSS and images
      * are disabled. It is highly recommended that you package this as a skin instead.
      *
-     * @parameter expression="${templateFile}"
      * @since 2.0-beta-5
      */
+    @Parameter( property = "templateFile" )
     private File templateFile;
 
     /**
      * Additional template properties for rendering the site. See
      * <a href="/doxia/doxia-sitetools/doxia-site-renderer/">Doxia Site Renderer</a>.
-     *
-     * @parameter
      */
+    @Parameter
     private Map<String, Object> attributes;
 
     /**
      * Site renderer.
-     *
-     * @component
      */
+    @Component
     protected Renderer siteRenderer;
 
     /**
      * Reports (Maven 2).
-     * 
-     * @parameter expression="${reports}"
-     * @required
-     * @readonly
      */
+    @Parameter( property = "reports", required = true, readonly = true )
     protected List<MavenReport> reports;
 
     /**
      * Alternative directory for xdoc source, useful for m1 to m2 migration
      *
-     * @parameter default-value="${basedir}/xdocs"
      * @deprecated use the standard m2 directory layout
      */
+    @Parameter( defaultValue = "${basedir}/xdocs" )
     private File xdocDirectory;
 
     /**
      * Directory containing generated documentation.
      * This is used to pick up other source docs that might have been generated at build time.
      *
-     * @parameter alias="workingDirectory" default-value="${project.build.directory}/generated-site"
-     *
      * @todo should we deprecate in favour of reports?
      */
+    @Parameter( alias = "workingDirectory", defaultValue = "${project.build.directory}/generated-site" )
     protected File generatedSiteDirectory;
 
     /**
      * The current Maven session.
-     * 
-     * @parameter expression="${session}"
-     * @required
-     * @readonly
      */
+    @Component
     protected MavenSession mavenSession;
 
     /**
      * <p>Configuration section used internally by Maven 3.</p>
      * <p>More details available here:
      * <a href="http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Configuration_formats" target="_blank">
-     *     http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Configuration_formats</a>
+     * http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Configuration_formats</a>
      * </p>
      * <p><b>Note:</b> using this field is not mandatory with Maven 3 as Maven core injects usual
      * <code>&lt;reporting&gt;</code> section into this field.</p>
      *
-     * @parameter
      * @since 3.0-beta-1
      */
+    @Parameter
     private ReportPlugin[] reportPlugins;
 
     private PlexusContainer container;
@@ -199,22 +189,20 @@
      * Make links in the site descriptor relative to the project URL.
      * By default, any absolute links that appear in the site descriptor,
      * e.g. banner hrefs, breadcrumbs, menu links, etc., will be made relative to project.url.
-     *
+     * <p/>
      * Links will not be changed if this is set to false, or if the project has no URL defined.
      *
-     * @parameter expression="${relativizeDecorationLinks}" default-value="true"
-     *
      * @since 2.3
      */
+    @Parameter( property = "relativizeDecorationLinks", defaultValue = "true" )
     private boolean relativizeDecorationLinks;
 
     /**
      * Whether to generate the summary page for project reports: project-info.html.
      *
-     * @parameter expression="${generateProjectInfo}" default-value="true"
-     *
      * @since 2.3
      */
+    @Parameter( property = "generateProjectInfo", defaultValue = "true" )
     private boolean generateProjectInfo;
 
     /** {@inheritDoc} */
Index: src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java	(working copy)
@@ -22,6 +22,9 @@
 import java.io.File;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Deploys the generated site to a local staging or mock directory based on the site URL
@@ -34,9 +37,8 @@
  *
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
- * @goal stage
- * @requiresDependencyResolution test
  */
+@Mojo( name = "stage", requiresDependencyResolution = ResolutionScope.TEST )
 public class SiteStageMojo
     extends AbstractDeployMojo
 {
@@ -45,9 +47,8 @@
      * <code>C:\stagingArea\myProject\</code> on Windows or
      * <code>/stagingArea/myProject/</code> on Unix.
      * If this is not specified, the site will be staged in ${project.build.directory}/staging.
-     *
-     * @parameter expression="${stagingDirectory}"
      */
+    @Parameter( property = "stagingDirectory" )
     private File stagingDirectory;
 
     @Override
Index: src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java	(working copy)
@@ -26,6 +26,10 @@
 import java.util.Locale;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+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.MavenProjectHelper;
 
 import org.codehaus.plexus.util.FileUtils;
@@ -39,31 +43,29 @@
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
- * @goal attach-descriptor
- * @phase package
  */
+@Mojo( name = "attach-descriptor", defaultPhase = LifecyclePhase.PACKAGE )
 public class SiteDescriptorAttachMojo
     extends AbstractSiteMojo
 {
     /**
-     * @parameter expression="${basedir}"
-     * @required
-     * @readonly
      */
+    @Parameter( property = "basedir", required = true, readonly = true )
     private File basedir;
 
     /**
      * Maven ProjectHelper.
      *
-     * @component
      * @readonly
      * @since 2.1.1
      */
+    @Component
     private MavenProjectHelper projectHelper;
 
     /**
      * @parameter default-value="true"
      */
+    @Parameter( defaultValue = "true" )
     private boolean pomPackagingOnly;
 
     public void execute()
Index: src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java	(working copy)
@@ -30,6 +30,8 @@
 import org.apache.maven.artifact.versioning.ComparableVersion;
 import org.apache.maven.doxia.tools.SiteTool;
 import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import org.codehaus.plexus.i18n.I18N;
@@ -47,70 +49,56 @@
     /**
      * A comma separated list of locales supported by Maven. The first valid token will be the default Locale
      * for this instance of the Java Virtual Machine.
-     *
-     * @parameter expression="${locales}"
      */
+    @Parameter( property = "locales" )
     protected String locales;
 
     /**
      * SiteTool.
-     *
-     * @component
      */
+    @Component
     protected SiteTool siteTool;
 
     /**
      * Internationalization.
-     *
-     * @component
      */
+    @Component
     protected I18N i18n;
 
     /**
      * Directory containing the site.xml file and the source for apt, fml and xdoc docs.
-     *
-     * @parameter default-value="${basedir}/src/site"
      */
+    @Parameter( defaultValue = "${basedir}/src/site" )
     protected File siteDirectory;
 
     /**
      * The maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Component
     protected MavenProject project;
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true )
     protected ArtifactRepository localRepository;
 
     /**
      * The reactor projects.
-     *
-     * @parameter default-value="${reactorProjects}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
     protected List<MavenProject> reactorProjects;
 
     /**
      * Specifies the input encoding.
-     *
-     * @parameter expression="${encoding}" default-value="${project.build.sourceEncoding}"
      */
+    @Parameter( property = "encoding", defaultValue = "${project.build.sourceEncoding}" )
     private String inputEncoding;
 
     /**
      * Specifies the output encoding.
-     *
-     * @parameter expression="${outputEncoding}" default-value="${project.reporting.outputEncoding}"
      */
+    @Parameter( property = "outputEncoding", defaultValue = "${project.reporting.outputEncoding}" )
     private String outputEncoding;
 
     /**
Index: src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java	(working copy)
@@ -34,6 +34,8 @@
 import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.site.webapp.DoxiaBean;
 import org.apache.maven.plugins.site.webapp.DoxiaFilter;
 import org.apache.maven.reporting.exec.MavenReportExecution;
@@ -53,17 +55,15 @@
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
- * @goal run
- * @aggregator
  */
+@Mojo( name = "run", aggregator = true )
 public class SiteRunMojo
     extends AbstractSiteRenderingMojo
 {
     /**
      * Where to create the dummy web application.
-     *
-     * @parameter expression="${project.build.directory}/site-webapp"
      */
+    @Parameter( defaultValue = "${project.build.directory}/site-webapp" )
     private File tempWebappDirectory;
 
     /**
Index: src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java	(working copy)
@@ -27,8 +27,13 @@
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+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.MavenProjectHelper;
 
+import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.jar.JarArchiver;
 import org.codehaus.plexus.archiver.jar.ManifestException;
@@ -38,81 +43,74 @@
  *
  * @author <a href="mailto:mbeerman@yahoo.com">Matthew Beermann</a>
  * @version $Id$
- * @goal jar
- * @phase package
  * @since 2.0-beta-6
  */
+@Mojo( name = "jar", defaultPhase = LifecyclePhase.PACKAGE )
 public class SiteJarMojo
     extends SiteMojo
 {
-    private static final String[] DEFAULT_ARCHIVE_EXCLUDES = new String[]{};
+    private static final String[] DEFAULT_ARCHIVE_EXCLUDES = new String[]{ };
 
-    private static final String[] DEFAULT_ARCHIVE_INCLUDES = new String[]{"**/**"};
+    private static final String[] DEFAULT_ARCHIVE_INCLUDES = new String[]{ "**/**" };
 
     /**
      * Specifies the directory where the generated jar file will be put.
-     *
-     * @parameter expression="${project.build.directory}"
-     * @required
      */
+    @Parameter( property = "project.build.directory", required = true )
     private String jarOutputDirectory;
 
     /**
      * Specifies the filename that will be used for the generated jar file.
      * Please note that "-site" will be appended to the file name.
-     *
-     * @parameter expression="${project.build.finalName}"
-     * @required
      */
+    @Parameter( property = "project.build.finalName", required = true )
     private String finalName;
 
     /**
      * Used for attaching the artifact in the project.
-     *
-     * @component
      */
+    @Component
     private MavenProjectHelper projectHelper;
 
     /**
      * Specifies whether to attach the generated artifact to the project.
-     *
-     * @parameter expression="${site.attach}" default-value="true"
      */
+    @Parameter( property = "site.attach", defaultValue = "true" )
     private boolean attach;
 
     /**
      * The Jar archiver.
      *
-     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
      * @since 3.1
      */
+    @Component( role = Archiver.class, hint = "jar" )
     private JarArchiver jarArchiver;
 
     /**
      * The archive configuration to use.
      * See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
      *
-     * @parameter
      * @since 3.1
      */
+    @Parameter
     private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
 
     /**
      * List of files to include. Specified as file set patterns which are relative to the input directory whose contents
      * is being packaged into the JAR.
      *
-     * @parameter
      * @since 3.1
      */
+    @Parameter
     private String[] archiveIncludes;
 
     /**
      * List of files to exclude. Specified as file set patterns which are relative to the input directory whose contents
      * is being packaged into the JAR.
      *
-     * @parameter
      * @since 3.1
      */
+    @Parameter
     private String[] archiveExcludes;
 
     /**
Index: src/main/java/org/apache/maven/plugins/site/SiteMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteMojo.java	(working copy)
@@ -32,6 +32,9 @@
 import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.exec.MavenReportExecution;
 
@@ -45,32 +48,29 @@
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
- * @goal site
- * @requiresDependencyResolution test
  */
+@Mojo( name = "site", requiresDependencyResolution = ResolutionScope.TEST )
 public class SiteMojo
     extends AbstractSiteRenderingMojo
 {
     /**
      * Directory where the project sites and report distributions will be generated.
-     *
-     * @parameter expression="${siteOutputDirectory}" default-value="${project.reporting.outputDirectory}"
      */
+    @Parameter( property = "siteOutputDirectory", defaultValue = "${project.reporting.outputDirectory}" )
     protected File outputDirectory;
 
     /**
      * Convenience parameter that allows you to disable report generation.
-     *
-     * @parameter expression="${generateReports}" default-value="true"
      */
+    @Parameter( property = "generateReports", defaultValue = "true" )
     private boolean generateReports;
 
     /**
      * Generate a sitemap. The result will be a "sitemap.html" file at the site root.
      *
-     * @parameter expression="${generateSitemap}" default-value="false"
      * @since 2.1
      */
+    @Parameter( property = "generateSitemap", defaultValue = "false" )
     private boolean generateSitemap;
 
     /**
@@ -79,17 +79,17 @@
      * (in particular xdoc and fml) will be validated and any error will
      * lead to a build failure.
      *
-     * @parameter expression="${validate}" default-value="false"
      * @since 2.1.1
      */
+    @Parameter( property = "validate", defaultValue = "false" )
     private boolean validate;
 
     /**
      * Set this to 'true' to skip site generation.
      *
-     * @parameter expression="${maven.site.skip}" default-value="false"
      * @since 3.0
      */
+    @Parameter( property = "maven.site.skip", defaultValue = "false" )
     private boolean skip;
 
     /**
Index: src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java	(revision 1355599)
+++ src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java	(working copy)
@@ -26,6 +26,9 @@
 import org.apache.maven.model.PluginManagement;
 import org.apache.maven.model.Site;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
@@ -36,15 +39,14 @@
  *
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
- * @goal stage-deploy
- * @requiresDependencyResolution test
  */
+@Mojo( name = "stage-deploy", requiresDependencyResolution = ResolutionScope.TEST )
 public class SiteStageDeployMojo
     extends AbstractDeployMojo
 {
     /**
      * The staged site will be deployed to this URL.
-     *
+     * <p/>
      * If you don't specify this, the default-value will be
      * "${project.distributionManagement.site.url}/staging", where "project" is
      * either the current project or, in a reactor build, the top level project
@@ -55,25 +57,24 @@
      * in order for relative links between modules to be resolved correctly.
      * </p>
      *
-     * @parameter expression="${stagingSiteURL}"
      * @see <a href="http://maven.apache.org/maven-model/maven.html#class_site">MavenModel#class_site</a>
      */
+    @Parameter( property = "stagingSiteURL" )
     private String stagingSiteURL;
 
     /**
      * The identifier of the repository where the staging site will be deployed. This id will be used to lookup a
      * corresponding <code>&lt;server&gt;</code> entry from the <code>settings.xml</code>. If a matching
      * <code>&lt;server&gt;</code> entry is found, its configured credentials will be used for authentication.
-     *
+     * <p/>
      * If this is not specified, then the corresponding value of <code>distributionManagement.site.id</code>
      * will be taken as default, unless this is not defined either then the String
      * <code>"stagingSite"</code> is used. (<strong>Note</strong>:
      * until v. 2.3 and 3.0-beta-3 the String <code>"stagingSite"</code> is always used.)
      *
-     * @parameter expression="${stagingRepositoryId}"
-     *
      * @since 2.0.1
      */
+    @Parameter( property = "stagingRepositoryId" )
     private String stagingRepositoryId;
 
     @Override
Index: pom.xml
===================================================================
--- pom.xml	(revision 1355599)
+++ pom.xml	(working copy)
@@ -252,6 +252,14 @@
       <version>2.4.2</version>
     </dependency>
 
+    <!-- dependencies to annotations -->
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.1-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+
     <!-- Doxia -->
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
@@ -455,6 +463,20 @@
   </dependencies>
 
   <build>
+
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-plugin-plugin</artifactId>
+          <version>3.1-SNAPSHOT</version>
+          <configuration>
+            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
     <plugins>
       <plugin>
         <groupId>org.codehaus.plexus</groupId>
@@ -471,6 +493,18 @@
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>mojo-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
         <version>1.4</version>
         <executions>
