diff --git a/pom.xml b/pom.xml
index 351162a..c80474b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>maven-plugins</artifactId>
     <groupId>org.apache.maven.plugins</groupId>
-    <version>34</version>
+    <version>37</version>
     <relativePath />
   </parent>
 
@@ -84,7 +84,6 @@
     <mavenFilteringVersion>3.2.0</mavenFilteringVersion>
     <mavenVersion>3.1.1</mavenVersion>
     <javaVersion>7</javaVersion>
-    <surefire.version>2.22.2</surefire.version>
     <mavenWarPluginVersion>3.3.1</mavenWarPluginVersion>
     <mavenCompilerPluginVersion>2.5.1</mavenCompilerPluginVersion>
     <mavenEjbPluginVersion>3.1.0</mavenEjbPluginVersion>
@@ -94,8 +93,6 @@
     <invoker.skip>false</invoker.skip>
     <invoker.install.skip>${invoker.skip}</invoker.install.skip>
     <invoker.it.skip>${invoker.skip}</invoker.it.skip>
-    <invoker.cloneClean>true</invoker.cloneClean>
-    <mavenPluginToolsVersion>3.6.0</mavenPluginToolsVersion><!-- required for Java 11 generated Mojo -->
     <checkstyle.violation.ignore>ParameterNumber,MethodLength</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2020-12-30T10:47:20Z</project.build.outputTimestamp>
   </properties>
@@ -105,16 +102,31 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-settings</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -215,6 +227,7 @@
         <filtering>true</filtering>
       </testResource>
     </testResources>
+
     <pluginManagement>
       <plugins>
         <plugin>
@@ -249,33 +262,9 @@
             </excludes>
           </configuration>
         </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-site-plugin</artifactId>
-          <version>3.9.1</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-project-info-reports-plugin</artifactId>
-          <version>3.1.1</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-enforcer-plugin</artifactId>
-          <version>3.0.0-M3</version>
-        </plugin>
-        <plugin>
-          <!-- remove after parent upgrade -->
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <version>3.3.2</version>
-          <configuration>
-            <detectLinks>false</detectLinks>
-            <tagletArtifacts combine.self="override"/>
-          </configuration>
-        </plugin>
       </plugins>
     </pluginManagement>
+
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -318,7 +307,6 @@
               </extraArtifacts>
               <skipInstallation>${invoker.install.skip}</skipInstallation>
               <skipInvocation>${invoker.it.skip}</skipInvocation>
-              <cloneClean>${invoker.cloneClean}</cloneClean>
             </configuration>
           </plugin>
           <plugin>
@@ -356,7 +344,6 @@
             <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
-              <version>3.8.1</version>
               <configuration>
                 <showDeprecation>true</showDeprecation>
                 <release>${javaVersion}</release>
diff --git a/src/it/transitive-excludes/verify.bsh b/src/it/transitive-excludes/verify.groovy
similarity index 93%
rename from src/it/transitive-excludes/verify.bsh
rename to src/it/transitive-excludes/verify.groovy
index 9413f9d..5e8cc2e 100644
--- a/src/it/transitive-excludes/verify.bsh
+++ b/src/it/transitive-excludes/verify.groovy
@@ -1,43 +1,41 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "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
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-import java.util.regex.*;
-
-File earFile = new File( basedir, "target/mear73-1.0-SNAPSHOT.ear" );
-if ( !earFile.isFile() )
-{
-    throw new IllegalStateException( "Missing file: " + earFile );
-}
-
-JarFile ear = new JarFile( earFile );
-Enumeration entries = ear.entries();
-while( entries.hasMoreElements() )
-{
-  JarEntry entry = (JarEntry) entries.nextElement();
-  if( entry.getName().endsWith( ".jar" ) && !"org.apache.maven-maven-core-3.0.jar".equals( entry.getName() ) )
-  {
-    throw new IllegalStateException( "Unexpected archive entry: " + entry.getName() );
-  }
-}
-ear.close();
-
-return true;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.jar.JarEntry
+import java.util.jar.JarFile
+
+File earFile = new File( basedir, "target/mear73-1.0-SNAPSHOT.ear" );
+if ( !earFile.isFile() )
+{
+    throw new IllegalStateException( "Missing file: " + earFile );
+}
+
+JarFile ear = new JarFile( earFile );
+Enumeration entries = ear.entries();
+while( entries.hasMoreElements() )
+{
+  JarEntry entry = (JarEntry) entries.nextElement();
+  if( entry.getName().endsWith( ".jar" ) && !"org.apache.maven-maven-core-3.0.jar".equals( entry.getName() ) )
+  {
+    throw new IllegalStateException( "Unexpected archive entry: " + entry.getName() );
+  }
+}
+ear.close();
+
+return true;
diff --git a/src/site/site.xml b/src/site/site.xml
index 0047372..2faf5d2 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -19,32 +19,9 @@
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
+<project xmlns="http://maven.apache.org/DECORATION/1.8.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
-  <bannerLeft>
-    <src>https://maven.apache.org/images/apache-maven-project.png</src>
-    <href>https://www.apache.org/</href>
-  </bannerLeft>
-
-  <bannerRight>
-    <src>https://maven.apache.org/images/maven-logo-black-on-white.png</src>
-    <href>https://maven.apache.org/</href>
-  </bannerRight>
-  <skin>
-    <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-fluido-skin</artifactId>
-    <version>1.9</version>
-  </skin>
-
-  <custom>
-    <fluidoSkin>
-      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
-      <googleSearch>
-        <sitesearch>maven.apache.org/plugins/maven-ear-plugin/</sitesearch>
-      </googleSearch>
-    </fluidoSkin>
-  </custom>
+  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
 
   <body>
     <menu name="Overview">
