diff --git a/pom.xml b/pom.xml
index 284550b..ad67a22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>maven-plugins</artifactId>
     <groupId>org.apache.maven.plugins</groupId>
-    <version>25</version>
+    <version>27</version>
     <relativePath>../maven-plugins/pom.xml</relativePath>
   </parent>
 
@@ -144,7 +144,6 @@
     <maven-scm.version>1.8</maven-scm.version>
     <doxiaVersion>1.1.4</doxiaVersion>
     <mavenVersion>2.2.1</mavenVersion>
-    <mavenPluginVersion>3.2</mavenPluginVersion>
     <sitePluginVersion>3.3</sitePluginVersion><!-- used in ITs -->
   </properties>
 
@@ -173,8 +172,6 @@
     <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
-      <version>${mavenPluginVersion}</version>
-      <scope>provided</scope>
     </dependency>
 
     <!-- shared -->
@@ -322,38 +319,6 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-plugin-plugin</artifactId>
-          <version>${mavenPluginVersion}</version>
-          <configuration>
-            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-plugin-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>mojo-descriptor</id>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>descriptor</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
   <reporting>
     <plugins>
       <plugin>
@@ -374,19 +339,10 @@
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-invoker-plugin</artifactId>
               <configuration>
-                <projectsDirectory>src/it</projectsDirectory>
-                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
-                <pomIncludes>
-                  <pomInclude>*/pom.xml</pomInclude>
-                </pomIncludes>
-                <postBuildHookScript>verify</postBuildHookScript>
-                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
-                <settingsFile>src/it/settings.xml</settingsFile>
                 <goals>
                   <goal>clean</goal>
                   <goal>site</goal>
                 </goals>
-                <showErrors>true</showErrors>
               </configuration>
             </plugin>
           </plugins>
diff --git a/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java b/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
index 269f9c2..b58cb3f 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
@@ -76,11 +76,13 @@
 
         List<ChangeLogSet> changeLogSets = new ArrayList<ChangeLogSet>();
 
+        // CHECKSTYLE_OFF: MagicNumber
         BufferedReader br = new BufferedReader( reader, 8192 );
+        // CHECKSTYLE_ON: MagicNumber
 
         parser.parse( new InputSource( br ), new ChangeLogHandler( changeLogSets ) );
 
         return changeLogSets;
     }
 
-} // end of ChangeLog
+}
diff --git a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
index 75cfcc6..8284afe 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
@@ -84,7 +84,6 @@
  *
  * @version $Id$
  */
-@SuppressWarnings( "ALL" )
 @Mojo( name = "changelog" )
 public class ChangeLogReport
     extends AbstractMavenReport
@@ -526,8 +525,10 @@
 
         if ( outputXML.exists() )
         {
+            // CHECKSTYLE_OFF: MagicNumber
             if ( outputXMLExpiration > 0
                 && outputXMLExpiration * 60000 > System.currentTimeMillis() - outputXML.lastModified() )
+                // CHECKSTYLE_ON: MagicNumber
             {
                 try
                 {
@@ -1045,8 +1046,8 @@
         {
             if ( dates == null )
             {
-                throw new MavenReportException( "The dates parameter is required when type=\"date\"."
-                                                    + " The value should be the absolute date for the start of the log." );
+                throw new MavenReportException( "The dates parameter is required when type=\"date\". The value "
+                                                    + "should be the absolute date for the start of the log." );
             }
         }
         else if ( "tag".equals( type ) )
diff --git a/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java b/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
index 47f4502..d43a19d 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
@@ -38,7 +38,7 @@
  *
  * @version $Id$
  */
-@Mojo(name = "dev-activity")
+@Mojo( name = "dev-activity" )
 public class DeveloperActivityReport
     extends ChangeLogReport
 {
diff --git a/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java b/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
index 705130a..38b35ea 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
@@ -39,7 +39,7 @@
  *
  * @version $Id$
  */
-@Mojo(name = "file-activity")
+@Mojo( name = "file-activity" )
 public class FileActivityReport
     extends ChangeLogReport
 {
