Use annotations instead of doclet tags in plugins
diff --git a/modules/tool/axis2-aar-maven-plugin/pom.xml b/modules/tool/axis2-aar-maven-plugin/pom.xml
index f4f064c..5b6f115 100644
--- a/modules/tool/axis2-aar-maven-plugin/pom.xml
+++ b/modules/tool/axis2-aar-maven-plugin/pom.xml
@@ -67,6 +67,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java
index 37578d7..b79bc79 100644
--- a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java
+++ b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java
@@ -20,14 +20,14 @@
 package org.apache.axis2.maven2.aar;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Generate the exploded aar
- *
- * @goal exploded
- * @phase package
- * @requiresDependencyResolution runtime
  */
+@Mojo(name = "exploded", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME)
 public class AarExplodedMojo
         extends AbstractAarMojo {
     public void execute()
diff --git a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java
index 52ad97b..aac574d 100644
--- a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java
+++ b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java
@@ -20,13 +20,13 @@
 package org.apache.axis2.maven2.aar;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Generates aar in the source directory
- *
- * @goal inplace
- * @requiresDependencyResolution runtime
  */
+@Mojo(name = "inplace", requiresDependencyResolution = ResolutionScope.RUNTIME)
 public class AarInPlaceMojo
         extends AbstractAarMojo {
 
diff --git a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java
index de10cd7..54ff343 100644
--- a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java
+++ b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java
@@ -25,7 +25,13 @@
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.execution.MavenSession;
 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.plugins.annotations.ResolutionScope;
 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;
@@ -35,72 +41,54 @@
 
 /**
  * Build a aar.
- *
- * @goal aar
- * @phase package
- * @requiresDependencyResolution runtime
- * @threadSafe
  */
+@Mojo(name = "aar", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true)
 public class AarMojo extends AbstractAarMojo {
     /**
      * The Maven Session
-     *
-     * @required
-     * @readonly
-     * @parameter property="session"
      */
+    @Parameter(required = true, readonly = true, property = "session")
     private MavenSession session;
     
     /**
      * The directory for the generated aar.
-     *
-     * @parameter default-value="${project.build.directory}"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.directory}", required = true)
     private String outputDirectory;
 
     /**
      * The name of the generated aar.
-     *
-     * @parameter default-value="${project.build.finalName}"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.finalName}", required = true)
     private String aarName;
 
     /**
      * The Jar archiver.
-     *
-     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
-     * @required
      */
+    @Component(role = Archiver.class, hint = "jar")
     private JarArchiver jarArchiver;
 
     /**
      * The maven archive configuration to use.
-     *
-     * @parameter
      */
+    @Parameter
     private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
 
     /**
      * Classifier to add to the artifact generated. If given, the artifact will be an attachment
      * instead.
-     *
-     * @parameter
      */
+    @Parameter
     private String classifier;
 
     /**
      * Whether this is the main artifact being built. Set to <code>false</code> if you don't want to
      * install or deploy it to the local repository instead of the default one in an execution.
-     *
-     * @parameter default-value="true"
      */
+    @Parameter(defaultValue = "true")
     private boolean primaryArtifact;
 
-    /**
-     * @component
-     */
+    @Component
     private MavenProjectHelper projectHelper;
 
     /**
diff --git a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java
index 4820352..b2675db 100644
--- a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java
+++ b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java
@@ -23,6 +23,7 @@
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
@@ -40,75 +41,60 @@
 
     /**
      * The projects base directory.
-     *
-     * @parameter property="project.basedir"
-     * @required
-     * @readonly
      */
+    @Parameter(property = "project.basedir", required = true, readonly = true)
     protected File baseDir;
 
     /**
      * The maven project.
-     *
-     * @parameter property="project"
-     * @required
-     * @readonly
      */
+    @Parameter(property = "project", required = true, readonly = true)
     protected MavenProject project;
 
     /**
      * The directory containing generated classes.
-     *
-     * @parameter default-value="${project.build.outputDirectory}"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.outputDirectory}", required = true)
     private File classesDirectory;
 
     /**
      * The directory where the aar is built.
-     *
-     * @parameter default-value="${project.build.directory}/aar"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.directory}/aar", required = true)
     protected File aarDirectory;
 
     /**
      * The location of the services.xml file.  If it is present in the META-INF directory in
      * src/main/resources with that name then it will automatically be included. Otherwise this
      * parameter must be set.
-     *
-     * @parameter default-value="src/main/resources/META-INF/services.xml"
      */
+    @Parameter(defaultValue = "src/main/resources/META-INF/services.xml")
     private File servicesXmlFile;
 
     /**
      * The location of the WSDL file, if any. By default, no WSDL file is added and it is assumed,
      * that Axis 2 will automatically generate a WSDL file.
-     *
-     * @parameter
      */
+    @Parameter
     private File wsdlFile;
 
     /**
      * Name, to which the wsdl file shall be mapped. By default, the name will be computed from the
      * files path by removing the directory.
-     *
-     * @parameter default-value="service.wsdl"
      */
+    @Parameter(defaultValue = "service.wsdl")
     private String wsdlFileName;
 
     /**
      * Additional file sets, which are being added to the archive.
-     *
-     * @parameter
      */
+    @Parameter
     private FileSet[] fileSets;
 
     /**
      * Whether the dependency jars should be included in the aar
-     *
-     * @parameter default-value="true"
      */
+    @Parameter(defaultValue = "true")
     private boolean includeDependencies;
 
     /**
diff --git a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/DeployAarMojo.java b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/DeployAarMojo.java
index 9778e2c..8074fd5 100644
--- a/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/DeployAarMojo.java
+++ b/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/DeployAarMojo.java
@@ -37,6 +37,9 @@
 
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.IOException;
@@ -46,34 +49,28 @@
 
 /**
  * Deploys an AAR to the Axis2 server.
- * 
- * @goal deployaar
- * @phase install
- * @threadSafe
  */
+@Mojo(name = "deployaar", defaultPhase = LifecyclePhase.INSTALL, threadSafe = true)
 public class DeployAarMojo extends AbstractAarMojo {
 
     private final static String LOGIN_FAILED_ERROR_MESSAGE = "Invalid auth credentials!";
 
     /**
      * The URL of the Axis2 administration console.
-     *
-     * @parameter default-value="http://localhost:8080/axis2/axis2-admin" property="axis2.aar.axis2AdminConsoleURL"
      */
+    @Parameter(defaultValue = "http://localhost:8080/axis2/axis2-admin", property = "axis2.aar.axis2AdminConsoleURL")
     private URL axis2AdminConsoleURL;
 
     /**
      * The administrator user name for the Axis2 administration console.
-     *
-     * @parameter property="axis2.aar.axis2AdminUser"
      */
+    @Parameter(property = "axis2.aar.axis2AdminUser")
     private String axis2AdminUser;
 
     /**
      * The administrator password for the Axis2 administration console.
-     *
-     * @parameter property="axis2.aar.axis2AdminPassword"
      */
+    @Parameter(property = "axis2.aar.axis2AdminPassword")
     private String axis2AdminPassword;
 
     /**
diff --git a/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml b/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
index 59fb73d..c783224 100644
--- a/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
+++ b/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
@@ -75,6 +75,11 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java b/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java
index ba322fb..ef2c73f 100644
--- a/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java
+++ b/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java
@@ -24,6 +24,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+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.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.apache.ws.java2wsdl.Java2WSDLCodegenEngine;
 import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOption;
@@ -40,12 +44,8 @@
 /**
  * Takes a Java class as input and converts it into an equivalent
  * WSDL file.
- * 
- * @goal java2wsdl
- * @phase process-classes
- * @requiresDependencyResolution compile
- * @threadSafe
  */
+@Mojo(name = "java2wsdl", defaultPhase = LifecyclePhase.PROCESS_CLASSES, requiresDependencyResolution = ResolutionScope.COMPILE, threadSafe = true)
 public class Java2WSDLMojo extends AbstractMojo {
     public static final String OPEN_BRACKET = "[";
     public static final String CLOSE_BRACKET = "]";
@@ -53,120 +53,117 @@
 
     /**
      * The maven project.
-     * @parameter property="project"
-     * @read-only
-     * @required
      */
+    @Parameter(property = "project", readonly = true, required = true)
     private MavenProject project;
 
     /**
      * Fully qualified name of the class, which is being inspected.
-     * @parameter property="axis2.java2wsdl.className"
-     * @required
      */
+    @Parameter(property = "axis2.java2wsdl.className", required = true)
     private String className;
 
     /**
      * Target namespace of the generated WSDL.
-     * @parameter property="axis2.java2wsdl.targetNamespace"
      */
+    @Parameter(property = "axis2.java2wsdl.targetNamespace")
     private String targetNamespace;
 
     /**
      * The namespace prefix, which is being used for the WSDL's
      * target namespace.
-     * @parameter property="axis2.java2wsdl.targetNamespacePrefix"
      */
+    @Parameter(property = "axis2.java2wsdl.targetNamespacePrefix")
     private String targetNamespacePrefix;
 
     /**
      * The generated schemas target namespace.
-     * @parameter property="axis2.java2wsdl.schemaTargetNamespace"
      */
+    @Parameter(property = "axis2.java2wsdl.schemaTargetNamespace")
     private String schemaTargetNamespace;
 
     /**
      * The generated schemas target namespace prefix.
-     * @parameter property="axis2.java2wsdl.schemaTargetNamespacePrefix"
      */
+    @Parameter(property = "axis2.java2wsdl.schemaTargetNamespacePrefix")
     private String schemaTargetNamespacePrefix;
 
     /**
      * Name of the generated service.
-     * @parameter property="axis2.java2wsdl.serviceName"
      */
+    @Parameter(property = "axis2.java2wsdl.serviceName")
     private String serviceName;
 
     /**
      * Name of the service file, which is being generated.
-     * @parameter property="axis2.java2wsdl.outputFileName" default-value="${project.build.directory}/generated-resources/service.wsdl"
      */
+    @Parameter(property = "axis2.java2wsdl.outputFileName", defaultValue = "${project.build.directory}/generated-resources/service.wsdl")
     private String outputFileName;
 
     /**
      * Style for the wsdl
-     * @parameter property="axis2.java2wsdl.style"
      */
+    @Parameter(property = "axis2.java2wsdl.style")
     private String style;
 
     /**
      * Use for the wsdl
-     * @parameter property="axis2.java2wsdl.use"
      */
+    @Parameter(property = "axis2.java2wsdl.use")
     private String use;
 
     /**
      * Version for the wsdl
-     * @parameter property="axis2.java2wsdl.wsdlVersion"
      */
+    @Parameter(property = "axis2.java2wsdl.wsdlVersion")
     private String wsdlVersion;
 
     /**
      * Namespace Generator
-     * @parameter property="axis2.java2wsdl.nsGenClassName"
      */
+    @Parameter(property = "axis2.java2wsdl.nsGenClassName")
     private String nsGenClassName;
 
     /**
      * Schema Generator
-     * @parameter property="axis2.java2wsdl.schemaGenClassName"
      */
+    @Parameter(property = "axis2.java2wsdl.schemaGenClassName")
     private String schemaGenClassName;
 
     /**
      * Location URI in the wsdl
-     * @parameter property="axis2.java2wsdl.locationUri"
      */
+    @Parameter(property = "axis2.java2wsdl.locationUri")
     private String locationUri;
 
     /**
      * attrFormDefault setting for the schema
-     * @parameter property="axis2.java2wsdl.attrFormDefault"
      */
+    @Parameter(property = "axis2.java2wsdl.attrFormDefault")
     private String attrFormDefault;
 
     /**
      * elementFormDefault setting for the schema
-     * @parameter property="axis2.java2wsdl.elementFormDefault"
      */
+    @Parameter(property = "axis2.java2wsdl.elementFormDefault")
     private String elementFormDefault;
 
     /**
      * Switch on the Doc/Lit/Bare style schema
-     * @parameter property="axis2.java2wsdl.docLitBare"
      */
+    @Parameter(property = "axis2.java2wsdl.docLitBare")
     private String docLitBare;
 
     /**
      * Additional classes for which we need to generate schema
-     * @parameter property="axis2.java2wsdl.extraClasses"
      */
+    @Parameter(property = "axis2.java2wsdl.extraClasses")
     private String[] extraClasses;
 
     /**
      * Specify namespaces explicitly for packages
-     * @parameter property="axis2.java2wsdl.package2Namespace"
      */
+    @Parameter(property = "axis2.java2wsdl.package2Namespace")
     private Properties package2Namespace;
 
     private void addToOptionMap(Map map, String option, String value) {
diff --git a/modules/tool/axis2-mar-maven-plugin/pom.xml b/modules/tool/axis2-mar-maven-plugin/pom.xml
index 7826ece..f8ac0fe 100644
--- a/modules/tool/axis2-mar-maven-plugin/pom.xml
+++ b/modules/tool/axis2-mar-maven-plugin/pom.xml
@@ -67,6 +67,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/AbstractMarMojo.java b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/AbstractMarMojo.java
index 5fbe747..dacdc58 100644
--- a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/AbstractMarMojo.java
+++ b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/AbstractMarMojo.java
@@ -23,6 +23,7 @@
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
@@ -44,59 +45,46 @@
 
     /**
      * The projects base directory.
-     *
-     * @parameter property="project.basedir"
-     * @required
-     * @readonly
      */
+    @Parameter(property = "project.basedir", required = true, readonly = true)
     protected File baseDir;
     
     /**
      * The maven project.
-     *
-     * @parameter property="project"
-     * @required
-     * @readonly
      */
+    @Parameter(property = "project", required = true, readonly = true)
     protected MavenProject project;
 
     /**
      * The directory containing generated classes.
-     *
-     * @parameter property="project.build.outputDirectory"
-     * @required
      */
+    @Parameter(property = "project.build.outputDirectory", required = true)
     private File classesDirectory;
 
     /**
      * The directory where the mar is built.
-     *
-     * @parameter default-value="${project.build.directory}/mar"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.directory}/mar", required = true)
     protected File marDirectory;
 
     /**
      * The location of the module.xml file.  If it is present in the META-INF
      * directory in src/main/resources with that name then it will automatically be 
      * included. Otherwise this parameter must be set.
-     *
-     * @parameter 
      */
+    @Parameter
     private File moduleXmlFile;
 
     /**
      * Additional file sets, which are being added to the archive.
-     *
-     * @parameter
      */
+    @Parameter
     private FileSet[] fileSets;
 
     /**
      * Whether the dependency jars should be included in the mar
-     * 
-     * @parameter default-value="true"
      */
+    @Parameter(defaultValue = "true")
     private boolean includeDependencies;
     
     /**
diff --git a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarExplodedMojo.java b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarExplodedMojo.java
index 1e623b6..e4bb1b1 100644
--- a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarExplodedMojo.java
+++ b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarExplodedMojo.java
@@ -20,15 +20,14 @@
 package org.apache.axis2.maven2.mar;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Generate the exploded mar
- *
- * @goal exploded
- * @phase package
- * @requiresDependencyResolution runtime
- * @threadSafe
  */
+@Mojo(name = "exploded", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true)
 public class MarExplodedMojo
     extends AbstractMarMojo
 {
diff --git a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarInPlaceMojo.java b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarInPlaceMojo.java
index 13036f3..1f14d83 100644
--- a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarInPlaceMojo.java
+++ b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarInPlaceMojo.java
@@ -20,14 +20,13 @@
 package org.apache.axis2.maven2.mar;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Generates mar in the source directory
- *
- * @goal inplace
- * @requiresDependencyResolution runtime
- * @threadSafe
  */
+@Mojo(name = "inplace", requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true)
 public class MarInPlaceMojo 
   extends AbstractMarMojo
 {
diff --git a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarMojo.java b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarMojo.java
index b26b1c1..b207066 100644
--- a/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarMojo.java
+++ b/modules/tool/axis2-mar-maven-plugin/src/main/java/org/apache/axis2/maven2/mar/MarMojo.java
@@ -25,7 +25,13 @@
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.execution.MavenSession;
 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.plugins.annotations.ResolutionScope;
 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;
@@ -35,72 +41,54 @@
 
 /**
  * Build a mar.
- * 
- * @goal mar
- * @phase package
- * @requiresDependencyResolution runtime
- * @threadSafe
  */
+@Mojo(name = "mar", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true)
 public class MarMojo extends AbstractMarMojo
 {
     /**
      * The Maven Session
-     *
-     * @required
-     * @readonly
-     * @parameter property="session"
      */
+    @Parameter(required = true, readonly = true, property = "session")
     private MavenSession session;
     
     /**
      * The directory for the generated mar.
-     * 
-     * @parameter default-value="${project.build.directory}"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.directory}", required = true)
     private String outputDirectory;
 
     /**
      * The name of the generated mar.
-     * 
-     * @parameter default-value="${project.build.finalName}"
-     * @required
      */
+    @Parameter(defaultValue = "${project.build.finalName}", required = true)
     private String marName;
 
     /**
      * The Jar archiver.
-     * 
-     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
-     * @required
      */
+    @Component(role = Archiver.class, hint = "jar")
     private JarArchiver jarArchiver;
 
     /**
      * The maven archive configuration to use.
-     * 
-     * @parameter
      */
+    @Parameter
     private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
 
     /**
      * Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.
-     * 
-     * @parameter
      */
+    @Parameter
     private String classifier;
 
     /**
      * Whether this is the main artifact being built. Set to <code>false</code> if you don't want to install or deploy
      * it to the local repository instead of the default one in an execution.
-     * 
-     * @parameter default-value="true"
      */
+    @Parameter(defaultValue = "true")
     private boolean primaryArtifact;
 
-    /**
-     * @component
-     */
+    @Component
     private MavenProjectHelper projectHelper;
 
     /**
diff --git a/modules/tool/axis2-repo-maven-plugin/pom.xml b/modules/tool/axis2-repo-maven-plugin/pom.xml
index 4841b50..c07aa05 100644
--- a/modules/tool/axis2-repo-maven-plugin/pom.xml
+++ b/modules/tool/axis2-repo-maven-plugin/pom.xml
@@ -52,6 +52,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/AbstractCreateRepositoryMojo.java b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/AbstractCreateRepositoryMojo.java
index 24c2d5c..a2c93b2 100644
--- a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/AbstractCreateRepositoryMojo.java
+++ b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/AbstractCreateRepositoryMojo.java
@@ -60,144 +60,119 @@
 import org.codehaus.plexus.util.StringUtils;
 
 public abstract class AbstractCreateRepositoryMojo extends AbstractMojo {
-    /**
-     * @parameter property="project.artifacts"
-     * @readonly
-     * @required
-     */
+    @org.apache.maven.plugins.annotations.Parameter(property = "project.artifacts", readonly = true, required = true)
     private Set<Artifact> projectArtifacts;
     
-    /**
-     * @parameter property="project.collectedProjects"
-     * @required
-     * @readonly
-     */
+    @org.apache.maven.plugins.annotations.Parameter(property = "project.collectedProjects", required = true, readonly = true)
     private List<MavenProject> collectedProjects;
     
     /**
      * The directory (relative to the repository root) where AAR files are copied. This should be
      * set to the same value as the <tt>ServicesDirectory</tt> property in <tt>axis2.xml</tt>.
-     * 
-     * @parameter default-value="services"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "services")
     private String servicesDirectory;
     
     /**
      * The directory (relative to the repository root) where MAR files are copied. This should be
      * set to the same value as the <tt>ModulesDirectory</tt> property in <tt>axis2.xml</tt>.
-     * 
-     * @parameter default-value="modules"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "modules")
     private String modulesDirectory;
     
     /**
      * The directory (relative to the repository root) where JAX-WS service JARs will be deployed.
-     * 
-     * @parameter default-value="servicejars"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "servicejars")
     private String jaxwsServicesDirectory;
     
     /**
      * The <tt>axis2.xml</tt> file to be copied into the repository.
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private File axis2xml;
     
     /**
      * If present, an <tt>axis2.xml</tt> file will be generated (Experimental).
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private GeneratedAxis2Xml generatedAxis2xml;
     
     /**
      * The directory (relative to the repository root) where the <tt>axis2.xml</tt> file will be
      * written. If this parameter is not set, then the file will be written into the repository
      * root.
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private String configurationDirectory;
     
     /**
      * Specifies whether the plugin should scan the project dependencies for AAR and MAR artifacts.
-     * 
-     * @parameter default-value="true"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "true")
     private boolean useDependencies;
     
     /**
      * Specifies whether the plugin should scan Maven modules for AAR and MAR artifacts. This
      * parameter only has an effect for multimodule projects.
-     * 
-     * @parameter default-value="true"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "true")
     private boolean useModules;
     
     /**
      * Specifies whether the plugin should generate <tt>services.list</tt> and <tt>modules.list</tt>
      * files.
-     * 
-     * @parameter default-value="false"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "false")
     private boolean generateFileLists;
     
     /**
      * Specifies whether the plugin strips version numbers from AAR files.
-     * 
-     * @parameter default-value="true"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "true")
     private boolean stripServiceVersion;
     
     /**
      * Specifies whether the plugin strips version numbers from MAR files.
-     * 
-     * @parameter default-value="false"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "false")
     private boolean stripModuleVersion;
     
     /**
      * Specifies whether modules should be deployed to the repository.
-     * 
-     * @parameter default-value="true"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "true")
     private boolean includeModules;
     
     /**
      * Comma separated list of modules (by artifactId) to include in the repository.
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private String modules;
     
     /**
      * Specifies whether services should be deployed to the repository.
-     * 
-     * @parameter default-value="true"
      */
+    @org.apache.maven.plugins.annotations.Parameter(defaultValue = "true")
     private boolean includeServices;
     
     /**
      * Comma separated list of services (by artifactId) to include in the repository.
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private String services;
     
     /**
      * A list of JAX-WS service JARs to be generated (by packaging class files from the current
      * project).
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private JAXWSService[] jaxwsServices;
     
     /**
      * A list of service descriptions that should be processed to build exploded AARs.
-     * 
-     * @parameter
      */
+    @org.apache.maven.plugins.annotations.Parameter
     private ServiceDescription[] serviceDescriptions;
     
     protected abstract String getScope();
diff --git a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateRepositoryMojo.java b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateRepositoryMojo.java
index b3eb4b3..3fdf733 100644
--- a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateRepositoryMojo.java
+++ b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateRepositoryMojo.java
@@ -22,35 +22,30 @@
 import java.io.File;
 
 import org.apache.maven.artifact.Artifact;
+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.plugins.annotations.ResolutionScope;
 
 /**
  * Creates an Axis2 repository from the project's runtime dependencies. This goal is typically
  * used to build an Axis2 repository that will be packaged into some kind of distribution.
- * 
- * @goal create-repository
- * @phase package
- * @requiresDependencyResolution runtime
- * @threadSafe
  */
+@Mojo(name = "create-repository", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true)
 public class CreateRepositoryMojo extends AbstractCreateRepositoryMojo {
     /**
      * Input directory with additional files to be copied to the repository.
-     * 
-     * @parameter default-value="src/main/repository"
      */
+    @Parameter(defaultValue = "src/main/repository")
     private File inputDirectory;
     
     /**
      * The output directory where the repository will be created.
-     * 
-     * @parameter default-value="${project.build.directory}/repository"
      */
+    @Parameter(defaultValue = "${project.build.directory}/repository")
     private File outputDirectory;
     
-    /**
-     * @parameter property="project.build.outputDirectory"
-     * @readonly
-     */
+    @Parameter(property = "project.build.outputDirectory", readonly = true)
     private File buildOutputDirectory;
     
     @Override
diff --git a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateTestRepositoryMojo.java b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateTestRepositoryMojo.java
index 89639d7..e74d51d 100644
--- a/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateTestRepositoryMojo.java
+++ b/modules/tool/axis2-repo-maven-plugin/src/main/java/org/apache/axis2/maven2/repo/CreateTestRepositoryMojo.java
@@ -24,48 +24,37 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+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.plugins.annotations.ResolutionScope;
 
 /**
  * Creates an Axis2 repository from the project's dependencies in scope test. This goal is
  * typically used to build an Axis2 repository for use during unit tests. Note that this goal
  * is skipped if the <code>maven.test.skip</code> property is set to <code>true</code>.
- * 
- * @goal create-test-repository
- * @phase process-test-classes
- * @requiresDependencyResolution test
- * @threadSafe
  */
+@Mojo(name = "create-test-repository", defaultPhase = LifecyclePhase.PROCESS_TEST_CLASSES, requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true)
 public class CreateTestRepositoryMojo extends AbstractCreateRepositoryMojo {
     /**
      * Input directory with additional files to be copied to the repository.
-     * 
-     * @parameter default-value="src/test/repository"
      */
+    @Parameter(defaultValue = "src/test/repository")
     private File inputDirectory;
     
     /**
      * The output directory where the repository will be created.
-     * 
-     * @parameter default-value="${project.build.directory}/test-repository"
      */
+    @Parameter(defaultValue = "${project.build.directory}/test-repository")
     private File outputDirectory;
     
-    /**
-     * @parameter property="maven.test.skip"
-     * @readonly
-     */
+    @Parameter(property = "maven.test.skip", readonly = true)
     private boolean skip;
     
-    /**
-     * @parameter property="project.build.outputDirectory"
-     * @readonly
-     */
+    @Parameter(property = "project.build.outputDirectory", readonly = true)
     private File buildOutputDirectory;
     
-    /**
-     * @parameter property="project.build.testOutputDirectory"
-     * @readonly
-     */
+    @Parameter(property = "project.build.testOutputDirectory", readonly = true)
     private File buildTestOutputDirectory;
     
     @Override
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml b/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
index e31d4c7..c2687ef 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
@@ -51,6 +51,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
index 4b09252..71804ce 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
@@ -28,6 +28,7 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -38,204 +39,159 @@
 public abstract class AbstractWSDL2CodeMojo extends AbstractMojo {
     /**
      * The maven project.
-     *
-     * @parameter property="project"
-     * @readonly
-     * @required
      */
+    @Parameter(property = "project", readonly = true, required = true)
     private MavenProject project;
 
     /**
      * The WSDL file, which is being read.
-     *
-     * @parameter property="axis2.wsdl2code.wsdlFile" default-value="src/main/resources/service.wsdl"
      */
+    @Parameter(property = "axis2.wsdl2code.wsdlFile", defaultValue = "src/main/resources/service.wsdl")
     private String wsdlFile;
 
     /**
      * Package name of the generated sources; will be used to create a package structure below the
      * output directory.
-     *
-     * @parameter property="axis2.wsdl2code.package"
      */
+    @Parameter(property = "axis2.wsdl2code.package")
     private String packageName;
 
     /**
      * The programming language of the generated sources.
-     *
-     * @parameter property="axis2.wsdl2code.language" default-value="java"
      */
+    @Parameter(property = "axis2.wsdl2code.language", defaultValue = "java")
     private String language;
 
     /**
      * The databinding framework, which is being used by the generated sources.
-     *
-     * @parameter property="axis2.wsdl2code.databindingName" default-value="adb"
      */
+    @Parameter(property = "axis2.wsdl2code.databindingName", defaultValue = "adb")
     private String databindingName;
 
     /**
      * The binding file for JiBX databinding.
-     *
-     * @parameter property="axis2.wsdl2code.jibxBindingFile"
      */
+    @Parameter(property = "axis2.wsdl2code.jibxBindingFile")
     private String jibxBindingFile;
 
     /**
      * Port name, for which to generate sources. By default, sources will be generated for a
      * randomly picked port.
-     *
-     * @parameter property="axis2.wsdl2code.portName"
      */
+    @Parameter(property = "axis2.wsdl2code.portName")
     private String portName;
 
     /**
      * Service name, for which to generate sources. By default, sources will be generated for all
      * services.
-     *
-     * @parameter property="axis2.wsdl2code.serviceName"
      */
+    @Parameter(property = "axis2.wsdl2code.serviceName")
     private String serviceName;
 
     /**
      * Mode, for which sources are being generated; either of "sync", "async" or "both".
-     *
-     * @parameter property="axis2.wsdl2code.syncMode" default-value="both"
      */
+    @Parameter(property = "axis2.wsdl2code.syncMode", defaultValue = "both")
     private String syncMode;
 
     /**
      * Whether server side sources are being generated.
-     *
-     * @parameter property="axis2.wsdl2code.generateServerSide" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.generateServerSide", defaultValue = "false")
     private boolean generateServerSide;
 
     /**
      * Whether a test case is being generated.
-     *
-     * @parameter property="axis2.wsdl2code.generateTestCase" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.generateTestCase", defaultValue = "false")
     private boolean generateTestcase;
 
     /**
      * Whether a "services.xml" file is being generated.
-     *
-     * @parameter property="axis2.wsdl2code.generateServicesXml" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.generateServicesXml", defaultValue = "false")
     private boolean generateServicesXml;
 
     /**
      * Whether to generate simply all classes. This is only valid in conjunction with
      * "generateServerSide".
-     *
-     * @parameter property="axis2.wsdl2code.generateAllClasses" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.generateAllClasses", defaultValue = "false")
     private boolean generateAllClasses;
 
     /**
      * Whether to unpack classes.
-     *
-     * @parameter property="axis2.wsdl2code.unpackClasses" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.unpackClasses", defaultValue = "false")
     private boolean unpackClasses;
 
     /**
      * Whether to generate the server side interface.
-     *
-     * @parameter property="axis2.wsdl2code.generateServerSideInterface" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.generateServerSideInterface", defaultValue = "false")
     private boolean generateServerSideInterface = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.repositoryPath"
-     */
+    @Parameter(property = "axis2.wsdl2code.repositoryPath")
     private String repositoryPath = null;
 
-    /**
-     * @parameter property="axis2.wsdl2code.externalMapping"
-     */
+    @Parameter(property = "axis2.wsdl2code.externalMapping")
     private File externalMapping = null;
 
-    /**
-     * @parameter property="axis2.wsdl2code.wsdlVersion" default-value="1.1"
-     */
+    @Parameter(property = "axis2.wsdl2code.wsdlVersion", defaultValue = "1.1")
     private String wsdlVersion;
 
-    /**
-     * @parameter property="axis2.wsdl2code.targetSourceFolderLocation" default-value="src"
-     */
+    @Parameter(property = "axis2.wsdl2code.targetSourceFolderLocation", defaultValue = "src")
     private String targetSourceFolderLocation;
 
-    /**
-     * @parameter property="axis2.wsdl2code.targetResourcesFolderLocation"
-     */
+    @Parameter(property = "axis2.wsdl2code.targetResourcesFolderLocation")
     private String targetResourcesFolderLocation = null;
 
     /**
      * This will select between wrapped and unwrapped during code generation. Maps to the -uw option
      * of the command line tool.
-     * 
-     * @parameter property="axis2.wsdl2code.unwrap" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.unwrap", defaultValue = "false")
     private boolean unwrap = false;
 
     /**
      * Set this to true to generate code for all ports.
-     * 
-     * @parameter property="axis2.wsdl2code.allPorts" default-value="false"
      */
+    @Parameter(property = "axis2.wsdl2code.allPorts", defaultValue = "false")
     private boolean allPorts = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.backwardCompatible" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.backwardCompatible", defaultValue = "false")
     private boolean backwardCompatible = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.flattenFiles" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.flattenFiles", defaultValue = "false")
     private boolean flattenFiles = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.skipMessageReceiver" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.skipMessageReceiver", defaultValue = "false")
     private boolean skipMessageReceiver = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.skipBuildXML" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.skipBuildXML", defaultValue = "false")
     private boolean skipBuildXML = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.skipWSDL" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.skipWSDL", defaultValue = "false")
     private boolean skipWSDL = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.overWrite" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.overWrite", defaultValue = "false")
     private boolean overWrite = false;
 
-    /**
-     * @parameter property="axis2.wsdl2code.suppressPrefixes" default-value="false" *
-     */
+    @Parameter(property = "axis2.wsdl2code.suppressPrefixes", defaultValue = "false")
     private boolean suppressPrefixes = false;
 
     /**
      * Specify databinding specific extra options
-     *
-     * @parameter property="axis2.java2wsdl.options"
      */
+    @Parameter(property = "axis2.java2wsdl.options")
     private Properties options;
 
     /**
      * Map of namespace URI to packages in the format {@code uri1=package1,uri2=package2,...}. Using
      * this parameter is discouraged. In general, you should use the {@code namespaceUris}
      * parameter. However, the latter cannot be set on the command line.
-     * 
-     * @parameter property="axis2.wsdl2code.namespaceToPackages"
      */
+    @Parameter(property = "axis2.wsdl2code.namespaceToPackages")
     private String namespaceToPackages = null;
 
     /**
@@ -248,22 +204,20 @@
      *   &lt;/namespaceMapping>
      *   ...
      * &lt;/namespaceMapping></pre>
-     * 
-     * @parameter
      */
+    @Parameter
     private NamespaceMapping[] namespaceMappings;
     
     /**
-     * @parameter
      * @deprecated Use {@code namespaceMappings} instead.
      */
+    @Parameter
     private NamespaceMapping[] namespaceURIs = null;
     
     /**
      * The charset encoding to use for generated source files.
-     * 
-     * @parameter default-value="${project.build.sourceEncoding}"
      */
+    @Parameter(defaultValue = "${project.build.sourceEncoding}")
     private String encoding;
 
     /**
@@ -271,18 +225,16 @@
      * In general, you should use the {@code serviceName} parameter or ensure only one service exist.
      * Should be used together with {@code generateServerSideInterface}.
      * Maps to the -sin option of the command line tool.
-     *
-     * @parameter property="axis2.wsdl2code.skeletonInterfaceName"
      */
+    @Parameter(property = "axis2.wsdl2code.skeletonInterfaceName")
     private String skeletonInterfaceName;
 
     /**
      * Skeleton class name - used to specify a name for skeleton class other than the default one.
      * In general, you should use the {@code serviceName} parameter or ensure only one service exist.
      * Maps to the -scn option of the command line tool.
-     *
-     * @parameter property="axis2.wsdl2code.skeletonClassName"
      */
+    @Parameter(property = "axis2.wsdl2code.skeletonClassName")
     private String skeletonClassName;
     
     private CodeGenConfiguration buildConfiguration() throws CodeGenerationException, MojoFailureException {
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateSourcesMojo.java b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateSourcesMojo.java
index 12ec081..dfe1d98 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateSourcesMojo.java
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateSourcesMojo.java
@@ -20,21 +20,20 @@
 
 import java.io.File;
 
+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;
 
 /**
  * Generates source code from a WSDL.
- * 
- * @goal generate-sources
- * @phase generate-sources
- * @threadSafe
  */
+@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
 public class GenerateSourcesMojo extends AbstractWSDL2CodeMojo {
     /**
      * The output directory, where the generated sources are being created.
-     *
-     * @parameter property="axis2.wsdl2code.target" default-value="${project.build.directory}/generated-sources/wsdl2code"
      */
+    @Parameter(property = "axis2.wsdl2code.target", defaultValue = "${project.build.directory}/generated-sources/wsdl2code")
     private File outputDirectory;
     
     @Override
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateTestSourcesMojo.java b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateTestSourcesMojo.java
index 95543a6..f3bf215 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateTestSourcesMojo.java
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/GenerateTestSourcesMojo.java
@@ -20,23 +20,22 @@
 
 import java.io.File;
 
+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;
 
 /**
  * Generates source code from a WSDL, for use in unit tests. This goal bind by default to the
  * generate-test-sources phase and adds the sources to the test sources of the project; it is
  * otherwise identical to the axis2-wsdl2code:generate-sources goal.
- * 
- * @goal generate-test-sources
- * @phase generate-test-sources
- * @threadSafe
  */
+@Mojo(name = "generate-test-sources", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, threadSafe = true)
 public class GenerateTestSourcesMojo extends AbstractWSDL2CodeMojo {
     /**
      * The output directory, where the generated sources are being created.
-     *
-     * @parameter property="axis2.wsdl2code.target" default-value="${project.build.directory}/generated-test-sources/wsdl2code"
      */
+    @Parameter(property = "axis2.wsdl2code.target", defaultValue = "${project.build.directory}/generated-test-sources/wsdl2code")
     private File outputDirectory;
     
     @Override
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java
index 9cb4c59..99f369c 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java
@@ -21,24 +21,24 @@
 
 import java.io.File;
 
+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;
 
 /**
  * Generates source code from a WSDL.
  * 
- * @goal wsdl2code
- * @phase generate-sources
- * @threadSafe
  * @deprecated This goal is identical to axis2-wsdl2code:generate-sources; either switch to that
  *             goal or use the new axis2-wsdl2code:generate-test-sources goal if you need to
  *             generate code for use in unit tests only.
  */
+@Mojo(name = "wsdl2code", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, threadSafe = true)
 public class WSDL2CodeMojo extends GenerateSourcesMojo {
     /**
      * The output directory, where the generated sources are being created.
-     *
-     * @parameter property="axis2.wsdl2code.target" default-value="${project.build.directory}/generated-sources/axis2/wsdl2code"
      */
+    @Parameter(property = "axis2.wsdl2code.target", defaultValue = "${project.build.directory}/generated-sources/axis2/wsdl2code")
     private File outputDirectory;
 
     @Override
diff --git a/modules/tool/axis2-xsd2java-maven-plugin/pom.xml b/modules/tool/axis2-xsd2java-maven-plugin/pom.xml
index c665f3e..453e565 100644
--- a/modules/tool/axis2-xsd2java-maven-plugin/pom.xml
+++ b/modules/tool/axis2-xsd2java-maven-plugin/pom.xml
@@ -58,6 +58,11 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/AbstractXSD2JavaMojo.java b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/AbstractXSD2JavaMojo.java
index 4341919..918f524 100644
--- a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/AbstractXSD2JavaMojo.java
+++ b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/AbstractXSD2JavaMojo.java
@@ -28,6 +28,7 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.xml.sax.InputSource;
@@ -35,56 +36,42 @@
 public abstract class AbstractXSD2JavaMojo extends AbstractMojo {
     /**
      * The maven project.
-     * 
-     * @parameter property="project"
-     * @readonly
-     * @required
      */
+    @Parameter(property = "project", readonly = true, required = true)
     private MavenProject project;
 
     /**
      * The list of XSD files for which to generate the Java code.
-     * 
-     * @parameter
-     * @required
      */
+    @Parameter(required = true)
     private File[] xsdFiles;
 
     /**
      * Mapping of namespaces to target Java packages.
-     * 
-     * @parameter
      */
+    @Parameter
     private NamespaceMapping[] namespaceMappings;
 
     /**
      * The Java package to use for schema items without namespace.
-     * 
-     * @parameter
      */
+    @Parameter
     private String noNamespacePackageName;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private String mapperClassPackage;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private boolean helperMode;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private String packageName;
 
     /**
      * Specifies whether unexpected elements should be ignored (log warning) instead of creating an
      * exception.
-     * 
-     * @parameter
      */
+    @Parameter
     private boolean ignoreUnexpected;
 
     public void execute() throws MojoExecutionException, MojoFailureException {
diff --git a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateSourcesMojo.java b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateSourcesMojo.java
index 178a237..9f72848 100644
--- a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateSourcesMojo.java
+++ b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateSourcesMojo.java
@@ -20,21 +20,20 @@
 
 import java.io.File;
 
+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;
 
 /**
  * Generates Java classes from the specified schema files.
- * 
- * @goal generate-sources
- * @phase generate-sources
- * @threadSafe
  */
+@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
 public class GenerateSourcesMojo extends AbstractXSD2JavaMojo {
     /**
      * The output directory for the generated Java code.
-     *
-     * @parameter default-value="${project.build.directory}/generated-sources/xsd2java"
      */
+    @Parameter(defaultValue = "${project.build.directory}/generated-sources/xsd2java")
     private File outputDirectory;
     
     @Override
diff --git a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateTestSourcesMojo.java b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateTestSourcesMojo.java
index 3391923..4b04a93 100644
--- a/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateTestSourcesMojo.java
+++ b/modules/tool/axis2-xsd2java-maven-plugin/src/main/java/org/apache/axis2/maven/xsd2java/GenerateTestSourcesMojo.java
@@ -20,23 +20,22 @@
 
 import java.io.File;
 
+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;
 
 /**
  * Generates Java classes from the specified schema files, for use in unit tests. This goal binds by
  * default to the generate-test-sources phase and adds the sources to the test sources of the
  * project; it is otherwise identical to the axis2-xsd2java:generate-sources goal.
- * 
- * @goal generate-test-sources
- * @phase generate-test-sources
- * @threadSafe
  */
+@Mojo(name = "generate-test-sources", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, threadSafe = true)
 public class GenerateTestSourcesMojo extends AbstractXSD2JavaMojo {
     /**
      * The output directory for the generated Java code.
-     *
-     * @parameter default-value="${project.build.directory}/generated-test-sources/xsd2java"
      */
+    @Parameter(defaultValue = "${project.build.directory}/generated-test-sources/xsd2java")
     private File outputDirectory;
     
     @Override
diff --git a/modules/tool/simple-server-maven-plugin/pom.xml b/modules/tool/simple-server-maven-plugin/pom.xml
index 73e449c..7af91bc 100644
--- a/modules/tool/simple-server-maven-plugin/pom.xml
+++ b/modules/tool/simple-server-maven-plugin/pom.xml
@@ -45,6 +45,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
diff --git a/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java b/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java
index bb60b09..69ebaed 100644
--- a/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java
+++ b/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java
@@ -24,6 +24,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+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.plugins.annotations.ResolutionScope;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
@@ -39,65 +43,52 @@
  * Run simple Axis 2Server.
  * 
  * @since 1.7.0
- * @goal run 
- * @execute phase="compile"  // TODO - check this again.
- * @requiresDependencyResolution runtime 
- * @threadSafe
  */
+@Mojo(
+    name = "run",
+    defaultPhase = LifecyclePhase.COMPILE,  // TODO - check this again.
+    requiresDependencyResolution = ResolutionScope.RUNTIME,
+    threadSafe = true)
 public class SimpleHttpServerMojo extends AbstractMojo {
 
     // configuration parameters.
     /**
      * The repository path.
-     * 
-     * @parameter
      */
+    @Parameter
     private String repoPath;
 
     /**
      * Path to axis2.xml configuration file.
-     * 
-     * @parameter
      */
+    @Parameter
     private String confPath;
 
     /**
      * This parameter indicate service type whether it's JAX-WS or not.
-     * 
-     * @parameter default-value="false"
      */
+    @Parameter(defaultValue = "false")
     private boolean jaxwsService;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private String stdServiceSrcDir;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private String jaxwsServiceSrcDir;
 
-    /**
-     * @parameter
-     */
+    @Parameter
     private String moduleSrcDir;
 
-    /**
-     * @parameter 
-     */
+    @Parameter
     private String port;
     
     /**
      * Indicates whether to fork the server.
-     * 
-     * @parameter default-value="false"
      */
+    @Parameter(defaultValue = "false")
     private boolean fork;
     
-    /**
-     * @parameter default-value="1024"
-     */
+    @Parameter(defaultValue = "1024")
     private int dataBufferSize;
 
     /*
@@ -106,37 +97,26 @@
 
     /**
      * The plugin descriptor
-     * 
-     * @parameter default-value="${descriptor}"
-     * @required
      */
+    @Parameter(defaultValue = "${descriptor}", required = true)
     private PluginDescriptor descriptor;
 
     /**
      * Build directory of current project.
-     * 
-     * @parameter default-value="${project.build.directory}"
-     * @required
-     * @readonly
      */
+    @Parameter(defaultValue = "${project.build.directory}", required = true, readonly = true)
     private String buildDir;
 
     /**
      * Project version
-     * 
-     * @parameter default-value="${project.version}"
-     * @required
-     * @readonly
      */
+    @Parameter(defaultValue="${project.version}", required = true, readonly = true)
     private String projectVersion;
 
     /**
      * Project Id
-     * 
-     * @parameter default-value="${project.artifactId}"
-     * @required
-     * @readonly
      */
+    @Parameter(defaultValue = "${project.artifactId}", required = true, readonly = true)
     private String projectId;
 
     private Axis2Server server;
diff --git a/pom.xml b/pom.xml
index d6142be..2d8facc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -501,6 +501,7 @@
         <jaxws.rt.version>2.3.3</jaxws.rt.version>
         <jaxws.api.version>2.3.3</jaxws.api.version>
         <jsr311.api.version>1.1.1</jsr311.api.version>
+        <maven-plugin-tools.version>3.6.4</maven-plugin-tools.version>
         <!-- This variable is used in some Xdocs and is substituted using Velocity. Note that
              we can't use the project.version variable directly because of the dot. See
              http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html -->
@@ -860,6 +861,11 @@
                 <artifactId>maven-archiver</artifactId>
                 <version>${maven.archiver.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.maven.plugin-tools</groupId>
+                <artifactId>maven-plugin-annotations</artifactId>
+                <version>${maven-plugin-tools.version}</version>
+            </dependency>
             <dependency><!-- Some plexus-archiver versions seem to trigger OOM errors; see MSOURCES-98. -->
                 <groupId>org.codehaus.plexus</groupId>
                 <artifactId>plexus-archiver</artifactId>
@@ -1116,7 +1122,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-plugin-plugin</artifactId>
-                    <version>3.6.4</version>
+                    <version>${maven-plugin-tools.version}</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-resources-plugin</artifactId>