[MCHANGES-381] Migrate plugin to Maven 3.0

 * Replacing usage of deprecated APIs in favor of maven-artifact-transfer
 * Renaming the packages to org.apache.maven.plugins
 * Failing the build if any deprecated parameters are used, in preparation of their complete removal
 * Removing Maven 2 specific code
 * Fixing Javadoc comments
 * Removing the use of raw types where possible

git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1784411 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index f740490..e38b94c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,8 +71,9 @@
   <properties>
     <doxiaVersion>1.4</doxiaVersion>
     <doxiaSitetoolsVersion>1.4</doxiaSitetoolsVersion>
-    <mavenVersion>2.2.1</mavenVersion>
+    <mavenVersion>3.0</mavenVersion>
     <sitePluginVersion>3.3</sitePluginVersion>
+    <wagonVersion>1.0-beta-6</wagonVersion>
   </properties>
 
   <dependencies>
@@ -99,11 +100,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>${mavenVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
       <artifactId>maven-settings</artifactId>
       <version>${mavenVersion}</version>
     </dependency>
@@ -123,20 +119,36 @@
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-impl</artifactId>
       <version>2.3</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.maven</groupId>
+          <artifactId>maven-project</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-filtering</artifactId>
-      <version>1.3</version>
+      <version>3.1.1</version>
     </dependency>
-    <!-- A dependency to maven-filtering, but it's overridden by 1.11 if not specified explicitly here -->
-    <!-- This can be removed if upgrading to maven-filtering 1.4 -->
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-artifact-transfer</artifactId>
+      <version>0.9.0</version>
+    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interpolation</artifactId>
       <version>1.24</version>
     </dependency>
 
+    <!-- wagon -->
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+      <version>${wagonVersion}</version>
+    </dependency>
+
     <!-- plexus -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -372,7 +384,25 @@
     <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
-      <version>1.2</version>
+      <version>2.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.aether</groupId>
+      <artifactId>aether-connector-wagon</artifactId>
+      <version>1.7</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http</artifactId>
+      <version>${wagonVersion}</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -389,7 +419,7 @@
                 This file should not contain a license header as it represents
                 real data downloaded from a JIRA server.
               -->
-              <exclude>src/test/resources/org/apache/maven/plugin/jira/unicode-jira-results.xml</exclude>
+              <exclude>src/test/resources/org/apache/maven/plugins/jira/unicode-jira-results.xml</exclude>
             </excludes>
           </configuration>
         </plugin>
diff --git a/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java b/src/main/java/org/apache/maven/plugins/announcement/AbstractAnnouncementMojo.java
similarity index 92%
rename from src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java
rename to src/main/java/org/apache/maven/plugins/announcement/AbstractAnnouncementMojo.java
index 392950e..26cd7ac 100644
--- a/src/main/java/org/apache/maven/plugin/announcement/AbstractAnnouncementMojo.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/AbstractAnnouncementMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement;
+package org.apache.maven.plugins.announcement;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.changes.AbstractChangesMojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.AbstractChangesMojo;
 
 /**
  * Abstract superclass for announcement mojos.
diff --git a/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
similarity index 95%
rename from src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java
rename to src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
index 4c013bc..23315fc 100644
--- a/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMailMojo.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement;
+package org.apache.maven.plugins.announcement;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -32,10 +32,10 @@
 
 import org.apache.maven.model.Developer;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.announcement.mailsender.ProjectJavamailMailSender;
 import org.apache.maven.plugins.annotations.Execute;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.announcement.mailsender.ProjectJavamailMailSender;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
@@ -65,7 +65,7 @@
      * Possible senders.
      */
     @Parameter( property = "project.developers", required = true, readonly = true )
-    private List from;
+    private List<Developer> from;
 
     /**
      * The id of the developer sending the announcement mail. Only used if the <tt>mailSender</tt> attribute is not set.
@@ -202,7 +202,7 @@
      * Recipient email address.
      */
     @Parameter( required = true )
-    private List toAddresses;
+    private List<Object> toAddresses;
 
     /**
      * Recipient cc email address.
@@ -210,7 +210,7 @@
      * @since 2.5
      */
     @Parameter
-    private List ccAddresses;
+    private List<Object> ccAddresses;
 
     /**
      * Recipient bcc email address.
@@ -218,7 +218,7 @@
      * @since 2.5
      */
     @Parameter
-    private List bccAddresses;
+    private List<Object> bccAddresses;
 
     /**
      * The username used to send the email.
@@ -437,15 +437,13 @@
         }
         else if ( fromDeveloperId == null )
         {
-            final Developer dev = (Developer) from.get( 0 );
+            final Developer dev = from.get( 0 );
             return new MailSender( dev.getName(), dev.getEmail() );
         }
         else
         {
-            for ( Object aFrom : from )
+            for ( Developer developer : from )
             {
-                Developer developer = (Developer) aFrom;
-
                 if ( fromDeveloperId.equals( developer.getId() ) )
                 {
                     return new MailSender( developer.getName(), developer.getEmail() );
@@ -460,32 +458,32 @@
     // announcement-mail accessors
     // ================================
 
-    public List getBccAddresses()
+    public List<Object> getBccAddresses()
     {
         return bccAddresses;
     }
 
-    public void setBccAddresses( List bccAddresses )
+    public void setBccAddresses( List<Object> bccAddresses )
     {
         this.bccAddresses = bccAddresses;
     }
 
-    public List getCcAddresses()
+    public List<Object> getCcAddresses()
     {
         return ccAddresses;
     }
 
-    public void setCcAddresses( List ccAddresses )
+    public void setCcAddresses( List<Object> ccAddresses )
     {
         this.ccAddresses = ccAddresses;
     }
 
-    public List getFrom()
+    public List<Developer> getFrom()
     {
         return from;
     }
 
-    public void setFrom( List from )
+    public void setFrom( List<Developer> from )
     {
         this.from = from;
     }
@@ -600,12 +598,12 @@
         this.announcementDirectory = announcementDirectory;
     }
 
-    public List getToAddresses()
+    public List<Object> getToAddresses()
     {
         return toAddresses;
     }
 
-    public void setToAddresses( List toAddresses )
+    public void setToAddresses( List<Object> toAddresses )
     {
         this.toAddresses = toAddresses;
     }
diff --git a/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
similarity index 92%
rename from src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
rename to src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
index be04f80..141405a 100644
--- a/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement;
+package org.apache.maven.plugins.announcement;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -29,24 +29,24 @@
 import java.util.Map;
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.changes.ChangesXML;
-import org.apache.maven.plugin.changes.IssueAdapter;
-import org.apache.maven.plugin.changes.ProjectUtils;
-import org.apache.maven.plugin.changes.ReleaseUtils;
-import org.apache.maven.plugin.github.GitHubDownloader;
-import org.apache.maven.plugin.github.GitHubIssueManagementSystem;
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueManagementSystem;
-import org.apache.maven.plugin.issues.IssueUtils;
-import org.apache.maven.plugin.jira.AbstractJiraDownloader;
-import org.apache.maven.plugin.jira.AdaptiveJiraDownloader;
-import org.apache.maven.plugin.jira.JIRAIssueManagmentSystem;
-import org.apache.maven.plugin.trac.TracDownloader;
-import org.apache.maven.plugin.trac.TracIssueManagmentSystem;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.ChangesXML;
+import org.apache.maven.plugins.changes.IssueAdapter;
+import org.apache.maven.plugins.changes.ProjectUtils;
+import org.apache.maven.plugins.changes.ReleaseUtils;
 import org.apache.maven.plugins.changes.model.Release;
+import org.apache.maven.plugins.github.GitHubDownloader;
+import org.apache.maven.plugins.github.GitHubIssueManagementSystem;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueManagementSystem;
+import org.apache.maven.plugins.issues.IssueUtils;
+import org.apache.maven.plugins.jira.AbstractJiraDownloader;
+import org.apache.maven.plugins.jira.AdaptiveJiraDownloader;
+import org.apache.maven.plugins.jira.JIRAIssueManagmentSystem;
+import org.apache.maven.plugins.trac.TracDownloader;
+import org.apache.maven.plugins.trac.TracIssueManagmentSystem;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
 import org.apache.velocity.Template;
@@ -93,7 +93,7 @@
      * @since 2.1
      */
     @Parameter
-    private Map announceParameters;
+    private Map<Object, Object> announceParameters;
 
     /**
      */
@@ -193,7 +193,7 @@
      * </p>
      */
     // CHECKSTYLE_OFF: LineLength
-    @Parameter( property = "changes.templateDirectory", defaultValue = "org/apache/maven/plugin/announcement", required = true )
+    @Parameter( property = "changes.templateDirectory", defaultValue = "org/apache/maven/plugins/announcement", required = true )
     private String templateDirectory;
     // CHECKSTYLE_ON: LineLength
 
@@ -268,8 +268,8 @@
      * @deprecated Since version 2.4 this parameter has been deprecated. Please use the issueManagementSystems parameter
      *             instead.
      */
-    @Parameter( property = "generateJiraAnnouncement", defaultValue = "false", required = true )
-    private boolean generateJiraAnnouncement;
+    @Parameter( property = "generateJiraAnnouncement" )
+    private Boolean generateJiraAnnouncement;
 
     /**
      * If releases from JIRA should be merged with the releases from a changes.xml file.
@@ -278,8 +278,8 @@
      * @deprecated Since version 2.4 this parameter has been deprecated. Please use the issueManagementSystems parameter
      *             instead.
      */
-    @Parameter( property = "changes.jiraMerge", defaultValue = "false" )
-    private boolean jiraMerge;
+    @Parameter( property = "changes.jiraMerge" )
+    private Boolean jiraMerge;
 
     /**
      * Defines the JIRA password for authentication into a private JIRA installation.
@@ -463,17 +463,16 @@
     /**
      * Generate the template
      *
-     * @throws MojoExecutionException
+     * @throws MojoExecutionException in case of errors
      */
     public void execute()
         throws MojoExecutionException
     {
         // Fail build fast if it is using deprecated parameters
-        if ( outputDirectory != null )
-        {
-            throw new MojoExecutionException( "You are using the old parameter 'outputDirectory'. "
-                + "You must use 'announcementDirectory' instead." );
-        }
+        failIfUsingDeprecatedParameter( outputDirectory, "outputDirectory", "announcementDirectory" );
+        failIfUsingDeprecatedParameter( generateJiraAnnouncement, "generateJiraAnnouncement",
+                                        "issueManagementSystems " );
+        failIfUsingDeprecatedParameter( jiraMerge, "jiraMerge", "issueManagementSystems " );
 
         // Run only at the execution root
         if ( runOnlyAtExecutionRoot && !isThisTheExecutionRoot() )
@@ -487,22 +486,9 @@
                 issueManagementSystems = new ArrayList<String>();
             }
 
-            // Handle deprecated parameters, in a backward compatible way
             if ( issueManagementSystems.isEmpty() )
             {
-                if ( this.jiraMerge )
-                {
-                    issueManagementSystems.add( CHANGES_XML );
-                    issueManagementSystems.add( JIRA );
-                }
-                else if ( generateJiraAnnouncement )
-                {
-                    issueManagementSystems.add( JIRA );
-                }
-                else
-                {
-                    issueManagementSystems.add( CHANGES_XML );
-                }
+                issueManagementSystems.add( CHANGES_XML );
             }
 
             // Fetch releases from the configured issue management systems
@@ -512,7 +498,7 @@
                 if ( getXmlPath().exists() )
                 {
                     ChangesXML changesXML = new ChangesXML( getXmlPath(), getLog() );
-                    List<Release> changesReleases = releaseUtils.convertReleaseList( changesXML.getReleaseList() );
+                    List<Release> changesReleases = changesXML.getReleaseList();
                     releases = releaseUtils.mergeReleases( null, changesReleases );
                     getLog().info( "Including issues from file " + getXmlPath() + " in announcement..." );
                 }
@@ -592,11 +578,21 @@
         }
     }
 
+    private void failIfUsingDeprecatedParameter( Object value, String name, String replacement )
+        throws MojoExecutionException
+    {
+        if ( value != null )
+        {
+            throw new MojoExecutionException( "You are using the old parameter '" + name + "'. " + "You must use '"
+                + replacement + "' instead." );
+        }
+    }
+
     /**
      * Add the parameters to velocity context
      *
      * @param releases A <code>List</code> of <code>Release</code>s
-     * @throws MojoExecutionException
+     * @throws MojoExecutionException in case of errors
      */
     public void doGenerate( List<Release> releases )
         throws MojoExecutionException
@@ -649,7 +645,7 @@
             if ( announceParameters == null )
             {
                 // empty Map to prevent NPE in velocity execution
-                context.put( "announceParameters", Collections.EMPTY_MAP );
+                context.put( "announceParameters", Collections.emptyMap() );
             }
             else
             {
@@ -675,7 +671,8 @@
      * @param outputDirectory directory where the file will be generated
      * @param template velocity template which will the context be merged
      * @param announcementFile The file name of the generated announcement
-     * @throws ResourceNotFoundException, VelocityException, IOException
+     * @throws VelocityException in case of errors.
+     * @throws MojoExecutionException in case of errors.
      */
     public void processTemplate( Context context, File outputDirectory, String template, String announcementFile )
         throws VelocityException, MojoExecutionException
diff --git a/src/main/java/org/apache/maven/plugin/announcement/MailSender.java b/src/main/java/org/apache/maven/plugins/announcement/MailSender.java
similarity index 96%
rename from src/main/java/org/apache/maven/plugin/announcement/MailSender.java
rename to src/main/java/org/apache/maven/plugins/announcement/MailSender.java
index e3f361c..bfb5eaa 100644
--- a/src/main/java/org/apache/maven/plugin/announcement/MailSender.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/MailSender.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement;
+package org.apache.maven.plugins.announcement;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/announcement/mailsender/ProjectJavamailMailSender.java b/src/main/java/org/apache/maven/plugins/announcement/mailsender/ProjectJavamailMailSender.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/announcement/mailsender/ProjectJavamailMailSender.java
rename to src/main/java/org/apache/maven/plugins/announcement/mailsender/ProjectJavamailMailSender.java
index c965824..db7a90d 100644
--- a/src/main/java/org/apache/maven/plugin/announcement/mailsender/ProjectJavamailMailSender.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/mailsender/ProjectJavamailMailSender.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement.mailsender;
+package org.apache.maven.plugins.announcement.mailsender;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/AbstractChangesMojo.java b/src/main/java/org/apache/maven/plugins/changes/AbstractChangesMojo.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/changes/AbstractChangesMojo.java
rename to src/main/java/org/apache/maven/plugins/changes/AbstractChangesMojo.java
index c1e4f08..1968394 100644
--- a/src/main/java/org/apache/maven/plugin/changes/AbstractChangesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/changes/AbstractChangesMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java b/src/main/java/org/apache/maven/plugins/changes/AbstractChangesReport.java
similarity index 81%
rename from src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
rename to src/main/java/org/apache/maven/plugins/changes/AbstractChangesReport.java
index 755d592..37dc15f 100644
--- a/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
+++ b/src/main/java/org/apache/maven/plugins/changes/AbstractChangesReport.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,14 +20,6 @@
  */
 
 import org.apache.commons.io.IOUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.doxia.sink.render.RenderingContext;
 import org.apache.maven.doxia.site.decoration.Body;
 import org.apache.maven.doxia.site.decoration.DecorationModel;
@@ -40,9 +32,14 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.reporting.AbstractMavenReport;
 import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.shared.artifact.DefaultArtifactCoordinate;
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
 import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.util.ReaderFactory;
 
@@ -120,22 +117,11 @@
     protected MavenProject project;
 
     /**
-     * Local Repository.
-     */
-    @Parameter( property = "localRepository", required = true, readonly = true )
-    protected ArtifactRepository localRepository;
-
-    /**
      */
     @Component
     protected ArtifactResolver resolver;
 
     /**
-     */
-    @Component
-    protected ArtifactFactory factory;
-
-    /**
      * Internationalization.
      */
     @Component
@@ -145,35 +131,20 @@
         throws MojoExecutionException
     {
         Skin skin = Skin.getDefaultSkin();
-
-        String version = skin.getVersion();
-        Artifact artifact;
+        DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate();
+        coordinate.setGroupId( skin.getGroupId() );
+        coordinate.setArtifactId( skin.getArtifactId() );
+        coordinate.setVersion( skin.getVersion() );
+        ProjectBuildingRequest pbr = new DefaultProjectBuildingRequest( mavenSession.getProjectBuildingRequest() );
+        pbr.setRemoteRepositories( project.getRemoteArtifactRepositories() );
         try
         {
-            if ( version == null )
-            {
-                version = Artifact.RELEASE_VERSION;
-            }
-            VersionRange versionSpec = VersionRange.createFromVersionSpec( version );
-            artifact = factory.createDependencyArtifact( skin.getGroupId(), skin.getArtifactId(), versionSpec, "jar",
-                                                         null, null );
-
-            resolver.resolve( artifact, project.getRemoteArtifactRepositories(), localRepository );
+            return resolver.resolveArtifact( pbr, coordinate ).getArtifact().getFile();
         }
-        catch ( InvalidVersionSpecificationException e )
+        catch ( ArtifactResolverException e )
         {
-            throw new MojoExecutionException( "The skin version '" + version + "' is not valid: " + e.getMessage() );
+            throw new MojoExecutionException( "Couldn't resolve the skin.", e );
         }
-        catch ( ArtifactResolutionException e )
-        {
-            throw new MojoExecutionException( "Unable to find skin", e );
-        }
-        catch ( ArtifactNotFoundException e )
-        {
-            throw new MojoExecutionException( "The skin does not exist: " + e.getMessage() );
-        }
-
-        return artifact.getFile();
     }
 
     public void execute()
@@ -200,7 +171,7 @@
             RenderingContext context = new RenderingContext( outputDirectory, getOutputName() + ".html" );
 
             SiteRendererSink sink = new SiteRendererSink( context );
-            generate( sink, locale );
+            generate( sink, null, locale );
 
             outputDirectory.mkdirs();
 
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesCheckMojo.java b/src/main/java/org/apache/maven/plugins/changes/ChangesCheckMojo.java
similarity index 96%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesCheckMojo.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesCheckMojo.java
index 3477c7a..2b9c0e4 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesCheckMojo.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesCheckMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -79,7 +79,7 @@
     /**
      * Check that the latest release contains a valid release date.
      *
-     * @throws MojoExecutionException
+     * @throws MojoExecutionException in case of errors.
      */
     public void execute()
         throws MojoExecutionException
@@ -100,7 +100,7 @@
                 ChangesXML xml = new ChangesXML( xmlPath, getLog() );
                 ReleaseUtils releaseUtils = new ReleaseUtils( getLog() );
                 Release release =
-                    releaseUtils.getLatestRelease( releaseUtils.convertReleaseList( xml.getReleaseList() ), version );
+                    releaseUtils.getLatestRelease( xml.getReleaseList(), version );
 
                 if ( !isValidDate( release.getDateRelease(), releaseDateFormat, releaseDateLocale ) )
                 {
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java b/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
similarity index 94%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
index d8b7064..8c826e2 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -92,8 +92,8 @@
      * @since 2.4
      * @deprecated using markup inside CDATA sections does not work for all output formats!
      */
-    @Parameter( defaultValue = "true" )
-    private boolean escapeHTML;
+    @Parameter
+    private Boolean escapeHTML;
 
     /**
      * The directory for interpolated changes.xml.
@@ -122,9 +122,9 @@
      * </p>
      *
      * @since 2.0-beta-2
-     * @deprecated As of 2.1 use issueLinkTemplatePerSystem : this one will be with system default
+     * @deprecated As of 2.1 use issueLinkTemplatePerSystem: this one will be with system default
      */
-    @Parameter( property = "changes.issueLinkTemplate", defaultValue = "%URL%/ViewIssue.jspa?key=%ISSUE%" )
+    @Parameter( property = "changes.issueLinkTemplate" )
     private String issueLinkTemplate;
 
     /**
@@ -242,6 +242,11 @@
     public void executeReport( Locale locale )
         throws MavenReportException
     {
+        failIfUsingDeprecatedParameter( escapeHTML, "escapeHTML",
+                                        "Using markup inside CDATA sections does not work for all output formats!" );
+        failIfUsingDeprecatedParameter( issueLinkTemplate, "issueLinkTemplate",
+                                        "You must use 'issueLinkTemplatePerSystem' for the system '"
+                                            + ChangesReportGenerator.DEFAULT_ISSUE_SYSTEM_KEY + "' instead." );
         Date now = new Date();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat( publishDateFormat, new Locale( publishDateLocale ) );
         Properties additionalProperties = new Properties();
@@ -284,7 +289,7 @@
         report.setAuthor( changesXml.getAuthor() );
         report.setTitle( changesXml.getTitle() );
 
-        report.setEscapeHTML( escapeHTML );
+        report.setEscapeHTML( true );
 
         // Create a case insensitive version of issueLinkTemplatePerSystem
         // We need something case insensitive to maintain backward compatibility
@@ -297,9 +302,8 @@
             caseInsensitiveIssueLinkTemplatePerSystem = new CaseInsensitiveMap( issueLinkTemplatePerSystem );
         }
 
-        // Set good default values for issue management systems here, but only
-        // if they have not been configured already by the user
-        addIssueLinkTemplate( ChangesReportGenerator.DEFAULT_ISSUE_SYSTEM_KEY, issueLinkTemplate );
+        // Set good default values for issue management systems here
+        addIssueLinkTemplate( ChangesReportGenerator.DEFAULT_ISSUE_SYSTEM_KEY, "%URL%/ViewIssue.jspa?key=%ISSUE%" );
         addIssueLinkTemplate( "Bitbucket", "%URL%/issue/%ISSUE%" );
         addIssueLinkTemplate( "Bugzilla", "%URL%/show_bug.cgi?id=%ISSUE%" );
         addIssueLinkTemplate( "GitHub", "%URL%/%ISSUE%" );
@@ -350,6 +354,15 @@
         copyStaticResources();
     }
 
+    private void failIfUsingDeprecatedParameter( Object value, String name, String message )
+        throws MavenReportException
+    {
+        if ( value != null )
+        {
+            throw new MavenReportException( "You are using the old parameter '" + name + "'. " + message );
+        }
+    }
+
     public String getDescription( Locale locale )
     {
         return getBundle( locale ).getString( "report.issues.description" );
@@ -451,7 +464,7 @@
     private void copyStaticResources()
         throws MavenReportException
     {
-        final String pluginResourcesBase = "org/apache/maven/plugin/changes";
+        final String pluginResourcesBase = "org/apache/maven/plugins/changes";
         String resourceNames[] = { "images/add.gif", "images/fix.gif", "images/icon_help_sml.gif", "images/remove.gif",
             "images/rss.png", "images/update.gif" };
         try
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java b/src/main/java/org/apache/maven/plugins/changes/ChangesReportGenerator.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesReportGenerator.java
index c27211f..ef36288 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesReportGenerator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -32,12 +32,12 @@
 import org.apache.maven.doxia.sink.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.util.HtmlTools;
-import org.apache.maven.plugin.issues.AbstractIssuesReportGenerator;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Component;
 import org.apache.maven.plugins.changes.model.DueTo;
 import org.apache.maven.plugins.changes.model.FixedIssue;
 import org.apache.maven.plugins.changes.model.Release;
+import org.apache.maven.plugins.issues.AbstractIssuesReportGenerator;
 
 /**
  * Generates a changes report.
@@ -100,33 +100,21 @@
         this.releaseList = releaseList;
     }
 
-    /**
-     * @since 2.4
-     */
     public boolean isEscapeHTML()
     {
         return escapeHTML;
     }
 
-    /**
-     * @since 2.4
-     */
     public void setEscapeHTML( boolean escapeHTML )
     {
         this.escapeHTML = escapeHTML;
     }
 
-    /**
-     * @since 2.4
-     */
     public String getSystem()
     {
         return system;
     }
 
-    /**
-     * @since 2.4
-     */
     public void setSystem( String system )
     {
         this.system = system;
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesValidatorMojo.java b/src/main/java/org/apache/maven/plugins/changes/ChangesValidatorMojo.java
similarity index 94%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesValidatorMojo.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesValidatorMojo.java
index faf23b6..b71b56f 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesValidatorMojo.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesValidatorMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,12 +24,12 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.changes.schema.ChangesSchemaValidator;
-import org.apache.maven.plugin.changes.schema.SchemaValidatorException;
-import org.apache.maven.plugin.changes.schema.XmlValidationHandler;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.schema.ChangesSchemaValidator;
+import org.apache.maven.plugins.changes.schema.SchemaValidatorException;
+import org.apache.maven.plugins.changes.schema.XmlValidationHandler;
 import org.xml.sax.SAXParseException;
 
 /**
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesXML.java b/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesXML.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
index 0e6a012..ee40e42 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesXML.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/ChangesXMLRuntimeException.java b/src/main/java/org/apache/maven/plugins/changes/ChangesXMLRuntimeException.java
similarity index 90%
rename from src/main/java/org/apache/maven/plugin/changes/ChangesXMLRuntimeException.java
rename to src/main/java/org/apache/maven/plugins/changes/ChangesXMLRuntimeException.java
index 4016e3e..6162098 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ChangesXMLRuntimeException.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesXMLRuntimeException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,8 +21,8 @@
 
 /**
  * This is a runtime exception class that is thrown by the
- * {@link ChangesXML#ChangesXML(java.io.File, org.apache.maven.plugin.logging.Log)} constructor if the given changes.xml
- * file cannot be parsed, for example it is not well-formed or valid.
+ * {@link ChangesXML#ChangesXML(java.io.File, org.apache.maven.plugin.logging.Log)} constructor if the given
+ * changes.xml file cannot be parsed, for example it is not well-formed or valid.
  *
  * @author <a href="mailto:szgabsz91@gmail.com">Gabor Szabo</a>
  */
diff --git a/src/main/java/org/apache/maven/plugin/changes/FeedGenerator.java b/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/changes/FeedGenerator.java
rename to src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
index 65300eb..b6fcf0b 100644
--- a/src/main/java/org/apache/maven/plugin/changes/FeedGenerator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java b/src/main/java/org/apache/maven/plugins/changes/IssueAdapter.java
similarity index 96%
rename from src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java
rename to src/main/java/org/apache/maven/plugins/changes/IssueAdapter.java
index af972e6..baf8f55 100644
--- a/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java
+++ b/src/main/java/org/apache/maven/plugins/changes/IssueAdapter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueManagementSystem;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueManagementSystem;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/src/main/java/org/apache/maven/plugin/changes/IssueType.java b/src/main/java/org/apache/maven/plugins/changes/IssueType.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/changes/IssueType.java
rename to src/main/java/org/apache/maven/plugins/changes/IssueType.java
index f78d136..940390d 100644
--- a/src/main/java/org/apache/maven/plugin/changes/IssueType.java
+++ b/src/main/java/org/apache/maven/plugins/changes/IssueType.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/ProjectUtils.java b/src/main/java/org/apache/maven/plugins/changes/ProjectUtils.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/changes/ProjectUtils.java
rename to src/main/java/org/apache/maven/plugins/changes/ProjectUtils.java
index cf95d18..e5f00c0 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ProjectUtils.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ProjectUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/changes/ReleaseUtils.java b/src/main/java/org/apache/maven/plugins/changes/ReleaseUtils.java
similarity index 91%
rename from src/main/java/org/apache/maven/plugin/changes/ReleaseUtils.java
rename to src/main/java/org/apache/maven/plugins/changes/ReleaseUtils.java
index 4274c1e..03113d4 100644
--- a/src/main/java/org/apache/maven/plugin/changes/ReleaseUtils.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ReleaseUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -177,27 +177,6 @@
     }
 
     /**
-     * Convert an untyped List of Release objects that comes from changes.xml into a typed List of Release objects.
-     *
-     * @param changesReleases An untyped List of Release objects
-     * @return A type List of Release objects
-     * @todo When Modello can generate typed collections this method is no longer needed
-     */
-    public List<Release> convertReleaseList( List<Release> changesReleases )
-    {
-        List<Release> releases = new ArrayList<Release>();
-
-        // Loop through the List of releases from changes.xml and casting each
-        // release to a Release
-        for ( Object changesRelease : changesReleases )
-        {
-            Release release = (Release) changesRelease;
-            releases.add( release );
-        }
-        return releases;
-    }
-
-    /**
      * Merge releases from parent component with releases from child component. If a release is found in both
      * components, i.e. they have the same version, their issues are merged into one (parent) release with component
      * marker for component issues.
diff --git a/src/main/java/org/apache/maven/plugin/changes/schema/ChangesSchemaValidator.java b/src/main/java/org/apache/maven/plugins/changes/schema/ChangesSchemaValidator.java
similarity index 86%
rename from src/main/java/org/apache/maven/plugin/changes/schema/ChangesSchemaValidator.java
rename to src/main/java/org/apache/maven/plugins/changes/schema/ChangesSchemaValidator.java
index d3a8e1a..4fc564d 100644
--- a/src/main/java/org/apache/maven/plugin/changes/schema/ChangesSchemaValidator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/schema/ChangesSchemaValidator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes.schema;
+package org.apache.maven.plugins.changes.schema;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -29,11 +29,11 @@
 public interface ChangesSchemaValidator
 {
     /**
-     * @param file
-     * @param schemaVersion
+     * @param file File to validate.
+     * @param schemaVersion Schema version.
      * @param failOnValidationError if false SchemaValidatorException will not be throw
      * @return {@link XmlValidationHandler}
-     * @throws SchemaValidatorException
+     * @throws SchemaValidatorException if validation failed.
      */
     XmlValidationHandler validateXmlWithSchema( File file, String schemaVersion, boolean failOnValidationError )
         throws SchemaValidatorException;
diff --git a/src/main/java/org/apache/maven/plugin/changes/schema/DefaultChangesSchemaValidator.java b/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
similarity index 96%
rename from src/main/java/org/apache/maven/plugin/changes/schema/DefaultChangesSchemaValidator.java
rename to src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
index f0c22a7..1eb93b5 100644
--- a/src/main/java/org/apache/maven/plugin/changes/schema/DefaultChangesSchemaValidator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes.schema;
+package org.apache.maven.plugins.changes.schema;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -32,17 +32,16 @@
 import javax.xml.validation.Validator;
 
 import org.apache.commons.io.input.XmlStreamReader;
+import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.xml.sax.SAXException;
 
 /**
- *
  * @author Olivier Lamy
  * @since 28 juil. 2008
  * @version $Id$
- *
- * @plexus.component role="org.apache.maven.plugin.changes.schema.ChangesSchemaValidator" role-hint="default"
  */
+@Component( role = ChangesSchemaValidator.class, hint = "default" )
 public class DefaultChangesSchemaValidator
     implements ChangesSchemaValidator
 {
diff --git a/src/main/java/org/apache/maven/plugin/changes/schema/SchemaValidatorException.java b/src/main/java/org/apache/maven/plugins/changes/schema/SchemaValidatorException.java
similarity index 91%
rename from src/main/java/org/apache/maven/plugin/changes/schema/SchemaValidatorException.java
rename to src/main/java/org/apache/maven/plugins/changes/schema/SchemaValidatorException.java
index dfa528b..e96ece8 100644
--- a/src/main/java/org/apache/maven/plugin/changes/schema/SchemaValidatorException.java
+++ b/src/main/java/org/apache/maven/plugins/changes/schema/SchemaValidatorException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes.schema;
+package org.apache.maven.plugins.changes.schema;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -34,8 +34,8 @@
     private static final long serialVersionUID = -8265574906534248274L;
 
     /**
-     * @param message
-     * @param cause
+     * @param message Message.
+     * @param cause Cause.
      */
     public SchemaValidatorException( String message, Throwable cause )
     {
diff --git a/src/main/java/org/apache/maven/plugin/changes/schema/XmlValidationHandler.java b/src/main/java/org/apache/maven/plugins/changes/schema/XmlValidationHandler.java
similarity index 96%
rename from src/main/java/org/apache/maven/plugin/changes/schema/XmlValidationHandler.java
rename to src/main/java/org/apache/maven/plugins/changes/schema/XmlValidationHandler.java
index 3378a21..bfcfa6c 100644
--- a/src/main/java/org/apache/maven/plugin/changes/schema/XmlValidationHandler.java
+++ b/src/main/java/org/apache/maven/plugins/changes/schema/XmlValidationHandler.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes.schema;
+package org.apache.maven.plugins.changes.schema;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -47,7 +47,7 @@
     private boolean failOnValidationError;
 
     /**
-     * see name
+     * @param failOnValidationError If fail on validation error.
      */
     public XmlValidationHandler( boolean failOnValidationError )
     {
diff --git a/src/main/java/org/apache/maven/plugin/github/GitHubDownloader.java b/src/main/java/org/apache/maven/plugins/github/GitHubDownloader.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/github/GitHubDownloader.java
rename to src/main/java/org/apache/maven/plugins/github/GitHubDownloader.java
index ddf7dc6..a6d0dd4 100644
--- a/src/main/java/org/apache/maven/plugin/github/GitHubDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/github/GitHubDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.github;
+package org.apache.maven.plugins.github;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.issues.Issue;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.issues.Issue;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
diff --git a/src/main/java/org/apache/maven/plugin/github/GitHubIssueManagementSystem.java b/src/main/java/org/apache/maven/plugins/github/GitHubIssueManagementSystem.java
similarity index 89%
rename from src/main/java/org/apache/maven/plugin/github/GitHubIssueManagementSystem.java
rename to src/main/java/org/apache/maven/plugins/github/GitHubIssueManagementSystem.java
index 1ded82e..5c7e7cd 100644
--- a/src/main/java/org/apache/maven/plugin/github/GitHubIssueManagementSystem.java
+++ b/src/main/java/org/apache/maven/plugins/github/GitHubIssueManagementSystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.github;
+package org.apache.maven.plugins.github;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.changes.IssueType;
-import org.apache.maven.plugin.issues.AbstractIssueManagementSystem;
+import org.apache.maven.plugins.changes.IssueType;
+import org.apache.maven.plugins.issues.AbstractIssueManagementSystem;
 
 /**
  * @since 2.8
diff --git a/src/main/java/org/apache/maven/plugin/github/GitHubMojo.java b/src/main/java/org/apache/maven/plugins/github/GitHubMojo.java
similarity index 95%
rename from src/main/java/org/apache/maven/plugin/github/GitHubMojo.java
rename to src/main/java/org/apache/maven/plugins/github/GitHubMojo.java
index ef947ad..7f4c89e 100644
--- a/src/main/java/org/apache/maven/plugin/github/GitHubMojo.java
+++ b/src/main/java/org/apache/maven/plugins/github/GitHubMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.github;
+package org.apache.maven.plugins.github;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -26,14 +26,14 @@
 import java.util.Map;
 import java.util.ResourceBundle;
 
-import org.apache.maven.plugin.changes.AbstractChangesReport;
-import org.apache.maven.plugin.changes.ProjectUtils;
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueUtils;
-import org.apache.maven.plugin.issues.IssuesReportGenerator;
-import org.apache.maven.plugin.issues.IssuesReportHelper;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.AbstractChangesReport;
+import org.apache.maven.plugins.changes.ProjectUtils;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueUtils;
+import org.apache.maven.plugins.issues.IssuesReportGenerator;
+import org.apache.maven.plugins.issues.IssuesReportHelper;
 import org.apache.maven.reporting.MavenReportException;
 import org.apache.maven.settings.Settings;
 
diff --git a/src/main/java/org/apache/maven/plugin/issues/AbstractIssueManagementSystem.java b/src/main/java/org/apache/maven/plugins/issues/AbstractIssueManagementSystem.java
similarity index 86%
rename from src/main/java/org/apache/maven/plugin/issues/AbstractIssueManagementSystem.java
rename to src/main/java/org/apache/maven/plugins/issues/AbstractIssueManagementSystem.java
index 669132a..05dbb58 100644
--- a/src/main/java/org/apache/maven/plugin/issues/AbstractIssueManagementSystem.java
+++ b/src/main/java/org/apache/maven/plugins/issues/AbstractIssueManagementSystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,14 +23,14 @@
 import java.util.Map;
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.changes.IssueType;
+import org.apache.maven.plugins.changes.IssueType;
 
 /**
  * Historically, this plugin started out working against an IMS-neutral XML file, and then added extensive support for
  * JIRA with some small snippets of code for other issue management systems. This class is intended to start a cleaner
  * modularity for support of multiple systems.<br>
  * Initially, all it provides is a structure for mapping from per-IMS issue types to the three categories defined in
- * {@link org.apache.maven.plugin.changes.IssueAdapter}. <br/>
+ * {@link org.apache.maven.plugins.changes.IssueAdapter}. <br>
  * Note that the map in here is <strong>not</strong> immutable. It contains the default configuration for an IMS. Users
  * are expected to add entries to the map via configuration to reflect their customizations.
  *
@@ -48,7 +48,7 @@
 
     /*
      * (non-Javadoc)
-     * @see org.apache.maven.plugin.issues.IssueManagementSystem#getIssueTypeMap()
+     * @see org.apache.maven.plugins.issues.IssueManagementSystem#getIssueTypeMap()
      */
     public Map<String, IssueType> getIssueTypeMap()
     {
@@ -57,13 +57,13 @@
 
     /*
      * (non-Javadoc)
-     * @see org.apache.maven.plugin.issues.IssueManagementSystem#getName()
+     * @see org.apache.maven.plugins.issues.IssueManagementSystem#getName()
      */
     public abstract String getName();
 
     /*
      * (non-Javadoc)
-     * @see org.apache.maven.plugin.issues.IssueManagementSystem#applyConfiguration(java.util.Map)
+     * @see org.apache.maven.plugins.issues.IssueManagementSystem#applyConfiguration(java.util.Map)
      */
     public void applyConfiguration( Map<String, String> issueTypes )
         throws MojoExecutionException
diff --git a/src/main/java/org/apache/maven/plugin/issues/AbstractIssuesReportGenerator.java b/src/main/java/org/apache/maven/plugins/issues/AbstractIssuesReportGenerator.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/issues/AbstractIssuesReportGenerator.java
rename to src/main/java/org/apache/maven/plugins/issues/AbstractIssuesReportGenerator.java
index 58393b1..cc53b1d 100644
--- a/src/main/java/org/apache/maven/plugin/issues/AbstractIssuesReportGenerator.java
+++ b/src/main/java/org/apache/maven/plugins/issues/AbstractIssuesReportGenerator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/issues/Issue.java b/src/main/java/org/apache/maven/plugins/issues/Issue.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/issues/Issue.java
rename to src/main/java/org/apache/maven/plugins/issues/Issue.java
index 490c1fc..4e42175 100644
--- a/src/main/java/org/apache/maven/plugin/issues/Issue.java
+++ b/src/main/java/org/apache/maven/plugins/issues/Issue.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/issues/IssueManagementSystem.java b/src/main/java/org/apache/maven/plugins/issues/IssueManagementSystem.java
similarity index 94%
rename from src/main/java/org/apache/maven/plugin/issues/IssueManagementSystem.java
rename to src/main/java/org/apache/maven/plugins/issues/IssueManagementSystem.java
index 5597e62..46a10a6 100644
--- a/src/main/java/org/apache/maven/plugin/issues/IssueManagementSystem.java
+++ b/src/main/java/org/apache/maven/plugins/issues/IssueManagementSystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,11 +22,11 @@
 import java.util.Map;
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.changes.IssueType;
+import org.apache.maven.plugins.changes.IssueType;
 
 /**
  * An interface for issue management systems.
- * <p/>
+ * <p>
  * The plan is to enhance this interface to allow communication with different issue management systems in a consistent
  * way.
  *
diff --git a/src/main/java/org/apache/maven/plugin/issues/IssueUtils.java b/src/main/java/org/apache/maven/plugins/issues/IssueUtils.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/issues/IssueUtils.java
rename to src/main/java/org/apache/maven/plugins/issues/IssueUtils.java
index bc18512..01d22b2 100644
--- a/src/main/java/org/apache/maven/plugin/issues/IssueUtils.java
+++ b/src/main/java/org/apache/maven/plugins/issues/IssueUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/issues/IssuesReportGenerator.java b/src/main/java/org/apache/maven/plugins/issues/IssuesReportGenerator.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/issues/IssuesReportGenerator.java
rename to src/main/java/org/apache/maven/plugins/issues/IssuesReportGenerator.java
index 5cba012..579cead 100644
--- a/src/main/java/org/apache/maven/plugin/issues/IssuesReportGenerator.java
+++ b/src/main/java/org/apache/maven/plugins/issues/IssuesReportGenerator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/issues/IssuesReportHelper.java b/src/main/java/org/apache/maven/plugins/issues/IssuesReportHelper.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/issues/IssuesReportHelper.java
rename to src/main/java/org/apache/maven/plugins/issues/IssuesReportHelper.java
index a52c56b..11c171c 100644
--- a/src/main/java/org/apache/maven/plugin/issues/IssuesReportHelper.java
+++ b/src/main/java/org/apache/maven/plugins/issues/IssuesReportHelper.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java b/src/main/java/org/apache/maven/plugins/jira/AbstractJiraDownloader.java
similarity index 95%
rename from src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
rename to src/main/java/org/apache/maven/plugins/jira/AbstractJiraDownloader.java
index eccd51b..0025051 100644
--- a/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/jira/AbstractJiraDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,13 +20,14 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueUtils;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyUtils;
 
 import java.io.File;
 import java.net.MalformedURLException;
@@ -180,11 +181,7 @@
                 jiraHost = url.getHost();
             }
 
-            // Validation of proxy method copied from org.apache.maven.wagon.proxy.ProxyUtils.
-            // @todo Can use original when maven-changes-plugin requires a more recent version of Maven
-
-            // if ( ProxyUtils.validateNonProxyHosts( proxyInfo, jiraHost ) )
-            if ( JiraHelper.validateNonProxyHosts( proxyInfo, jiraHost ) )
+            if ( ProxyUtils.validateNonProxyHosts( proxyInfo, jiraHost ) )
             {
                 return;
             }
diff --git a/src/main/java/org/apache/maven/plugin/jira/AdaptiveJiraDownloader.java b/src/main/java/org/apache/maven/plugins/jira/AdaptiveJiraDownloader.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/jira/AdaptiveJiraDownloader.java
rename to src/main/java/org/apache/maven/plugins/jira/AdaptiveJiraDownloader.java
index 0587afe..64b099d 100644
--- a/src/main/java/org/apache/maven/plugin/jira/AdaptiveJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/jira/AdaptiveJiraDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.issues.Issue;
 
 import java.util.List;
 
diff --git a/src/main/java/org/apache/maven/plugin/jira/ClassicJiraDownloader.java b/src/main/java/org/apache/maven/plugins/jira/ClassicJiraDownloader.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/jira/ClassicJiraDownloader.java
rename to src/main/java/org/apache/maven/plugins/jira/ClassicJiraDownloader.java
index 809ba51..596edfd 100644
--- a/src/main/java/org/apache/maven/plugin/jira/ClassicJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/jira/ClassicJiraDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -33,7 +33,7 @@
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.params.HttpClientParams;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.issues.Issue;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 
diff --git a/src/main/java/org/apache/maven/plugin/jira/JIRAIssueManagmentSystem.java b/src/main/java/org/apache/maven/plugins/jira/JIRAIssueManagmentSystem.java
similarity index 90%
rename from src/main/java/org/apache/maven/plugin/jira/JIRAIssueManagmentSystem.java
rename to src/main/java/org/apache/maven/plugins/jira/JIRAIssueManagmentSystem.java
index 4f9e16d..b4ef21d 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JIRAIssueManagmentSystem.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JIRAIssueManagmentSystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.changes.IssueType;
-import org.apache.maven.plugin.issues.AbstractIssueManagementSystem;
+import org.apache.maven.plugins.changes.IssueType;
+import org.apache.maven.plugins.issues.AbstractIssueManagementSystem;
 
 /**
  * The JIRA issue management system.
diff --git a/src/main/java/org/apache/maven/plugin/jira/JiraHelper.java b/src/main/java/org/apache/maven/plugins/jira/JiraHelper.java
similarity index 81%
rename from src/main/java/org/apache/maven/plugin/jira/JiraHelper.java
rename to src/main/java/org/apache/maven/plugins/jira/JiraHelper.java
index 1a2e9a6..9f97eae 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JiraHelper.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JiraHelper.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,12 +23,10 @@
 import java.text.ParsePosition;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.StringTokenizer;
 
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.wagon.proxy.ProxyInfo;
 
 /**
  * A helper class with common JIRA related functionality.
@@ -144,47 +142,6 @@
         return jiraId;
     }
 
-    /**
-     * Check if the specified host is in the list of non proxy hosts.
-     * <p/>
-     * Method copied from org.apache.maven.wagon.proxy.ProxyUtils. Can be deleted when maven-changes-plugin references a
-     * more recent version of maven-project
-     *
-     * @param proxy the proxy info object contains set of properties.
-     * @param targetHost the target hostname
-     * @return true if the hostname is in the list of non proxy hosts, false otherwise.
-     */
-    public static boolean validateNonProxyHosts( ProxyInfo proxy, String targetHost )
-    {
-        String tHost = targetHost;
-        if ( tHost == null )
-        {
-            tHost = "";
-        }
-        if ( proxy == null )
-        {
-            return false;
-        }
-        String nonProxyHosts = proxy.getNonProxyHosts();
-        if ( nonProxyHosts == null )
-        {
-            return false;
-        }
-
-        StringTokenizer tokenizer = new StringTokenizer( nonProxyHosts, "|" );
-
-        while ( tokenizer.hasMoreTokens() )
-        {
-            String pattern = tokenizer.nextToken();
-            pattern = pattern.replaceAll( "\\.", "\\\\." ).replaceAll( "\\*", ".*" );
-            if ( tHost.matches( pattern ) )
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
     private JiraHelper()
     {
         // utility class
@@ -237,6 +194,8 @@
     }
 
     /**
+     * @param url URL.
+     * @return the base URL.
      * @since 2.8
      */
     public static String getBaseUrl( String url )
diff --git a/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java b/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
rename to src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
index 4b02740..4777ee2 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,14 +27,14 @@
 import java.util.ResourceBundle;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.maven.plugin.changes.AbstractChangesReport;
-import org.apache.maven.plugin.changes.ProjectUtils;
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueUtils;
-import org.apache.maven.plugin.issues.IssuesReportGenerator;
-import org.apache.maven.plugin.issues.IssuesReportHelper;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.AbstractChangesReport;
+import org.apache.maven.plugins.changes.ProjectUtils;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueUtils;
+import org.apache.maven.plugins.issues.IssuesReportGenerator;
+import org.apache.maven.plugins.issues.IssuesReportHelper;
 import org.apache.maven.reporting.MavenReportException;
 import org.apache.maven.settings.Settings;
 
diff --git a/src/main/java/org/apache/maven/plugin/jira/JiraQueryBuilder.java b/src/main/java/org/apache/maven/plugins/jira/JiraQueryBuilder.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/jira/JiraQueryBuilder.java
rename to src/main/java/org/apache/maven/plugins/jira/JiraQueryBuilder.java
index 264d09e..dbe1e5d 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JiraQueryBuilder.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JiraQueryBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/jira/JiraXML.java b/src/main/java/org/apache/maven/plugins/jira/JiraXML.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/jira/JiraXML.java
rename to src/main/java/org/apache/maven/plugins/jira/JiraXML.java
index 93d9e6b..1bb2e22 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JiraXML.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JiraXML.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -34,8 +34,8 @@
 import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.issues.Issue;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.issues.Issue;
 import org.codehaus.plexus.util.IOUtil;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -94,7 +94,7 @@
      * Parse the given xml file. The list of issues can then be retrieved with {@link #getIssueList()}.
      * 
      * @param xmlPath the file to pares.
-     * @throws MojoExecutionException
+     * @throws MojoExecutionException in case of errors.
      * @since 2.4
      */
     public void parseXML( File xmlPath )
diff --git a/src/main/java/org/apache/maven/plugin/jira/JqlQueryBuilder.java b/src/main/java/org/apache/maven/plugins/jira/JqlQueryBuilder.java
similarity index 98%
rename from src/main/java/org/apache/maven/plugin/jira/JqlQueryBuilder.java
rename to src/main/java/org/apache/maven/plugins/jira/JqlQueryBuilder.java
index b257d28..d607d6c 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JqlQueryBuilder.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JqlQueryBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -111,7 +111,7 @@
      * with a JQL query that is valid, but returns nothing. Unless they both only reference the same fixVersion
      *
      * @param fixVersion a single fix version
-     * @return
+     * @return the builder.
      */
     public JiraQueryBuilder fixVersion( String fixVersion )
     {
@@ -124,7 +124,7 @@
      * with a JQL query that is valid, but returns nothing. Unless they both only reference the same fixVersion
      *
      * @param fixVersionIds a comma-separated list of version ids.
-     * @return
+     * @return the builder.
      */
     public JiraQueryBuilder fixVersionIds( String fixVersionIds )
     {
@@ -136,7 +136,7 @@
      * Add a sequence of version IDs already in a list.
      * 
      * @param fixVersionIds the version ids.
-     * @return
+     * @return the builder.
      */
     public JiraQueryBuilder fixVersionIds( List<String> fixVersionIds )
     {
diff --git a/src/main/java/org/apache/maven/plugin/jira/ParameterQueryBuilder.java b/src/main/java/org/apache/maven/plugins/jira/ParameterQueryBuilder.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/jira/ParameterQueryBuilder.java
rename to src/main/java/org/apache/maven/plugins/jira/ParameterQueryBuilder.java
index 666a7e0..074d449 100644
--- a/src/main/java/org/apache/maven/plugin/jira/ParameterQueryBuilder.java
+++ b/src/main/java/org/apache/maven/plugins/jira/ParameterQueryBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/jira/RestJiraDownloader.java b/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
similarity index 85%
rename from src/main/java/org/apache/maven/plugin/jira/RestJiraDownloader.java
rename to src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
index 08f4bb5..bfe3dd3 100644
--- a/src/main/java/org/apache/maven/plugin/jira/RestJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -36,7 +36,7 @@
 import org.apache.cxf.transports.http.configuration.ProxyServerType;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.issues.Issue;
 
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
@@ -84,6 +84,8 @@
     public static class NoRest
         extends Exception
     {
+        private static final long serialVersionUID = 6970088805270319624L;
+
         public NoRest()
         {
             // blank on purpose.
@@ -116,65 +118,55 @@
         String jiraUrl = urlMap.get( "url" );
         jiraProject = urlMap.get( "project" );
 
-        // This classloader juggling is a workaround for a classic Maven 2 class loader management bug.
-        ClassLoader ccl = Thread.currentThread().getContextClassLoader();
-        try
+        WebClient client = setupWebClient( jiraUrl );
+
+        // We use version 2 of the REST API, that first appeared in JIRA 5
+        // Check if version 2 of the REST API is supported
+        // http://docs.atlassian.com/jira/REST/5.0/
+        // Note that serverInfo can always be accessed without authentication
+        client.replacePath( "/rest/api/2/serverInfo" );
+        client.accept( MediaType.APPLICATION_JSON );
+        Response siResponse = client.get();
+        if ( siResponse.getStatus() != Response.Status.OK.getStatusCode() )
         {
-            Thread.currentThread().setContextClassLoader( WebClient.class.getClassLoader() );
-            WebClient client = setupWebClient( jiraUrl );
-
-            // We use version 2 of the REST API, that first appeared in JIRA 5
-            // Check if version 2 of the REST API is supported
-            // http://docs.atlassian.com/jira/REST/5.0/
-            // Note that serverInfo can always be accessed without authentication
-            client.replacePath( "/rest/api/2/serverInfo" );
-            client.accept( MediaType.APPLICATION_JSON );
-            Response siResponse = client.get();
-            if ( siResponse.getStatus() != Response.Status.OK.getStatusCode() )
-            {
-                throw new NoRest( "This JIRA server does not support version 2 of the REST API, "
-                    + "which maven-changes-plugin requires." );
-            }
-
-            doSessionAuth( client );
-
-            resolveIds( client, jiraProject );
-
-            // CHECKSTYLE_OFF: LineLength
-            String jqlQuery =
-                new JqlQueryBuilder( log ).urlEncode( false ).project( jiraProject ).fixVersion( getFixFor() ).fixVersionIds( resolvedFixVersionIds ).statusIds( resolvedStatusIds ).priorityIds( resolvedPriorityIds ).resolutionIds( resolvedResolutionIds ).components( resolvedComponentIds ).typeIds( resolvedTypeIds ).sortColumnNames( sortColumnNames ).filter( filter ).build();
-            // CHECKSTYLE_ON: LineLength
-
-            StringWriter searchParamStringWriter = new StringWriter();
-            JsonGenerator gen = jsonFactory.createGenerator( searchParamStringWriter );
-            gen.writeStartObject();
-            gen.writeStringField( "jql", jqlQuery );
-            gen.writeNumberField( "maxResults", nbEntriesMax );
-            gen.writeArrayFieldStart( "fields" );
-            // Retrieve all fields. If that seems slow, we can reconsider.
-            gen.writeString( "*all" );
-            gen.writeEndArray();
-            gen.writeEndObject();
-            gen.close();
-            client.replacePath( "/rest/api/2/search" );
-            client.type( MediaType.APPLICATION_JSON_TYPE );
-            client.accept( MediaType.APPLICATION_JSON_TYPE );
-            Response searchResponse = client.post( searchParamStringWriter.toString() );
-            if ( searchResponse.getStatus() != Response.Status.OK.getStatusCode() )
-            {
-                reportErrors( searchResponse );
-            }
-
-            JsonNode issueTree = getResponseTree( searchResponse );
-            assert issueTree.isObject();
-            JsonNode issuesNode = issueTree.get( "issues" );
-            assert issuesNode.isArray();
-            buildIssues( issuesNode, jiraUrl, jiraProject );
+            throw new NoRest( "This JIRA server does not support version 2 of the REST API, "
+                + "which maven-changes-plugin requires." );
         }
-        finally
+
+        doSessionAuth( client );
+
+        resolveIds( client, jiraProject );
+
+        // CHECKSTYLE_OFF: LineLength
+        String jqlQuery =
+            new JqlQueryBuilder( log ).urlEncode( false ).project( jiraProject ).fixVersion( getFixFor() ).fixVersionIds( resolvedFixVersionIds ).statusIds( resolvedStatusIds ).priorityIds( resolvedPriorityIds ).resolutionIds( resolvedResolutionIds ).components( resolvedComponentIds ).typeIds( resolvedTypeIds ).sortColumnNames( sortColumnNames ).filter( filter ).build();
+        // CHECKSTYLE_ON: LineLength
+
+        StringWriter searchParamStringWriter = new StringWriter();
+        JsonGenerator gen = jsonFactory.createGenerator( searchParamStringWriter );
+        gen.writeStartObject();
+        gen.writeStringField( "jql", jqlQuery );
+        gen.writeNumberField( "maxResults", nbEntriesMax );
+        gen.writeArrayFieldStart( "fields" );
+        // Retrieve all fields. If that seems slow, we can reconsider.
+        gen.writeString( "*all" );
+        gen.writeEndArray();
+        gen.writeEndObject();
+        gen.close();
+        client.replacePath( "/rest/api/2/search" );
+        client.type( MediaType.APPLICATION_JSON_TYPE );
+        client.accept( MediaType.APPLICATION_JSON_TYPE );
+        Response searchResponse = client.post( searchParamStringWriter.toString() );
+        if ( searchResponse.getStatus() != Response.Status.OK.getStatusCode() )
         {
-            Thread.currentThread().setContextClassLoader( ccl );
+            reportErrors( searchResponse );
         }
+
+        JsonNode issueTree = getResponseTree( searchResponse );
+        assert issueTree.isObject();
+        JsonNode issuesNode = issueTree.get( "issues" );
+        assert issuesNode.isArray();
+        buildIssues( issuesNode, jiraUrl, jiraProject );
     }
 
     private JsonNode getResponseTree( Response response )
diff --git a/src/main/java/org/apache/maven/plugin/jira/UrlBuilder.java b/src/main/java/org/apache/maven/plugins/jira/UrlBuilder.java
similarity index 97%
rename from src/main/java/org/apache/maven/plugin/jira/UrlBuilder.java
rename to src/main/java/org/apache/maven/plugins/jira/UrlBuilder.java
index a1681dd..90e63b5 100644
--- a/src/main/java/org/apache/maven/plugin/jira/UrlBuilder.java
+++ b/src/main/java/org/apache/maven/plugins/jira/UrlBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/resource/loader/ProjectResourceLoader.java b/src/main/java/org/apache/maven/plugins/resource/loader/ProjectResourceLoader.java
similarity index 99%
rename from src/main/java/org/apache/maven/plugin/resource/loader/ProjectResourceLoader.java
rename to src/main/java/org/apache/maven/plugins/resource/loader/ProjectResourceLoader.java
index 47583ec..1f4bc60 100644
--- a/src/main/java/org/apache/maven/plugin/resource/loader/ProjectResourceLoader.java
+++ b/src/main/java/org/apache/maven/plugins/resource/loader/ProjectResourceLoader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.resource.loader;
+package org.apache.maven.plugins.resource.loader;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/main/java/org/apache/maven/plugin/trac/TracDownloader.java b/src/main/java/org/apache/maven/plugins/trac/TracDownloader.java
similarity index 87%
rename from src/main/java/org/apache/maven/plugin/trac/TracDownloader.java
rename to src/main/java/org/apache/maven/plugins/trac/TracDownloader.java
index a23662d..c32ebae 100644
--- a/src/main/java/org/apache/maven/plugin/trac/TracDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/trac/TracDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.trac;
+package org.apache.maven.plugins.trac;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.issues.Issue;
 import org.apache.maven.project.MavenProject;
 import org.apache.xmlrpc.XmlRpcException;
 import org.apache.xmlrpc.client.XmlRpcClient;
@@ -73,25 +73,26 @@
 
         issue.setUpdated( parseDate( String.valueOf( ticketObj[2] ) ) );
 
-        Map attributes = (Map) ticketObj[3];
+        @SuppressWarnings( "unchecked" )
+        Map<String, String> attributes = (Map<String, String>) ticketObj[3];
 
-        issue.setType( (String) attributes.get( "type" ) );
+        issue.setType( attributes.get( "type" ) );
 
-        issue.setSummary( (String) attributes.get( "summary" ) );
+        issue.setSummary( attributes.get( "summary" ) );
 
-        issue.setStatus( (String) attributes.get( "status" ) );
+        issue.setStatus( attributes.get( "status" ) );
 
-        issue.setResolution( (String) attributes.get( "resolution" ) );
+        issue.setResolution( attributes.get( "resolution" ) );
 
-        issue.setAssignee( (String) attributes.get( "owner" ) );
+        issue.setAssignee( attributes.get( "owner" ) );
 
-        issue.addFixVersion( (String) attributes.get( "milestone" ) );
+        issue.addFixVersion( attributes.get( "milestone" ) );
 
-        issue.setPriority( (String) attributes.get( "priority" ) );
+        issue.setPriority( attributes.get( "priority" ) );
 
-        issue.setReporter( (String) attributes.get( "reporter" ) );
+        issue.setReporter( attributes.get( "reporter" ) );
 
-        issue.addComponent( (String) attributes.get( "component" ) );
+        issue.addComponent( attributes.get( "component" ) );
 
         return issue;
     }
diff --git a/src/main/java/org/apache/maven/plugin/trac/TracIssueManagmentSystem.java b/src/main/java/org/apache/maven/plugins/trac/TracIssueManagmentSystem.java
similarity index 90%
rename from src/main/java/org/apache/maven/plugin/trac/TracIssueManagmentSystem.java
rename to src/main/java/org/apache/maven/plugins/trac/TracIssueManagmentSystem.java
index 59c8fc4..3febc29 100644
--- a/src/main/java/org/apache/maven/plugin/trac/TracIssueManagmentSystem.java
+++ b/src/main/java/org/apache/maven/plugins/trac/TracIssueManagmentSystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.trac;
+package org.apache.maven.plugins.trac;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.changes.IssueType;
-import org.apache.maven.plugin.issues.AbstractIssueManagementSystem;
+import org.apache.maven.plugins.changes.IssueType;
+import org.apache.maven.plugins.issues.AbstractIssueManagementSystem;
 
 /**
  * The Trac issue management system.
diff --git a/src/main/java/org/apache/maven/plugin/trac/TracMojo.java b/src/main/java/org/apache/maven/plugins/trac/TracMojo.java
similarity index 92%
rename from src/main/java/org/apache/maven/plugin/trac/TracMojo.java
rename to src/main/java/org/apache/maven/plugins/trac/TracMojo.java
index 2813a71..48dac11 100644
--- a/src/main/java/org/apache/maven/plugin/trac/TracMojo.java
+++ b/src/main/java/org/apache/maven/plugins/trac/TracMojo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.trac;
+package org.apache.maven.plugins.trac;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -26,13 +26,13 @@
 import java.util.Map;
 import java.util.ResourceBundle;
 
-import org.apache.maven.plugin.changes.AbstractChangesReport;
-import org.apache.maven.plugin.changes.ProjectUtils;
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssuesReportGenerator;
-import org.apache.maven.plugin.issues.IssuesReportHelper;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.changes.AbstractChangesReport;
+import org.apache.maven.plugins.changes.ProjectUtils;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssuesReportGenerator;
+import org.apache.maven.plugins.issues.IssuesReportHelper;
 import org.apache.maven.reporting.MavenReportException;
 import org.apache.xmlrpc.XmlRpcException;
 
@@ -50,14 +50,12 @@
     /**
      * Deprecated Trac columns.
      */
-    @SuppressWarnings( "checkstyle:staticvariablename" )
-    private static Map<String, Integer> DEPRECATED_TRAC_COLUMNS = new HashMap<String, Integer>();
+    private static final Map<String, Integer> DEPRECATED_TRAC_COLUMNS = new HashMap<String, Integer>();
 
     /**
      * Valid Trac columns.
      */
-    @SuppressWarnings( "checkstyle:staticvariablename" )
-    private static Map<String, Integer> TRAC_COLUMNS = new HashMap<String, Integer>();
+    private static final Map<String, Integer> TRAC_COLUMNS = new HashMap<String, Integer>();
 
     static
     {
diff --git a/src/main/resources/META-INF/plexus/components.xml b/src/main/resources/META-INF/plexus/components.xml
index 5b08948..3c7408c 100644
--- a/src/main/resources/META-INF/plexus/components.xml
+++ b/src/main/resources/META-INF/plexus/components.xml
@@ -35,7 +35,7 @@
           </property>
           <property>
             <name>file.resource.loader.class</name>
-            <value>org.apache.maven.plugin.resource.loader.ProjectResourceLoader</value>
+            <value>org.apache.maven.plugins.resource.loader.ProjectResourceLoader</value>
           </property>
         </properties>
       </configuration>
diff --git a/src/main/resources/org/apache/maven/plugin/announcement/announcement.vm b/src/main/resources/org/apache/maven/plugins/announcement/announcement.vm
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/announcement/announcement.vm
rename to src/main/resources/org/apache/maven/plugins/announcement/announcement.vm
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/add.gif b/src/main/resources/org/apache/maven/plugins/changes/images/add.gif
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/add.gif
rename to src/main/resources/org/apache/maven/plugins/changes/images/add.gif
Binary files differ
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/fix.gif b/src/main/resources/org/apache/maven/plugins/changes/images/fix.gif
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/fix.gif
rename to src/main/resources/org/apache/maven/plugins/changes/images/fix.gif
Binary files differ
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/icon_help_sml.gif b/src/main/resources/org/apache/maven/plugins/changes/images/icon_help_sml.gif
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/icon_help_sml.gif
rename to src/main/resources/org/apache/maven/plugins/changes/images/icon_help_sml.gif
Binary files differ
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/remove.gif b/src/main/resources/org/apache/maven/plugins/changes/images/remove.gif
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/remove.gif
rename to src/main/resources/org/apache/maven/plugins/changes/images/remove.gif
Binary files differ
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/rss.png b/src/main/resources/org/apache/maven/plugins/changes/images/rss.png
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/rss.png
rename to src/main/resources/org/apache/maven/plugins/changes/images/rss.png
Binary files differ
diff --git a/src/main/resources/org/apache/maven/plugin/changes/images/update.gif b/src/main/resources/org/apache/maven/plugins/changes/images/update.gif
similarity index 100%
rename from src/main/resources/org/apache/maven/plugin/changes/images/update.gif
rename to src/main/resources/org/apache/maven/plugins/changes/images/update.gif
Binary files differ
diff --git a/src/site/apt/examples/include-announcement-file.apt.vm b/src/site/apt/examples/include-announcement-file.apt.vm
index c3402e6..ed98d52 100644
--- a/src/site/apt/examples/include-announcement-file.apt.vm
+++ b/src/site/apt/examples/include-announcement-file.apt.vm
@@ -57,7 +57,7 @@
             </goals>
             <configuration>
               <announcementFile>CHANGES.txt</announcementFile>
-              <outputDirectory>\${project.build.outputDirectory}/META-INF</outputDirectory>
+              <announcementDirectory>\${project.build.outputDirectory}/META-INF</announcementDirectory>
             </configuration>
           </execution>
         </executions>
diff --git a/src/site/apt/examples/using-a-custom-announcement-template.apt.vm b/src/site/apt/examples/using-a-custom-announcement-template.apt.vm
index e249663..d632395 100644
--- a/src/site/apt/examples/using-a-custom-announcement-template.apt.vm
+++ b/src/site/apt/examples/using-a-custom-announcement-template.apt.vm
@@ -68,7 +68,7 @@
  Next you want to create your own template. A wise thing is to start with the
  default one that is included in the plugin. You can download it from
  Subversion
- {{{http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-changes-plugin/src/main/resources/org/apache/maven/plugin/announcement/announcement.vm}here}}.
+ {{{http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-changes-plugin/src/main/resources/org/apache/maven/plugins/announcement/announcement.vm}here}}.
  It will provide you with examples on how to iterate over the actions of a
  release among other things.
 
diff --git a/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java b/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java
rename to src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
index a6d16e6..8dedfc6 100644
--- a/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.announcement;
+package org.apache.maven.plugins.announcement;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,6 +22,7 @@
 import java.io.File;
 import java.io.FileReader;
 
+import org.apache.maven.plugins.announcement.AnnouncementMojo;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
@@ -57,7 +58,7 @@
         setVariableValueToObject( mojo, "version", "1.1" );
         setVariableValueToObject( mojo, "template", "announcement.vm" );
         setVariableValueToObject( mojo, "templateDirectory",
-                                  "/src/main/resources/org/apache/maven/plugin/announcement/" );
+                                  "/src/main/resources/org/apache/maven/plugins/announcement/" );
         setVariableValueToObject( mojo, "basedir", getBasedir() );
         setVariableValueToObject( mojo, "introduction", "Nice library" );
         mojo.execute();
diff --git a/src/test/java/org/apache/maven/plugin/changes/ActionTest.java b/src/test/java/org/apache/maven/plugins/changes/ActionTest.java
similarity index 97%
rename from src/test/java/org/apache/maven/plugin/changes/ActionTest.java
rename to src/test/java/org/apache/maven/plugins/changes/ActionTest.java
index b731c62..e622cde 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ActionTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ActionTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/test/java/org/apache/maven/plugin/changes/ChangesCheckMojoTestCase.java b/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java
similarity index 97%
rename from src/test/java/org/apache/maven/plugin/changes/ChangesCheckMojoTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java
index b0ec627..204a5c8 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ChangesCheckMojoTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java
@@ -1,4 +1,6 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
+
+import org.apache.maven.plugins.changes.ChangesCheckMojo;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/test/java/org/apache/maven/plugin/changes/ChangesValidatorMojoTest.java b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
similarity index 96%
rename from src/test/java/org/apache/maven/plugin/changes/ChangesValidatorMojoTest.java
rename to src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
index 252f57a..9f6cb3d 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ChangesValidatorMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,6 +22,7 @@
 import java.io.File;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.changes.ChangesValidatorMojo;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 
 /**
diff --git a/src/test/java/org/apache/maven/plugin/changes/ChangesXMLTest.java b/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
similarity index 93%
rename from src/test/java/org/apache/maven/plugin/changes/ChangesXMLTest.java
rename to src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
index eb3ce5a..2807023 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ChangesXMLTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,8 @@
  */
 
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.changes.ChangesXML;
+import org.apache.maven.plugins.changes.ChangesXMLRuntimeException;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
 import org.codehaus.plexus.PlexusTestCase;
@@ -138,11 +140,10 @@
         assertNotNull( changesXML.getChangesDocument() );
         assertEquals( "Changes report Project", changesXML.getTitle() );
 
-        List releases = changesXML.getReleaseList();
+        List<Release> releases = changesXML.getReleaseList();
         assertEquals( 2, releases.size() );
-        for ( Object release1 : releases )
+        for ( Release release : releases )
         {
-            Release release = (Release) release1;
             if ( "1.0".equals( release.getVersion() ) )
             {
                 Action action = release.getActions().get( 0 );
@@ -160,7 +161,7 @@
 
         try
         {
-            ChangesXML changesXML = new ChangesXML( changesFile, new MockLog() );
+            new ChangesXML( changesFile, new MockLog() );
             fail( "Should have thrown a ChangesXMLRuntimeException due to the invalid changes.xml file" );
         }
         catch ( ChangesXMLRuntimeException e )
diff --git a/src/test/java/org/apache/maven/plugin/changes/FeedGeneratorTest.java b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
similarity index 97%
rename from src/test/java/org/apache/maven/plugin/changes/FeedGeneratorTest.java
rename to src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
index 19be34b..a700a4f 100644
--- a/src/test/java/org/apache/maven/plugin/changes/FeedGeneratorTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -29,6 +29,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.maven.plugins.changes.FeedGenerator;
 import org.apache.maven.plugins.changes.model.Release;
 
 /**
diff --git a/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java b/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
similarity index 91%
rename from src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java
rename to src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
index c224769..4b5aee2 100644
--- a/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,7 +9,7 @@
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *    http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -19,10 +19,12 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.issues.Issue;
-import org.apache.maven.plugin.issues.IssueManagementSystem;
-import org.apache.maven.plugin.jira.JIRAIssueManagmentSystem;
+import org.apache.maven.plugins.changes.IssueAdapter;
+import org.apache.maven.plugins.changes.IssueType;
 import org.apache.maven.plugins.changes.model.Action;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueManagementSystem;
+import org.apache.maven.plugins.jira.JIRAIssueManagmentSystem;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/maven/plugin/changes/ReleaseTest.java b/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
similarity index 92%
rename from src/test/java/org/apache/maven/plugin/changes/ReleaseTest.java
rename to src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
index 7f40906..ec07095 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ReleaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -26,6 +26,7 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
 
 public class ReleaseTest
@@ -71,7 +72,7 @@
 
     public void testGetSetAction()
     {
-        List actionList = new ArrayList();
+        List<Action> actionList = new ArrayList<Action>();
 
         release.setActions( actionList );
 
diff --git a/src/test/java/org/apache/maven/plugin/changes/ReleaseUtilsTestCase.java b/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTestCase.java
similarity index 96%
rename from src/test/java/org/apache/maven/plugin/changes/ReleaseUtilsTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTestCase.java
index f2f673d..39b470d 100644
--- a/src/test/java/org/apache/maven/plugin/changes/ReleaseUtilsTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.changes;
+package org.apache.maven.plugins.changes;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,8 +24,9 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.plugin.testing.SilentLog;
+import org.apache.maven.plugins.changes.ReleaseUtils;
 import org.apache.maven.plugins.changes.model.Release;
+import org.apache.maven.plugin.testing.SilentLog;
 
 /**
  * @author Dennis Lundberg
diff --git a/src/test/java/org/apache/maven/plugin/github/GitHubDownloaderTestCase.java b/src/test/java/org/apache/maven/plugins/github/GitHubDownloaderTestCase.java
similarity index 93%
rename from src/test/java/org/apache/maven/plugin/github/GitHubDownloaderTestCase.java
rename to src/test/java/org/apache/maven/plugins/github/GitHubDownloaderTestCase.java
index 9311cee..42ce82d 100644
--- a/src/test/java/org/apache/maven/plugin/github/GitHubDownloaderTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/github/GitHubDownloaderTestCase.java
@@ -11,11 +11,12 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.maven.plugin.github;
+package org.apache.maven.plugins.github;
 
 import junit.framework.TestCase;
 import org.apache.maven.model.IssueManagement;
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.github.GitHubDownloader;
+import org.apache.maven.plugins.issues.Issue;
 import org.apache.maven.project.MavenProject;
 import org.eclipse.egit.github.core.User;
 
diff --git a/src/test/java/org/apache/maven/plugin/issues/IssueManagementSystemTest.java b/src/test/java/org/apache/maven/plugins/issues/IssueManagementSystemTest.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugin/issues/IssueManagementSystemTest.java
rename to src/test/java/org/apache/maven/plugins/issues/IssueManagementSystemTest.java
index 4a77c57..b714a28 100644
--- a/src/test/java/org/apache/maven/plugin/issues/IssueManagementSystemTest.java
+++ b/src/test/java/org/apache/maven/plugins/issues/IssueManagementSystemTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.issues.AbstractIssueManagementSystem;
 
 import junit.framework.TestCase;
 
diff --git a/src/test/java/org/apache/maven/plugin/issues/IssueTestCase.java b/src/test/java/org/apache/maven/plugins/issues/IssueTestCase.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugin/issues/IssueTestCase.java
rename to src/test/java/org/apache/maven/plugins/issues/IssueTestCase.java
index 8b8ec5c..4870e8f 100644
--- a/src/test/java/org/apache/maven/plugin/issues/IssueTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/issues/IssueTestCase.java
@@ -1,4 +1,6 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
+
+import org.apache.maven.plugins.issues.Issue;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/test/java/org/apache/maven/plugin/issues/IssueUtilsTestCase.java b/src/test/java/org/apache/maven/plugins/issues/IssueUtilsTestCase.java
similarity index 92%
rename from src/test/java/org/apache/maven/plugin/issues/IssueUtilsTestCase.java
rename to src/test/java/org/apache/maven/plugins/issues/IssueUtilsTestCase.java
index 431ae8c..9fae6bb 100644
--- a/src/test/java/org/apache/maven/plugin/issues/IssueUtilsTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/issues/IssueUtilsTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.issues;
+package org.apache.maven.plugins.issues;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,6 +21,8 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.issues.IssueUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,7 +53,7 @@
         issueList.add( issue_1 );
         issueList.add( issue_2 );
 
-        List filteredIssues;
+        List<Issue> filteredIssues;
         try
         {
             filteredIssues = IssueUtils.filterIssuesWithVersionPrefix( issueList, null );
diff --git a/src/test/java/org/apache/maven/plugin/jira/JiraHelperTestCase.java b/src/test/java/org/apache/maven/plugins/jira/JiraHelperTestCase.java
similarity index 96%
rename from src/test/java/org/apache/maven/plugin/jira/JiraHelperTestCase.java
rename to src/test/java/org/apache/maven/plugins/jira/JiraHelperTestCase.java
index e55a62e..bb580ed 100644
--- a/src/test/java/org/apache/maven/plugin/jira/JiraHelperTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JiraHelperTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,6 +23,8 @@
 
 import java.util.Map;
 
+import org.apache.maven.plugins.jira.JiraHelper;
+
 /**
  * Tests for the JiraHelper class.
  *
diff --git a/src/test/java/org/apache/maven/plugin/jira/JiraMojoTest.java b/src/test/java/org/apache/maven/plugins/jira/JiraMojoTest.java
similarity index 94%
rename from src/test/java/org/apache/maven/plugin/jira/JiraMojoTest.java
rename to src/test/java/org/apache/maven/plugins/jira/JiraMojoTest.java
index c2fbbf3..ff01c01 100644
--- a/src/test/java/org/apache/maven/plugin/jira/JiraMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JiraMojoTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.plugins.jira.JiraMojo;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 
 /**
diff --git a/src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestCase.java b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
similarity index 75%
rename from src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestCase.java
rename to src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
index c3ad1af..9d799da 100644
--- a/src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,11 @@
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.maven.plugins.jira.JiraMojo;
+import org.apache.maven.project.MavenProject;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 
 /**
@@ -47,6 +52,12 @@
         assertTrue( pom.exists() );
 
         JiraMojo mojo = (JiraMojo) lookupMojo( "jira-report", pom );
+        MavenProject project = new JiraUnicodeTestProjectStub();
+        MavenSession session = newMavenSession( project );
+        DefaultRepositorySystemSession repoSession = (DefaultRepositorySystemSession) session.getRepositorySession();
+        repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( "target/local-repo" ) );
+        setVariableValueToObject( mojo, "project", project );
+        setVariableValueToObject( mojo, "mavenSession", session );
         InputStream testJiraXmlStream = JiraUnicodeTestCase.class.getResourceAsStream( "unicode-jira-results.xml" );
         String jiraXml = null;
         try {
diff --git a/src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestProjectStub.java b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestProjectStub.java
similarity index 67%
rename from src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestProjectStub.java
rename to src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestProjectStub.java
index 7ec0d2d..d863ea3 100644
--- a/src/test/java/org/apache/maven/plugin/jira/JiraUnicodeTestProjectStub.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestProjectStub.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,7 +23,8 @@
 import java.util.List;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.MavenArtifactRepository;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
@@ -38,8 +39,11 @@
     @Override
     public List<ArtifactRepository> getRemoteArtifactRepositories()
     {
-        ArtifactRepository repository =
-            new DefaultArtifactRepository( "central", "http://repo1.maven.org/maven2", new DefaultRepositoryLayout() );
+        ArtifactRepositoryPolicy policy =
+            new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
+                                          ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
+        ArtifactRepository repository = new MavenArtifactRepository( "central", "http://repo1.maven.org/maven2",
+                                                                     new DefaultRepositoryLayout(), policy, policy );
 
         return Collections.singletonList( repository );
     }
diff --git a/src/test/java/org/apache/maven/plugin/jira/JqlQueryBuilderTestCase.java b/src/test/java/org/apache/maven/plugins/jira/JqlQueryBuilderTestCase.java
similarity index 97%
rename from src/test/java/org/apache/maven/plugin/jira/JqlQueryBuilderTestCase.java
rename to src/test/java/org/apache/maven/plugins/jira/JqlQueryBuilderTestCase.java
index 6588b8a..5ee9907 100644
--- a/src/test/java/org/apache/maven/plugin/jira/JqlQueryBuilderTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JqlQueryBuilderTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,6 +21,8 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.apache.maven.plugins.jira.JiraQueryBuilder;
+import org.apache.maven.plugins.jira.JqlQueryBuilder;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
diff --git a/src/test/java/org/apache/maven/plugin/jira/MockJiraDownloader.java b/src/test/java/org/apache/maven/plugins/jira/MockJiraDownloader.java
similarity index 90%
rename from src/test/java/org/apache/maven/plugin/jira/MockJiraDownloader.java
rename to src/test/java/org/apache/maven/plugins/jira/MockJiraDownloader.java
index 6cda8fb..8e2a5c3 100644
--- a/src/test/java/org/apache/maven/plugin/jira/MockJiraDownloader.java
+++ b/src/test/java/org/apache/maven/plugins/jira/MockJiraDownloader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,7 +23,9 @@
 import java.util.List;
 
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugins.issues.Issue;
+import org.apache.maven.plugins.jira.AbstractJiraDownloader;
+import org.apache.maven.plugins.jira.JiraXML;
 import org.xml.sax.InputSource;
 
 /**
diff --git a/src/test/java/org/apache/maven/plugin/jira/UrlBuilderTestCase.java b/src/test/java/org/apache/maven/plugins/jira/UrlBuilderTestCase.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugin/jira/UrlBuilderTestCase.java
rename to src/test/java/org/apache/maven/plugins/jira/UrlBuilderTestCase.java
index e257785..8ce3ee7 100644
--- a/src/test/java/org/apache/maven/plugin/jira/UrlBuilderTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/jira/UrlBuilderTestCase.java
@@ -1,4 +1,6 @@
-package org.apache.maven.plugin.jira;
+package org.apache.maven.plugins.jira;
+
+import org.apache.maven.plugins.jira.UrlBuilder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/src/test/resources/org/apache/maven/plugin/announcement/announcement.vm b/src/test/resources/org/apache/maven/plugins/announcement/announcement.vm
similarity index 100%
rename from src/test/resources/org/apache/maven/plugin/announcement/announcement.vm
rename to src/test/resources/org/apache/maven/plugins/announcement/announcement.vm
diff --git a/src/test/resources/org/apache/maven/plugin/jira/unicode-jira-results.xml b/src/test/resources/org/apache/maven/plugins/jira/unicode-jira-results.xml
similarity index 100%
rename from src/test/resources/org/apache/maven/plugin/jira/unicode-jira-results.xml
rename to src/test/resources/org/apache/maven/plugins/jira/unicode-jira-results.xml
diff --git a/src/test/unit/jira-plugin-config.xml b/src/test/unit/jira-plugin-config.xml
index faec73e..7c79a0a 100644
--- a/src/test/unit/jira-plugin-config.xml
+++ b/src/test/unit/jira-plugin-config.xml
@@ -25,10 +25,8 @@
       <plugin>
         <artifactId>maven-changes-plugin</artifactId>
         <configuration>
-	  <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugin.jira.JiraUnicodeTestProjectStub"/>
-	  <outputDirectory>target/jira-test-output</outputDirectory>
-	  <columnNames>Key,Summary,Status,Resolution,Assignee,Description</columnNames>
+	      <outputDirectory>target/jira-test-output</outputDirectory>
+	      <columnNames>Key,Summary,Status,Resolution,Assignee,Description</columnNames>
         </configuration>
       </plugin>
     </plugins>