diff --git a/core-it-suite/pom.xml b/core-it-suite/pom.xml
index e4983db..c2c401c 100644
--- a/core-it-suite/pom.xml
+++ b/core-it-suite/pom.xml
@@ -487,6 +487,39 @@
         <directory>src/test/resources-filtered</directory>
       </testResource>
     </testResources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>com.diffplug.spotless</groupId>
+          <artifactId>spotless-maven-plugin</artifactId>
+          <configuration>
+            <java>
+              <includes>
+                <include>src/main/java/**/*.java</include>
+                <include>src/test/java/**/*.java</include>
+                <include>src/test/resources/**/src/main/java/**/*.java</include>
+                <include>src/test/resources/**/src/test/java/**/*.java</include>
+              </includes>
+              <excludes>
+                <exclude>src/test/resources/mng-5208/project/sub-2/src/main/java/Bad.java</exclude>
+              </excludes>
+            </java>
+            <pom>
+              <includes>
+                <include>pom.xml</include>
+                <include>src/test/resources/**/pom.xml</include>
+              </includes>
+              <excludes>
+                <exclude>src/test/resources/mng-2254/latin-1/pom.xml</exclude>
+                <exclude>src/test/resources/mng-2362/latin-1/pom.xml</exclude>
+                <exclude>src/test/resources/mng-3839/pom.xml</exclude>
+              </excludes>
+            </pom>
+          </configuration>
+        </plugin>
+
+      </plugins>
+    </pluginManagement>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
index 95c46a5..842eb99 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
@@ -59,7 +59,7 @@
         List<String> lines = verifier.loadLines(verifier.getLogFileName(), null);
         for (String line : lines) {
             if (line.contains(":bad/id:")) {
-                assertTrue("Line number not found in: " + line, line.indexOf("38") > 0);
+                assertTrue("Line number not found in: " + line, line.indexOf("34") > 0);
                 assertTrue("Column number not found in: " + line, line.indexOf("19") > 0);
                 foundError = true;
                 break;
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6720FailFastTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6720FailFastTest.java
index 8090ce9..78776e7 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6720FailFastTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6720FailFastTest.java
@@ -55,14 +55,14 @@
             // expected
         }
 
-        List<String> module1Lines =
-                verifier.loadFile(new File(testDir, "module-1/target/surefire-reports/Module1Test-output.txt"), false);
+        List<String> module1Lines = verifier.loadFile(
+                new File(testDir, "module-1/target/surefire-reports/mng6720.Module1Test-output.txt"), false);
         assertTrue("module-1 should be executed", module1Lines.contains("Module1"));
-        List<String> module2Lines =
-                verifier.loadFile(new File(testDir, "module-2/target/surefire-reports/Module2Test-output.txt"), false);
+        List<String> module2Lines = verifier.loadFile(
+                new File(testDir, "module-2/target/surefire-reports/mng6720.Module2Test-output.txt"), false);
         assertTrue("module-2 should be executed", module2Lines.contains("Module2"));
-        List<String> module3Lines =
-                verifier.loadFile(new File(testDir, "module-3/target/surefire-reports/Module3Test-output.txt"), false);
+        List<String> module3Lines = verifier.loadFile(
+                new File(testDir, "module-3/target/surefire-reports/mng6720.Module3Test-output.txt"), false);
         assertTrue("module-3 should be skipped", module3Lines.isEmpty());
     }
 }
diff --git a/core-it-suite/src/test/resources/bootstrap/bootstrap/pom.xml b/core-it-suite/src/test/resources/bootstrap/bootstrap/pom.xml
index ae8cd7c..a96ba19 100644
--- a/core-it-suite/src/test/resources/bootstrap/bootstrap/pom.xml
+++ b/core-it-suite/src/test/resources/bootstrap/bootstrap/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,23 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.bootstrap</groupId>
-        <artifactId>maven-it-boostrap</artifactId>
-        <version>1.0</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.bootstrap</groupId>
+    <artifactId>maven-it-boostrap</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>bootstrap</artifactId>
-    <packaging>pom</packaging>
+  <artifactId>bootstrap</artifactId>
+  <packaging>pom</packaging>
 
-    <name>Maven Integration Test :: Boostrap :: boostrap</name>
+  <name>Maven Integration Test :: Boostrap :: boostrap</name>
 
-    <!-- We do want the file here -->
-    <properties>
-        <file>${bootstrap}</file>
-    </properties>
+  <!-- We do want the file here -->
+  <properties>
+    <file>${bootstrap}</file>
+  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/bootstrap/packaging-jar/pom.xml b/core-it-suite/src/test/resources/bootstrap/packaging-jar/pom.xml
index e3d45f5..294b032 100644
--- a/core-it-suite/src/test/resources/bootstrap/packaging-jar/pom.xml
+++ b/core-it-suite/src/test/resources/bootstrap/packaging-jar/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,18 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.bootstrap</groupId>
-        <artifactId>maven-it-boostrap</artifactId>
-        <version>1.0</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.bootstrap</groupId>
+    <artifactId>maven-it-boostrap</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>packaging-jar</artifactId>
-    <packaging>jar</packaging>
+  <artifactId>packaging-jar</artifactId>
+  <packaging>jar</packaging>
 
-    <name>Maven Integration Test :: Boostrap :: packaging-jar</name>
+  <name>Maven Integration Test :: Boostrap :: packaging-jar</name>
 </project>
diff --git a/core-it-suite/src/test/resources/bootstrap/packaging-maven-plugin/pom.xml b/core-it-suite/src/test/resources/bootstrap/packaging-maven-plugin/pom.xml
index b9ba813..ed33054 100644
--- a/core-it-suite/src/test/resources/bootstrap/packaging-maven-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/bootstrap/packaging-maven-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,18 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.bootstrap</groupId>
-        <artifactId>maven-it-boostrap</artifactId>
-        <version>1.0</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.bootstrap</groupId>
+    <artifactId>maven-it-boostrap</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>packaging-maven-plugin</artifactId>
-    <packaging>maven-plugin</packaging>
+  <artifactId>packaging-maven-plugin</artifactId>
+  <packaging>maven-plugin</packaging>
 
-    <name>Maven Integration Test :: Boostrap :: packaging-maven-plugin</name>
+  <name>Maven Integration Test :: Boostrap :: packaging-maven-plugin</name>
 </project>
diff --git a/core-it-suite/src/test/resources/bootstrap/packaging-war/pom.xml b/core-it-suite/src/test/resources/bootstrap/packaging-war/pom.xml
index c5857a1..22b1a40 100644
--- a/core-it-suite/src/test/resources/bootstrap/packaging-war/pom.xml
+++ b/core-it-suite/src/test/resources/bootstrap/packaging-war/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,18 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.bootstrap</groupId>
-        <artifactId>maven-it-boostrap</artifactId>
-        <version>1.0</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.bootstrap</groupId>
+    <artifactId>maven-it-boostrap</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>packaging-war</artifactId>
-    <packaging>war</packaging>
+  <artifactId>packaging-war</artifactId>
+  <packaging>war</packaging>
 
-    <name>Maven Integration Test :: Boostrap :: packaging-war</name>
+  <name>Maven Integration Test :: Boostrap :: packaging-war</name>
 </project>
diff --git a/core-it-suite/src/test/resources/bootstrap/pom.xml b/core-it-suite/src/test/resources/bootstrap/pom.xml
index fedee76..a6b7465 100644
--- a/core-it-suite/src/test/resources/bootstrap/pom.xml
+++ b/core-it-suite/src/test/resources/bootstrap/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,53 +17,50 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.bootstrap</groupId>
-    <artifactId>maven-it-boostrap</artifactId>
-    <version>1.0</version>
-    <packaging>pom</packaging>
+  <groupId>org.apache.maven.its.bootstrap</groupId>
+  <artifactId>maven-it-boostrap</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <name>Maven Integration Test :: Boostrap</name>
-    <description>
-        This project pulls down all the artifacts/plugins required for the IT suite. Due to MNG-2974, snapshot versions of
+  <name>Maven Integration Test :: Boostrap</name>
+  <description>This project pulls down all the artifacts/plugins required for the IT suite. Due to MNG-2974, snapshot versions of
         plugins cannot be downloaded by Maven from non-default repositories configured in the POM if the plugin is invoked
         directly from the command line. Also, having this in a central place spares us from copying the snapshot repo
         config all around in the IT POMs.
 
         Each module does:
         - boostrap - resolves all artifacts provided in bootstrap file
-        - packaging-* - resolves build plugins provided by tested Maven default lifecycle(s)
-    </description>
+        - packaging-* - resolves build plugins provided by tested Maven default lifecycle(s)</description>
 
-    <modules>
-        <module>bootstrap</module>
-        <module>packaging-jar</module>
-        <module>packaging-maven-plugin</module>
-        <module>packaging-war</module>
-    </modules>
+  <modules>
+    <module>bootstrap</module>
+    <module>packaging-jar</module>
+    <module>packaging-maven-plugin</module>
+    <module>packaging-war</module>
+  </modules>
 
-    <build>
-        <plugins>
-            <!-- This merely locks the plugin versions to disable auto-update -->
-            <plugin>
-                <groupId>org.apache.maven.its</groupId>
-                <artifactId>maven-it-plugin-bootstrap</artifactId>
-                <version>2.1-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <phase>process-resources</phase>
-                        <goals>
-                            <goal>download</goal>
-                        </goals>
-                        <configuration>
-                            <file>${file}</file>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <!-- This merely locks the plugin versions to disable auto-update -->
+      <plugin>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>maven-it-plugin-bootstrap</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>download</goal>
+            </goals>
+            <phase>process-resources</phase>
+            <configuration>
+              <file>${file}</file>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/pom.xml
index 751ba4f..04eb88f 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/pom.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>1</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentA</artifactId>
-    <packaging>jar</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>1</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentA</artifactId>
+  <packaging>jar</packaging>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/Av1.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/Av1.java
deleted file mode 100644
index 872f29e..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/Av1.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/cyclic/Av1.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/cyclic/Av1.java
new file mode 100644
index 0000000..f1a9424
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentA/src/main/java/cyclic/Av1.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/pom.xml
index 5bd279d..b0fb19c 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>1</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentB</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-            <version>1</version>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>1</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentB</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+      <version>1</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/Bv1.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/Bv1.java
deleted file mode 100644
index 5d3ac89..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/Bv1.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Bv1 extends Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/cyclic/Bv1.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/cyclic/Bv1.java
new file mode 100644
index 0000000..5faedbf
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/componentB/src/main/java/cyclic/Bv1.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Bv1 extends Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/pom.xml
index 437f332..e69536b 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/pom.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>main</artifactId>
-        <version>1</version>
-    </parent>
-    <artifactId>bundle</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentB</artifactId>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>main</artifactId>
+    <version>1</version>
+  </parent>
+  <artifactId>bundle</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentB</artifactId>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/Bundle.java
deleted file mode 100644
index cc81b03..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/Bundle.java
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bundle {
-    Object[] components = {new Av1(), new Bv1()};
-}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/cyclic/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/cyclic/Bundle.java
new file mode 100644
index 0000000..b9594fc
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/bundle/src/main/java/cyclic/Bundle.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+class Bundle {
+    Object[] components = {new Av1(), new Bv1()};
+}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/pom.xml
index 6394ef0..8946974 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/main/pom.xml
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>main</artifactId>
-    <version>1</version>
-    <packaging>pom</packaging>
-    <modules>
-        <module>bundle</module>
-    </modules>
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentA</artifactId>
-                <version>1</version>
-            </dependency>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentB</artifactId>
-                <version>1</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>main</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>bundle</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentA</artifactId>
+        <version>1</version>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentB</artifactId>
+        <version>1</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v1/parent/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v1/parent/pom.xml
index b6ed160..59d7957 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v1/parent/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v1/parent/pom.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>parent</artifactId>
-    <version>1</version>
-    <packaging>pom</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/pom.xml
index f53e50e..70b813b 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/pom.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>2</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentA</artifactId>
-    <packaging>jar</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>2</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentA</artifactId>
+  <packaging>jar</packaging>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/Av2.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/Av2.java
deleted file mode 100644
index daacfd7..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/Av2.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Av2 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/cyclic/Av2.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/cyclic/Av2.java
new file mode 100644
index 0000000..7f6a39c
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentA/src/main/java/cyclic/Av2.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Av2 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/pom.xml
index 405a730..7cebf79 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/pom.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>2</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentB</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>2</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentB</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/Bv2.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/Bv2.java
deleted file mode 100644
index 12c33f5..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/Bv2.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Bv2 extends Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/cyclic/Bv2.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/cyclic/Bv2.java
new file mode 100644
index 0000000..7e7b7c3
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/componentB/src/main/java/cyclic/Bv2.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Bv2 extends Av1 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/pom.xml
index 7e1a8d1..c1fed1c 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/pom.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>main</artifactId>
-        <version>2</version>
-    </parent>
-    <artifactId>bundle</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentB</artifactId>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>main</artifactId>
+    <version>2</version>
+  </parent>
+  <artifactId>bundle</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentB</artifactId>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/Bundle.java
deleted file mode 100644
index 75d3a03..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/Bundle.java
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bundle {
-    Object[] components = {new Av2(), new Bv2()};
-}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/cyclic/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/cyclic/Bundle.java
new file mode 100644
index 0000000..f67b9a6
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/bundle/src/main/java/cyclic/Bundle.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+class Bundle {
+    Object[] components = {new Av2(), new Bv2()};
+}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/pom.xml
index eb10e7e..84a4d55 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/main/pom.xml
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>main</artifactId>
-    <version>2</version>
-    <packaging>pom</packaging>
-    <modules>
-        <module>bundle</module>
-    </modules>
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentA</artifactId>
-                <version>2</version>
-            </dependency>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentB</artifactId>
-                <version>2</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>main</artifactId>
+  <version>2</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>bundle</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentA</artifactId>
+        <version>2</version>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentB</artifactId>
+        <version>2</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v2/parent/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v2/parent/pom.xml
index d7cb1cd..e65ce18 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v2/parent/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v2/parent/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>parent</artifactId>
-    <version>2</version>
-    <packaging>pom</packaging>
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>main</artifactId>
-                <version>1</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>parent</artifactId>
+  <version>2</version>
+  <packaging>pom</packaging>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>main</artifactId>
+        <version>1</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/pom.xml
index 1880073..a035ba9 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/pom.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>3</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentA</artifactId>
-    <packaging>jar</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>3</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentA</artifactId>
+  <packaging>jar</packaging>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/Av3.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/Av3.java
deleted file mode 100644
index 756b980..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/Av3.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Av3 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/cyclic/Av3.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/cyclic/Av3.java
new file mode 100644
index 0000000..40e9eeb
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentA/src/main/java/cyclic/Av3.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Av3 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/pom.xml
index 8e39824..fd92c54 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>parent</artifactId>
-        <version>3</version>
-        <relativePath/>
-    </parent>
-    <artifactId>componentB</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-            <version>3</version>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>3</version>
+    <relativePath />
+  </parent>
+  <artifactId>componentB</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+      <version>3</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/Bv3.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/Bv3.java
deleted file mode 100644
index 3528e53..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/Bv3.java
+++ /dev/null
@@ -1 +0,0 @@
-public class Bv3 extends Av3 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/cyclic/Bv3.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/cyclic/Bv3.java
new file mode 100644
index 0000000..e25232d
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/componentB/src/main/java/cyclic/Bv3.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+public class Bv3 extends Av3 {}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/pom.xml
index 6236c94..9bb36ab 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/pom.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>test</groupId>
-        <artifactId>main</artifactId>
-        <version>3</version>
-    </parent>
-    <artifactId>bundle</artifactId>
-    <packaging>jar</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentA</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>test</groupId>
-            <artifactId>componentB</artifactId>
-        </dependency>
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>main</artifactId>
+    <version>3</version>
+  </parent>
+  <artifactId>bundle</artifactId>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentA</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>componentB</artifactId>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/Bundle.java
deleted file mode 100644
index 9da33c6..0000000
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/Bundle.java
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bundle {
-    Object[] components = {new Av3(), new Bv3()};
-}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/cyclic/Bundle.java b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/cyclic/Bundle.java
new file mode 100644
index 0000000..181e09c
--- /dev/null
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/bundle/src/main/java/cyclic/Bundle.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package cyclic;
+
+class Bundle {
+    Object[] components = {new Av3(), new Bv3()};
+}
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/pom.xml
index 01acd84..e47b5d9 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/main/pom.xml
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>main</artifactId>
-    <version>3</version>
-    <packaging>pom</packaging>
-    <modules>
-        <module>bundle</module>
-    </modules>
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentA</artifactId>
-                <version>3</version>
-            </dependency>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>componentB</artifactId>
-                <version>3</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>main</artifactId>
+  <version>3</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>bundle</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentA</artifactId>
+        <version>3</version>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>componentB</artifactId>
+        <version>3</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/cyclic-import-scope/v3/parent/pom.xml b/core-it-suite/src/test/resources/cyclic-import-scope/v3/parent/pom.xml
index e7a2c68..05ec706 100644
--- a/core-it-suite/src/test/resources/cyclic-import-scope/v3/parent/pom.xml
+++ b/core-it-suite/src/test/resources/cyclic-import-scope/v3/parent/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>parent</artifactId>
-    <version>3</version>
-    <packaging>pom</packaging>
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>test</groupId>
-                <artifactId>main</artifactId>
-                <version>2</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>parent</artifactId>
+  <version>3</version>
+  <packaging>pom</packaging>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>main</artifactId>
+        <version>2</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/it0008/pom.xml b/core-it-suite/src/test/resources/it0008/pom.xml
index c1b0834..93b6a20 100644
--- a/core-it-suite/src/test/resources/it0008/pom.xml
+++ b/core-it-suite/src/test/resources/it0008/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0008</name>
-  <description>
-    Simple goal decoration where a plugin binds to a phase and the plugin must
+  <description>Simple goal decoration where a plugin binds to a phase and the plugin must
     be downloaded from a remote repository before it can be executed. This
     test also checks to make sure that mojo parameters are aligned to the
-    project basedir when their type is "java.io.File".
-  </description>
+    project basedir when their type is "java.io.File".</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/it0009/pom.xml b/core-it-suite/src/test/resources/it0009/pom.xml
index af9a0b7..ae23228 100644
--- a/core-it-suite/src/test/resources/it0009/pom.xml
+++ b/core-it-suite/src/test/resources/it0009/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0009</name>
-  <description>
-    Test plugin configuration and goal configuration that overrides what the
-    mojo has specified.
-  </description>
+  <description>Test plugin configuration and goal configuration that overrides what the
+    mojo has specified.</description>
 
   <build>
     <plugins>
@@ -45,12 +41,12 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
-              <goalItem>  goalItem  </goalItem>
+              <goalItem>goalItem</goalItem>
             </configuration>
           </execution>
         </executions>
diff --git a/core-it-suite/src/test/resources/it0010/pom.xml b/core-it-suite/src/test/resources/it0010/pom.xml
index 1ac309e..feaef6b 100644
--- a/core-it-suite/src/test/resources/it0010/pom.xml
+++ b/core-it-suite/src/test/resources/it0010/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0010</name>
-  <description>
-    Since the artifact resolution does not use the project builder, we must
+  <description>Since the artifact resolution does not use the project builder, we must
     ensure that the full hierarchy of all dependencies is resolved. This
-    includes the dependencies of the parent-pom's of dependencies.
-  </description>
+    includes the dependencies of the parent-pom's of dependencies.</description>
 
   <dependencies>
     <dependency>
@@ -56,10 +52,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0011/pom.xml b/core-it-suite/src/test/resources/it0011/pom.xml
index d055cf4..d992176 100644
--- a/core-it-suite/src/test/resources/it0011/pom.xml
+++ b/core-it-suite/src/test/resources/it0011/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -30,21 +28,6 @@
   <name>Maven Integration Test :: it0011</name>
   <description>Test specification of dependency versions via &lt;dependencyManagement/&gt;.</description>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.its.it0011</groupId>
-      <artifactId>a</artifactId>
-      <type>jar</type>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.its.it0011</groupId>
-      <artifactId>b</artifactId>
-      <type>jar</type>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -64,6 +47,21 @@
     </dependencies>
   </dependencyManagement>
 
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.it0011</groupId>
+      <artifactId>a</artifactId>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.it0011</groupId>
+      <artifactId>b</artifactId>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
   <build>
     <plugins>
       <plugin>
@@ -76,10 +74,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0012/child-project/pom.xml b/core-it-suite/src/test/resources/it0012/child-project/pom.xml
index 638e3fe..2f6b26a 100644
--- a/core-it-suite/src/test/resources/it0012/child-project/pom.xml
+++ b/core-it-suite/src/test/resources/it0012/child-project/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
   <artifactId>child-project</artifactId>
-  <packaging>jar</packaging>
   <version>3.0.3</version>
+  <packaging>jar</packaging>
   <build>
     <plugins>
       <plugin>
-        <artifactId>maven-it-plugin-touch</artifactId>
         <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-touch</artifactId>
         <version>2.1-SNAPSHOT</version>
         <configuration>
           <outputDirectory>${basedir}/target/</outputDirectory>
diff --git a/core-it-suite/src/test/resources/it0012/pom.xml b/core-it-suite/src/test/resources/it0012/pom.xml
index 05531f9..8b4fc64 100644
--- a/core-it-suite/src/test/resources/it0012/pom.xml
+++ b/core-it-suite/src/test/resources/it0012/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -30,9 +28,12 @@
   <name>Maven Integration Test :: it0012</name>
   <description>Test simple POM interpolation</description>
 
+  <modules>
+    <module>child-project</module>
+  </modules>
+
   <properties>
-    <test>
-POM content (available with 2 prefixes):
+    <test>POM content (available with 2 prefixes):
   project.version: ${project.version}
   version: ${version}
 
@@ -62,20 +63,15 @@
 Not replaced:
   baseUri (not supported): ${baseUri}
   any.undefined.property: ${any.undefined.property}
-  settings.localRepository: ${settings.localRepository} (only replaced during parameter expression evaluation)
-    </test>
+  settings.localRepository: ${settings.localRepository} (only replaced during parameter expression evaluation)</test>
     <any.property>any value</any.property>
   </properties>
 
-  <modules>
-    <module>child-project</module>
-  </modules>
-
   <build>
     <plugins>
       <plugin>
-        <artifactId>maven-it-plugin-touch</artifactId>
         <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-touch</artifactId>
         <version>2.1-SNAPSHOT</version>
         <configuration>
           <pluginFile>touch-${project.version}.txt</pluginFile>
diff --git a/core-it-suite/src/test/resources/it0018/pom.xml b/core-it-suite/src/test/resources/it0018/pom.xml
index 57bd646..7b50ced 100644
--- a/core-it-suite/src/test/resources/it0018/pom.xml
+++ b/core-it-suite/src/test/resources/it0018/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,9 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: it0018</name>
-  <description>
-    Ensure that managed dependencies for dependency POMs are calculated
+  <description>Ensure that managed dependencies for dependency POMs are calculated
     correctly when resolved. Removes managed-dep-1.0.3 and checks it is
-    redownloaded.
-  </description>
+    redownloaded.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/it0019/pom.xml b/core-it-suite/src/test/resources/it0019/pom.xml
index 8b30cd9..165192a 100644
--- a/core-it-suite/src/test/resources/it0019/pom.xml
+++ b/core-it-suite/src/test/resources/it0019/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0021/pom.xml b/core-it-suite/src/test/resources/it0021/pom.xml
index d7af4e2..821315f 100644
--- a/core-it-suite/src/test/resources/it0021/pom.xml
+++ b/core-it-suite/src/test/resources/it0021/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: it0021</name>
-  <description>
-    Test pom-level profile inclusion (this one is activated by system property).
-  </description>
+  <description>Test pom-level profile inclusion (this one is activated by system property).</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0023/pom.xml b/core-it-suite/src/test/resources/it0023/pom.xml
index 807eef2..48fff82 100644
--- a/core-it-suite/src/test/resources/it0023/pom.xml
+++ b/core-it-suite/src/test/resources/it0023/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0024/pom.xml b/core-it-suite/src/test/resources/it0024/pom.xml
index 2cae421..8bb630a 100644
--- a/core-it-suite/src/test/resources/it0024/pom.xml
+++ b/core-it-suite/src/test/resources/it0024/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0024</name>
-  <description>
-    Test usage of &lt;executions/&gt; inside a plugin rather than &lt;goals/&gt;
-    that are directly inside the plugin.
-   </description>
+  <description>Test usage of &lt;executions/&gt; inside a plugin rather than &lt;goals/&gt;
+    that are directly inside the plugin.</description>
 
   <build>
     <plugins>
@@ -42,13 +38,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>reset</goal>
+            </goals>
             <phase>initialize</phase>
             <configuration>
               <logFile>target/plugin-exec-configuration.txt</logFile>
             </configuration>
-            <goals>
-              <goal>reset</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0025/pom.xml b/core-it-suite/src/test/resources/it0025/pom.xml
index 23d39b8..d72cfda 100644
--- a/core-it-suite/src/test/resources/it0025/pom.xml
+++ b/core-it-suite/src/test/resources/it0025/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0025</name>
   <groupId>org.apache.maven.its.it0025</groupId>
   <artifactId>maven-it-it0025</artifactId>
-  <description>Test multiple goal executions with different execution-level configs.</description>
   <version>1.0-SNAPSHOT</version>
+  <name>Maven Integration Test :: it0025</name>
+  <description>Test multiple goal executions with different execution-level configs.</description>
   <build>
     <plugins>
       <plugin>
@@ -14,26 +15,26 @@
         <executions>
           <execution>
             <id>test1</id>
+
+            <goals>
+              <goal>touch</goal>
+            </goals>
             <phase>validate</phase>
 
             <configuration>
               <pluginItem>test.txt</pluginItem>
             </configuration>
-
-            <goals>
-              <goal>touch</goal>
-            </goals>
           </execution>
           <execution>
             <id>test2</id>
+            <goals>
+              <goal>touch</goal>
+            </goals>
             <phase>validate</phase>
 
             <configuration>
               <pluginItem>test2.txt</pluginItem>
             </configuration>
-            <goals>
-              <goal>touch</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0030/child-hierarchy/pom.xml b/core-it-suite/src/test/resources/it0030/child-hierarchy/pom.xml
index d9d5b1d..0298d2c 100644
--- a/core-it-suite/src/test/resources/it0030/child-hierarchy/pom.xml
+++ b/core-it-suite/src/test/resources/it0030/child-hierarchy/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
@@ -6,8 +7,12 @@
     <version>1.0-SNAPSHOT</version>
   </parent>
   <artifactId>child-hierarchy</artifactId>
-  <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>project1</module>
+    <module>project2</module>
+  </modules>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -15,8 +20,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-  <modules>
-    <module>project1</module>
-    <module>project2</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/it0030/child-hierarchy/project1/pom.xml b/core-it-suite/src/test/resources/it0030/child-hierarchy/project1/pom.xml
index 8fc7699..1e55a26 100644
--- a/core-it-suite/src/test/resources/it0030/child-hierarchy/project1/pom.xml
+++ b/core-it-suite/src/test/resources/it0030/child-hierarchy/project1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/pom.xml b/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/pom.xml
index e30c44d..75f47e7 100644
--- a/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/pom.xml
+++ b/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/src/main/java/org/apache/maven/it0030/Person.java b/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/src/main/java/org/apache/maven/it0030/Person.java
index 0e0c09d..b0b0084 100644
--- a/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/src/main/java/org/apache/maven/it0030/Person.java
+++ b/core-it-suite/src/test/resources/it0030/child-hierarchy/project2/src/main/java/org/apache/maven/it0030/Person.java
@@ -1,16 +1,31 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it0001;
 
-public class Person
-{
+public class Person {
     private String name;
 
-    public void setName( String newName )
-    {
+    public void setName(String newName) {
         this.name = newName;
     }
 
-    public String getName()
-    {
+    public String getName() {
         return name;
     }
 }
diff --git a/core-it-suite/src/test/resources/it0030/pom.xml b/core-it-suite/src/test/resources/it0030/pom.xml
index 305ada0..b2bde94 100644
--- a/core-it-suite/src/test/resources/it0030/pom.xml
+++ b/core-it-suite/src/test/resources/it0030/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0030</name>
   <groupId>org.apache.maven.its.it0030</groupId>
   <artifactId>maven-it-it0030</artifactId>
-  <description>Test for injection of dependencyManagement through parents of
-        dependency poms.</description>
   <version>1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
+  <name>Maven Integration Test :: it0030</name>
+  <description>Test for injection of dependencyManagement through parents of
+        dependency poms.</description>
   <modules>
     <module>child-hierarchy</module>
   </modules>
diff --git a/core-it-suite/src/test/resources/it0032/pom.xml b/core-it-suite/src/test/resources/it0032/pom.xml
index cd203f8..5eb3750 100644
--- a/core-it-suite/src/test/resources/it0032/pom.xml
+++ b/core-it-suite/src/test/resources/it0032/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0037/pom.xml b/core-it-suite/src/test/resources/it0037/pom.xml
index 9b25b36..e65affd 100644
--- a/core-it-suite/src/test/resources/it0037/pom.xml
+++ b/core-it-suite/src/test/resources/it0037/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0037</name>
-  <description>
-    Test building with alternate pom file using '-f'
-  </description>
+  <description>Test building with alternate pom file using '-f'</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0038/pom.xml b/core-it-suite/src/test/resources/it0038/pom.xml
index 91e56d0..6210fab 100644
--- a/core-it-suite/src/test/resources/it0038/pom.xml
+++ b/core-it-suite/src/test/resources/it0038/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0038</name>
-  <description>
-    Test building project from outside the project directory using '-f' option
-  </description>
+  <description>Test building project from outside the project directory using '-f' option</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0040/pom.xml b/core-it-suite/src/test/resources/it0040/pom.xml
index e4201f0..b633022 100644
--- a/core-it-suite/src/test/resources/it0040/pom.xml
+++ b/core-it-suite/src/test/resources/it0040/pom.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0040</name>
   <groupId>org.apache.maven.its.it0040</groupId>
   <artifactId>maven-it-it0040</artifactId>
-  <description>Test the use of a packaging from a plugin</description>
-  <packaging>it-packaging</packaging>
   <version>1.0</version>
+  <packaging>it-packaging</packaging>
+  <name>Maven Integration Test :: it0040</name>
+  <description>Test the use of a packaging from a plugin</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/it0041/pom.xml b/core-it-suite/src/test/resources/it0041/pom.xml
index 5fb8a6e..1ec2a3c 100644
--- a/core-it-suite/src/test/resources/it0041/pom.xml
+++ b/core-it-suite/src/test/resources/it0041/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -53,10 +51,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0051/pom.xml b/core-it-suite/src/test/resources/it0051/pom.xml
index 5809449..d9faee9 100644
--- a/core-it-suite/src/test/resources/it0051/pom.xml
+++ b/core-it-suite/src/test/resources/it0051/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0052/pom.xml b/core-it-suite/src/test/resources/it0052/pom.xml
index 85b7bd9..22b28ed 100644
--- a/core-it-suite/src/test/resources/it0052/pom.xml
+++ b/core-it-suite/src/test/resources/it0052/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0056/pom.xml b/core-it-suite/src/test/resources/it0056/pom.xml
index 3597990..c2a9428 100644
--- a/core-it-suite/src/test/resources/it0056/pom.xml
+++ b/core-it-suite/src/test/resources/it0056/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0056</name>
-  <description>
-    Test that multiple executions of a goal with different
-    parameter values will succeed.
-  </description>
+  <description>Test that multiple executions of a goal with different
+    parameter values will succeed.</description>
 
   <build>
     <plugins>
@@ -42,20 +38,20 @@
         <executions>
           <execution>
             <id>first-exec</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/first-exec.txt</logFile>
             </configuration>
           </execution>
           <execution>
             <id>second-exec</id>
-            <phase>initialize</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <logFile>target/second-exec.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/it0063/pom.xml b/core-it-suite/src/test/resources/it0063/pom.xml
index 0d7b08a..ac1147c 100644
--- a/core-it-suite/src/test/resources/it0063/pom.xml
+++ b/core-it-suite/src/test/resources/it0063/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0064/pom.xml b/core-it-suite/src/test/resources/it0064/pom.xml
index 82345e4..3881f38 100644
--- a/core-it-suite/src/test/resources/it0064/pom.xml
+++ b/core-it-suite/src/test/resources/it0064/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,10 +8,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0064</name>
-  <description>
-    Test the use of a mojo that uses setters instead of private fields
-    for the population of configuration values.
-  </description>
+  <description>Test the use of a mojo that uses setters instead of private fields
+    for the population of configuration values.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/it0071/pom.xml b/core-it-suite/src/test/resources/it0071/pom.xml
index 799a349..4ef1dbf 100644
--- a/core-it-suite/src/test/resources/it0071/pom.xml
+++ b/core-it-suite/src/test/resources/it0071/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,9 +8,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0071</name>
-  <description>
-    Verifies that dotted property references work within plugin configurations.
-  </description>
+  <description>Verifies that dotted property references work within plugin configurations.</description>
 
   <properties>
     <m2.foo>foo2</m2.foo>
diff --git a/core-it-suite/src/test/resources/it0072/pom.xml b/core-it-suite/src/test/resources/it0072/pom.xml
index 7cd953e..9a257ea 100644
--- a/core-it-suite/src/test/resources/it0072/pom.xml
+++ b/core-it-suite/src/test/resources/it0072/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -8,9 +9,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0072</name>
-  <description>
-    Verifies that property references with dotted notation work within POM interpolation.
-  </description>
+  <description>Verifies that property references with dotted notation work within POM interpolation.</description>
 
   <properties>
     <m2.version>1.0-SNAPSHOT</m2.version>
@@ -31,10 +30,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0085/pom.xml b/core-it-suite/src/test/resources/it0085/pom.xml
index d876a9c..33785f5 100644
--- a/core-it-suite/src/test/resources/it0085/pom.xml
+++ b/core-it-suite/src/test/resources/it0085/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,12 +8,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: it0085</name>
-  <description>
-    Verify that system-scoped dependencies get resolved with system scope
+  <description>Verify that system-scoped dependencies get resolved with system scope
     when they are resolved transitively via another (non-system)
     dependency. Inherited scope should not apply in the case of
-    system-scoped dependencies, no matter where they are.
-  </description>
+    system-scoped dependencies, no matter where they are.</description>
 
   <dependencies>
     <dependency>
@@ -36,10 +35,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0086/pom.xml b/core-it-suite/src/test/resources/it0086/pom.xml
index bfd0601..e120d27 100644
--- a/core-it-suite/src/test/resources/it0086/pom.xml
+++ b/core-it-suite/src/test/resources/it0086/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: it0086</name>
-  <description>
-    Verify that a plugin dependency class can be loaded from both the plugin classloader and the context classloader
-    available to the plugin.
-  </description>
+  <description>Verify that a plugin dependency class can be loaded from both the plugin classloader and the context classloader
+    available to the plugin.</description>
 
   <build>
     <plugins>
@@ -41,6 +37,9 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB,org.apache.maven.plugin.coreit.SomeClass</classNames>
@@ -48,9 +47,6 @@
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0087/pom.xml b/core-it-suite/src/test/resources/it0087/pom.xml
index 7d5f3a5..5de153c 100644
--- a/core-it-suite/src/test/resources/it0087/pom.xml
+++ b/core-it-suite/src/test/resources/it0087/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: it0087</name>
-  <description>
-    Verify that a project-level plugin dependency class can be loaded from both the plugin classloader
-    and the context classloader available to the plugin.
-  </description>
+  <description>Verify that a project-level plugin dependency class can be loaded from both the plugin classloader
+    and the context classloader available to the plugin.</description>
 
   <build>
     <plugins>
@@ -48,6 +44,9 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.it0087.IT0087,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
@@ -55,9 +54,6 @@
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0090/pom.xml b/core-it-suite/src/test/resources/it0090/pom.xml
index 173d82c..e3771d7 100644
--- a/core-it-suite/src/test/resources/it0090/pom.xml
+++ b/core-it-suite/src/test/resources/it0090/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: it0090</name>
-  <description>
-    Test that ensures that envars are interpolated correctly into plugin
-    configurations.
-  </description>
+  <description>Test that ensures that envars are interpolated correctly into plugin
+    configurations.</description>
 
   <build>
     <plugins>
@@ -40,14 +36,14 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
+            <goals>
+              <goal>config</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <propertiesFile>target/env.properties</propertiesFile>
               <stringParam>${env.MAVEN_TEST_ENVAR}</stringParam>
             </configuration>
-            <goals>
-              <goal>config</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0108/pom.xml b/core-it-suite/src/test/resources/it0108/pom.xml
index 33da9f5..2872148 100644
--- a/core-it-suite/src/test/resources/it0108/pom.xml
+++ b/core-it-suite/src/test/resources/it0108/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Copyright 2004-2006 The Apache Software Foundation.
   ~
@@ -13,18 +14,14 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: snapshotUpdate</name>
   <groupId>org.apache.maven.its.snapshotUpdate</groupId>
   <artifactId>maven-it-snapshot-update</artifactId>
-  <description>
-    Downloads a snapshot dependency that was deployed with uniqueVersion = false, and checks it can be
-    updated. See MNG-1908.
-  </description>
   <version>1.0-SNAPSHOT</version>
+  <name>Maven Integration Test :: snapshotUpdate</name>
+  <description>Downloads a snapshot dependency that was deployed with uniqueVersion = false, and checks it can be
+    updated. See MNG-1908.</description>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -34,11 +31,11 @@
   </dependencies>
   <repositories>
     <repository>
-      <id>it.snapshots</id>
-      <url>file:///${basedir}/repository</url>
       <snapshots>
         <updatePolicy>always</updatePolicy>
       </snapshots>
+      <id>it.snapshots</id>
+      <url>file:///${basedir}/repository</url>
     </repository>
   </repositories>
 </project>
diff --git a/core-it-suite/src/test/resources/it0113/pom.xml b/core-it-suite/src/test/resources/it0113/pom.xml
index b9e6094..b3fbdbf 100644
--- a/core-it-suite/src/test/resources/it0113/pom.xml
+++ b/core-it-suite/src/test/resources/it0113/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.it0113</groupId>
@@ -29,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>test</name>
-  <description>
-    Test that the auth infos given in the settings.xml are pushed into the wagon manager and are available
-    to other components/plugins.
-  </description>
+  <description>Test that the auth infos given in the settings.xml are pushed into the wagon manager and are available
+    to other components/plugins.</description>
 
   <build>
     <plugins>
@@ -49,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>dump-auth</goal>
-           </goals>
+            </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0116/pom.xml b/core-it-suite/src/test/resources/it0116/pom.xml
index bf611e7..d6bf60d 100644
--- a/core-it-suite/src/test/resources/it0116/pom.xml
+++ b/core-it-suite/src/test/resources/it0116/pom.xml
@@ -1,9 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0116</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
   <profiles>
     <profile>
       <id>bogus-profile</id>
diff --git a/core-it-suite/src/test/resources/it0130/pom.xml b/core-it-suite/src/test/resources/it0130/pom.xml
index 5aa9eff..f0e9764 100644
--- a/core-it-suite/src/test/resources/it0130/pom.xml
+++ b/core-it-suite/src/test/resources/it0130/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0131/pom.xml b/core-it-suite/src/test/resources/it0131/pom.xml
index 0cd9782..6e2d5e1 100644
--- a/core-it-suite/src/test/resources/it0131/pom.xml
+++ b/core-it-suite/src/test/resources/it0131/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0132/pom.xml b/core-it-suite/src/test/resources/it0132/pom.xml
index 731264c..fb183a0 100644
--- a/core-it-suite/src/test/resources/it0132/pom.xml
+++ b/core-it-suite/src/test/resources/it0132/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0133/pom.xml b/core-it-suite/src/test/resources/it0133/pom.xml
index b6f92db..3c32838 100644
--- a/core-it-suite/src/test/resources/it0133/pom.xml
+++ b/core-it-suite/src/test/resources/it0133/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0134/pom.xml b/core-it-suite/src/test/resources/it0134/pom.xml
index 02812a3..3d1e490 100644
--- a/core-it-suite/src/test/resources/it0134/pom.xml
+++ b/core-it-suite/src/test/resources/it0134/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0135/pom.xml b/core-it-suite/src/test/resources/it0135/pom.xml
index 8d31a53..85129b9 100644
--- a/core-it-suite/src/test/resources/it0135/pom.xml
+++ b/core-it-suite/src/test/resources/it0135/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0136/pom.xml b/core-it-suite/src/test/resources/it0136/pom.xml
index d224409..3a2e07b 100644
--- a/core-it-suite/src/test/resources/it0136/pom.xml
+++ b/core-it-suite/src/test/resources/it0136/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0137/pom.xml b/core-it-suite/src/test/resources/it0137/pom.xml
index a368062..00114a3 100644
--- a/core-it-suite/src/test/resources/it0137/pom.xml
+++ b/core-it-suite/src/test/resources/it0137/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0138/pom.xml b/core-it-suite/src/test/resources/it0138/pom.xml
index 3785024..e4078a8 100644
--- a/core-it-suite/src/test/resources/it0138/pom.xml
+++ b/core-it-suite/src/test/resources/it0138/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0139/child/pom.xml b/core-it-suite/src/test/resources/it0139/child/pom.xml
index 63960f9..ebe9a41 100644
--- a/core-it-suite/src/test/resources/it0139/child/pom.xml
+++ b/core-it-suite/src/test/resources/it0139/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-     <groupId>org.apache.maven.its.it0139</groupId>
-     <artifactId>parent</artifactId>
-     <version>1.0</version>
+    <groupId>org.apache.maven.its.it0139</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
   </parent>
 
   <groupId>org.apache.maven.its.it0139.child</groupId>
@@ -87,7 +85,6 @@
   </properties>
 
   <build>
-    <outputDirectory>target/bin</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -95,10 +92,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/interpolated.properties</outputFile>
               <expressions>
@@ -109,6 +106,7 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>target/bin</outputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/it0139/pom.xml b/core-it-suite/src/test/resources/it0139/pom.xml
index 7668790..e8ea480 100644
--- a/core-it-suite/src/test/resources/it0139/pom.xml
+++ b/core-it-suite/src/test/resources/it0139/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0140/child/pom.xml b/core-it-suite/src/test/resources/it0140/child/pom.xml
index 5871258..d289cad 100644
--- a/core-it-suite/src/test/resources/it0140/child/pom.xml
+++ b/core-it-suite/src/test/resources/it0140/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-     <groupId>org.apache.maven.its.it0140</groupId>
-     <artifactId>parent</artifactId>
-     <version>1.0</version>
+    <groupId>org.apache.maven.its.it0140</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
   </parent>
 
   <groupId>org.apache.maven.its.it0140.child</groupId>
@@ -87,7 +85,6 @@
   </properties>
 
   <build>
-    <outputDirectory>target/bin</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -95,10 +92,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/interpolated.properties</outputFile>
               <expressions>
@@ -109,6 +106,7 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>target/bin</outputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/it0140/pom.xml b/core-it-suite/src/test/resources/it0140/pom.xml
index c5f150c..206d2d3 100644
--- a/core-it-suite/src/test/resources/it0140/pom.xml
+++ b/core-it-suite/src/test/resources/it0140/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/it0144/pom.xml b/core-it-suite/src/test/resources/it0144/pom.xml
index a736fde..193981d 100644
--- a/core-it-suite/src/test/resources/it0144/pom.xml
+++ b/core-it-suite/src/test/resources/it0144/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0144</name>
-  <description>
-    Test that the lifecycle phases execute in proper order.
-  </description>
+  <description>Test that the lifecycle phases execute in proper order.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
           <!-- default lifecycle -->
           <execution>
             <id>validate</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>validate</string>
@@ -53,10 +49,10 @@
           </execution>
           <execution>
             <id>initialize</id>
-            <phase>initialize</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>initialize</string>
@@ -64,10 +60,10 @@
           </execution>
           <execution>
             <id>generate-sources</id>
-            <phase>generate-sources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>generate-sources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>generate-sources</string>
@@ -75,10 +71,10 @@
           </execution>
           <execution>
             <id>process-sources</id>
-            <phase>process-sources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-sources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-sources</string>
@@ -86,10 +82,10 @@
           </execution>
           <execution>
             <id>generate-resources</id>
-            <phase>generate-resources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>generate-resources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>generate-resources</string>
@@ -97,10 +93,10 @@
           </execution>
           <execution>
             <id>process-resources</id>
-            <phase>process-resources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-resources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-resources</string>
@@ -108,10 +104,10 @@
           </execution>
           <execution>
             <id>compile</id>
-            <phase>compile</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>compile</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>compile</string>
@@ -119,10 +115,10 @@
           </execution>
           <execution>
             <id>process-classes</id>
-            <phase>process-classes</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-classes</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-classes</string>
@@ -130,10 +126,10 @@
           </execution>
           <execution>
             <id>generate-test-sources</id>
-            <phase>generate-test-sources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>generate-test-sources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>generate-test-sources</string>
@@ -141,10 +137,10 @@
           </execution>
           <execution>
             <id>process-test-sources</id>
-            <phase>process-test-sources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-test-sources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-test-sources</string>
@@ -152,10 +148,10 @@
           </execution>
           <execution>
             <id>generate-test-resources</id>
-            <phase>generate-test-resources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>generate-test-resources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>generate-test-resources</string>
@@ -163,10 +159,10 @@
           </execution>
           <execution>
             <id>process-test-resources</id>
-            <phase>process-test-resources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-test-resources</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-test-resources</string>
@@ -174,10 +170,10 @@
           </execution>
           <execution>
             <id>test-compile</id>
-            <phase>test-compile</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>test-compile</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>test-compile</string>
@@ -185,10 +181,10 @@
           </execution>
           <execution>
             <id>process-test-classes</id>
-            <phase>process-test-classes</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>process-test-classes</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>process-test-classes</string>
@@ -196,10 +192,10 @@
           </execution>
           <execution>
             <id>test</id>
-            <phase>test</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>test</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>test</string>
@@ -207,10 +203,10 @@
           </execution>
           <execution>
             <id>prepare-package</id>
-            <phase>prepare-package</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>prepare-package</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>prepare-package</string>
@@ -218,10 +214,10 @@
           </execution>
           <execution>
             <id>package</id>
-            <phase>package</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>package</string>
@@ -229,10 +225,10 @@
           </execution>
           <execution>
             <id>pre-integration-test</id>
-            <phase>pre-integration-test</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>pre-integration-test</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>pre-integration-test</string>
@@ -240,10 +236,10 @@
           </execution>
           <execution>
             <id>integration-test</id>
-            <phase>integration-test</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>integration-test</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>integration-test</string>
@@ -251,10 +247,10 @@
           </execution>
           <execution>
             <id>post-integration-test</id>
-            <phase>post-integration-test</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>post-integration-test</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>post-integration-test</string>
@@ -262,10 +258,10 @@
           </execution>
           <execution>
             <id>verify</id>
-            <phase>verify</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>verify</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>verify</string>
@@ -273,10 +269,10 @@
           </execution>
           <execution>
             <id>install</id>
-            <phase>install</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>install</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>install</string>
@@ -284,10 +280,10 @@
           </execution>
           <execution>
             <id>deploy</id>
-            <phase>deploy</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>deploy</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>deploy</string>
@@ -296,10 +292,10 @@
           <!-- clean lifecycle -->
           <execution>
             <id>pre-clean</id>
-            <phase>pre-clean</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>pre-clean</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>pre-clean</string>
@@ -307,10 +303,10 @@
           </execution>
           <execution>
             <id>clean</id>
-            <phase>clean</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>clean</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>clean</string>
@@ -318,10 +314,10 @@
           </execution>
           <execution>
             <id>post-clean</id>
-            <phase>post-clean</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>post-clean</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>post-clean</string>
@@ -330,10 +326,10 @@
           <!-- site lifecycle -->
           <execution>
             <id>pre-site</id>
-            <phase>pre-site</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>pre-site</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>pre-site</string>
@@ -341,10 +337,10 @@
           </execution>
           <execution>
             <id>site</id>
-            <phase>site</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>site</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>site</string>
@@ -352,10 +348,10 @@
           </execution>
           <execution>
             <id>post-site</id>
-            <phase>post-site</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>post-site</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>post-site</string>
@@ -363,10 +359,10 @@
           </execution>
           <execution>
             <id>site-deploy</id>
-            <phase>site-deploy</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>site-deploy</phase>
             <configuration>
               <logFile>target/phases.log</logFile>
               <string>site-deploy</string>
diff --git a/core-it-suite/src/test/resources/it0146/pom.xml b/core-it-suite/src/test/resources/it0146/pom.xml
index cdb5c29..030830c 100644
--- a/core-it-suite/src/test/resources/it0146/pom.xml
+++ b/core-it-suite/src/test/resources/it0146/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: it-0146</name>
-  <description>
-    Verify that download remote snapshot are correctly installed locally via Installer with timestamped name.
-    see issue related in this thread: http://mail-archives.apache.org/mod_mbox/maven-dev/201112.mbox/%3cCAPCjjnHjsQED0tzUztwWtQcSpYVN_k0-0Xq2B7QxTN5arZ-xzA@mail.gmail.com%3e
-  </description>
+  <description>Verify that download remote snapshot are correctly installed locally via Installer with timestamped name.
+    see issue related in this thread: http://mail-archives.apache.org/mod_mbox/maven-dev/201112.mbox/%3cCAPCjjnHjsQED0tzUztwWtQcSpYVN_k0-0Xq2B7QxTN5arZ-xzA@mail.gmail.com%3e</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>install-artifacts</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/it0146/project/pom.xml b/core-it-suite/src/test/resources/it0146/project/pom.xml
index 32b5dab..80c555c 100644
--- a/core-it-suite/src/test/resources/it0146/project/pom.xml
+++ b/core-it-suite/src/test/resources/it0146/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0095/pom.xml b/core-it-suite/src/test/resources/mng-0095/pom.xml
index be4ad28..ecf97e2 100644
--- a/core-it-suite/src/test/resources/mng-0095/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0095/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,10 +8,14 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-95</name>
-  <description>
-    Test reactor failure modes fail-fast, fail-at-end and fail-never by forcing an exception in the first module and
-    checking the build output of the other modules.
-  </description>
+  <description>Test reactor failure modes fail-fast, fail-at-end and fail-never by forcing an exception in the first module and
+    checking the build output of the other modules.</description>
+
+  <modules>
+    <module>subproject1</module>
+    <module>subproject2</module>
+    <module>subproject3</module>
+  </modules>
 
   <build>
     <pluginManagement>
@@ -23,10 +28,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-  <modules>
-    <module>subproject1</module>
-    <module>subproject2</module>
-    <module>subproject3</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0095/subproject1/pom.xml b/core-it-suite/src/test/resources/mng-0095/subproject1/pom.xml
index 3b0caf4..4547c35 100644
--- a/core-it-suite/src/test/resources/mng-0095/subproject1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0095/subproject1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0095/subproject2/pom.xml b/core-it-suite/src/test/resources/mng-0095/subproject2/pom.xml
index a07a659..e19ab8b 100644
--- a/core-it-suite/src/test/resources/mng-0095/subproject2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0095/subproject2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0095/subproject3/pom.xml b/core-it-suite/src/test/resources/mng-0095/subproject3/pom.xml
index 4610907..3f8784f 100644
--- a/core-it-suite/src/test/resources/mng-0095/subproject3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0095/subproject3/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0187/pom.xml b/core-it-suite/src/test/resources/mng-0187/pom.xml
index 6e30048..a6867b7 100644
--- a/core-it-suite/src/test/resources/mng-0187/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0187/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-187</name>
-  <description>
-    Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
-    of the current project.
-  </description>
+  <description>Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
+    of the current project.</description>
 
   <modules>
     <module>sub-1</module>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0187/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-0187/sub-1/pom.xml
index 3155e0d..8968db1 100644
--- a/core-it-suite/src/test/resources/mng-0187/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0187/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-187 :: Sub-1</name>
-  <description>
-    Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
-    of the current project.
-  </description>
+  <description>Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
+    of the current project.</description>
 
   <modules>
     <module>sub-2</module>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0187/sub-1/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-0187/sub-1/sub-2/pom.xml
index 9525af1..17b3e91 100644
--- a/core-it-suite/src/test/resources/mng-0187/sub-1/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0187/sub-1/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-187 :: Sub-2</name>
-  <description>
-    Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
-    of the current project.
-  </description>
+  <description>Verify that MavenProject.getCollectedProjects() provides access to the direct and indirect modules
+    of the current project.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0249/pom.xml b/core-it-suite/src/test/resources/mng-0249/pom.xml
index 68c6e2f..29b88d0 100644
--- a/core-it-suite/src/test/resources/mng-0249/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0249/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0249/test-component-a/pom.xml b/core-it-suite/src/test/resources/mng-0249/test-component-a/pom.xml
index 1847115..67024ef 100644
--- a/core-it-suite/src/test/resources/mng-0249/test-component-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0249/test-component-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -35,7 +33,6 @@
   <name>Maven Integration Test :: MNG-249 :: Test Component A</name>
 
   <build>
-    <outputDirectory>classes</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -48,16 +45,17 @@
             project's artifact file.
             -->
             <id>compile</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>classes</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>classes</outputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0249/test-component-b/pom.xml b/core-it-suite/src/test/resources/mng-0249/test-component-b/pom.xml
index e967d1c..d039452 100644
--- a/core-it-suite/src/test/resources/mng-0249/test-component-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0249/test-component-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -43,7 +41,6 @@
   </dependencies>
 
   <build>
-    <outputDirectory>classes</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -56,16 +53,17 @@
             project's artifact file.
             -->
             <id>compile</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>classes</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>classes</outputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0249/test-component-c/pom.xml b/core-it-suite/src/test/resources/mng-0249/test-component-c/pom.xml
index 045f9f4..a529624 100644
--- a/core-it-suite/src/test/resources/mng-0249/test-component-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0249/test-component-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -44,7 +42,6 @@
   </dependencies>
 
   <build>
-    <outputDirectory>classes</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -57,13 +54,13 @@
             project's artifact file.
             -->
             <id>compile</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>classes</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
@@ -74,6 +71,11 @@
         <executions>
           <execution>
             <id>resolve</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>runtime</goal>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
@@ -81,14 +83,10 @@
               <testClassPath>target/test.txt</testClassPath>
               <significantPathLevels>2</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-              <goal>runtime</goal>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>classes</outputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0282/pom.xml b/core-it-suite/src/test/resources/mng-0282/pom.xml
index a7342c4..442e452 100644
--- a/core-it-suite/src/test/resources/mng-0282/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0282/pom.xml
@@ -1,11 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0045</name>
   <groupId>org.apache.maven.its.it0045</groupId>
   <artifactId>maven-it-it0045</artifactId>
-  <description>Test non-reactor behavior when plugin declares "@requiresProject false"</description>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: it0045</name>
+  <description>Test non-reactor behavior when plugin declares "@requiresProject false"</description>
+
+  <modules>
+    <module>subproject</module>
+  </modules>
 
   <build>
     <pluginManagement>
@@ -18,8 +23,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-  <modules>
-    <module>subproject</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0282/subproject/pom.xml b/core-it-suite/src/test/resources/mng-0282/subproject/pom.xml
index 0db22a6..e645fa0 100644
--- a/core-it-suite/src/test/resources/mng-0282/subproject/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0282/subproject/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-0294/pom.xml b/core-it-suite/src/test/resources/mng-0294/pom.xml
index 6c65bbd..1cf2489 100644
--- a/core-it-suite/src/test/resources/mng-0294/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0294/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0026</name>
   <groupId>org.apache.maven.its.it0026</groupId>
   <artifactId>maven-it-it0026</artifactId>
-  <description>Test merging of global- and user-level settings.xml files.</description>
   <version>1.0-SNAPSHOT</version>
+  <name>Maven Integration Test :: it0026</name>
+  <description>Test merging of global- and user-level settings.xml files.</description>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-0377/pom.xml b/core-it-suite/src/test/resources/mng-0377/pom.xml
index bc0b870..74bdda9 100644
--- a/core-it-suite/src/test/resources/mng-0377/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0377/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: it0031</name>
-  <description>
-    Test usage of plugins.xml mapping file on the repository to resolve
+  <description>Test usage of plugins.xml mapping file on the repository to resolve
     plugin artifactId from its prefix using the pluginGroups in
-    the provided settings.xml.
-  </description>
+    the provided settings.xml.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0449/direct/pom.xml b/core-it-suite/src/test/resources/mng-0449/direct/pom.xml
index a02a847..b9535f8 100644
--- a/core-it-suite/src/test/resources/mng-0449/direct/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0449/direct/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-449</name>
-  <description>
-    Verify that versions for plugins are automatically resolved if not given in the POM by checking first LATEST and
-    then RELEASE in the repo metadata.
-  </description>
+  <description>Verify that versions for plugins are automatically resolved if not given in the POM by checking first LATEST and
+    then RELEASE in the repo metadata.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0449/lifecycle/pom.xml b/core-it-suite/src/test/resources/mng-0449/lifecycle/pom.xml
index 3a5f3e4..40ff63a 100644
--- a/core-it-suite/src/test/resources/mng-0449/lifecycle/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0449/lifecycle/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-449</name>
-  <description>
-    Verify that versions for plugins are automatically resolved if not given in the POM by checking first LATEST and
-    then RELEASE in the repo metadata.
-  </description>
+  <description>Verify that versions for plugins are automatically resolved if not given in the POM by checking first LATEST and
+    then RELEASE in the repo metadata.</description>
 
   <build>
     <plugins>
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>test-1</id>
-            <phase>validate</phase>
             <goals>
               <!-- creates target/touch-release.txt in 0.1 and target/touch-snapshot.txt in 0.2-SNAPSHOT -->
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>package</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0461/pom.xml b/core-it-suite/src/test/resources/mng-0461/pom.xml
index e367320..d8ee0a9 100644
--- a/core-it-suite/src/test/resources/mng-0461/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0461/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-461</name>
-  <description>
-    Verify that dependency resolution only warns in case of missing dependency POMs but does not fail.
-  </description>
+  <description>Verify that dependency resolution only warns in case of missing dependency POMs but does not fail.</description>
 
   <dependencies>
     <dependency>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0469/test0/pom.xml b/core-it-suite/src/test/resources/mng-0469/test0/pom.xml
index 113200d..ee8e108 100644
--- a/core-it-suite/src/test/resources/mng-0469/test0/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0469/test0/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-469</name>
-  <description>
-    Test that reporting configuration applies to build plugins, too.
-  </description>
+  <description>Test that reporting configuration applies to build plugins, too.</description>
 
   <reporting>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-0469/test1/pom.xml b/core-it-suite/src/test/resources/mng-0469/test1/pom.xml
index 9226914..6155c2b 100644
--- a/core-it-suite/src/test/resources/mng-0469/test1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0469/test1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-469</name>
-  <description>
-    Test that reporting configuration does not override build configuration during build lifecycle.
-  </description>
+  <description>Test that reporting configuration does not override build configuration during build lifecycle.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-0469/test2/pom.xml b/core-it-suite/src/test/resources/mng-0469/test2/pom.xml
index b94ef52..4784168 100644
--- a/core-it-suite/src/test/resources/mng-0469/test2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0469/test2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-469</name>
-  <description>
-    Test that build configuration does not affect report goals.
-  </description>
+  <description>Test that build configuration does not affect report goals.</description>
 
   <build>
     <plugins>
@@ -57,10 +53,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -82,8 +78,7 @@
         <version>2.0-beta-3</version>
         <reportSets>
           <reportSet>
-            <reports>
-            </reports>
+            <reports />
           </reportSet>
         </reportSets>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0471/pom.xml b/core-it-suite/src/test/resources/mng-0471/pom.xml
index c8d8d73..d8e2672 100644
--- a/core-it-suite/src/test/resources/mng-0471/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0471/pom.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0027</name>
   <groupId>org.apache.maven.its.it0027</groupId>
   <artifactId>maven-it-it0027</artifactId>
-  <description>Test @execute with a custom lifecycle, including configuration</description>
-  <packaging>jar</packaging>
   <version>1.0</version>
+  <packaging>jar</packaging>
+  <name>Maven Integration Test :: it0027</name>
+  <description>Test @execute with a custom lifecycle, including configuration</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-0479/setup/pom.xml b/core-it-suite/src/test/resources/mng-0479/setup/pom.xml
index 1fb5d40..1396c97 100644
--- a/core-it-suite/src/test/resources/mng-0479/setup/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/setup/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0479/test-1/pom.xml b/core-it-suite/src/test/resources/mng-0479/test-1/pom.xml
index a94e6e7..18785c8 100644
--- a/core-it-suite/src/test/resources/mng-0479/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-479</name>
-  <description>
-    Verify that using the same repo id allows to override "central". This project checks that the repo URL can be
-    changed and that snapshots can be enabled.
-  </description>
+  <description>Verify that using the same repo id allows to override "central". This project checks that the repo URL can be
+    changed and that snapshots can be enabled.</description>
 
   <dependencies>
     <dependency>
@@ -58,10 +54,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0479/test-2/pom.xml b/core-it-suite/src/test/resources/mng-0479/test-2/pom.xml
index 5bc922e..8fcc655 100644
--- a/core-it-suite/src/test/resources/mng-0479/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,8 +32,6 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-479</name>
-  <description>
-    Verify that using the same repo id allows to override "central". This project checks that releases can be
-    disabled and that this policy is effective during resolution of parent POMs.
-  </description>
+  <description>Verify that using the same repo id allows to override "central". This project checks that releases can be
+    disabled and that this policy is effective during resolution of parent POMs.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0479/test-3/pom.xml b/core-it-suite/src/test/resources/mng-0479/test-3/pom.xml
index 87bbba9..8530103 100644
--- a/core-it-suite/src/test/resources/mng-0479/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/test-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-479</name>
-  <description>
-    Verify that using the same repo id allows to override "central". This project checks that releases can be
-    disabled and this policy is effective during resolution of dependencies.
-  </description>
+  <description>Verify that using the same repo id allows to override "central". This project checks that releases can be
+    disabled and this policy is effective during resolution of dependencies.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-0479/test-4/pom.xml b/core-it-suite/src/test/resources/mng-0479/test-4/pom.xml
index edce8e4..7cf2524 100644
--- a/core-it-suite/src/test/resources/mng-0479/test-4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/test-4/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-479</name>
-  <description>
-    Verify that using the same repo id allows to override "central". This project checks that releases can be
-    disabled and this policy is effective during resolution of transitive dependencies.
-  </description>
+  <description>Verify that using the same repo id allows to override "central". This project checks that releases can be
+    disabled and this policy is effective during resolution of transitive dependencies.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-0479/test/pom.xml b/core-it-suite/src/test/resources/mng-0479/test/pom.xml
index 5905657..eccee65 100644
--- a/core-it-suite/src/test/resources/mng-0479/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0479/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0496/pom.xml b/core-it-suite/src/test/resources/mng-0496/pom.xml
index 3d626a7..0dfc1e6 100644
--- a/core-it-suite/src/test/resources/mng-0496/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0496/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0028</name>
-  <description>
-    Test that unused configuration parameters from the POM don't cause the
-    mojo to fail...they will show up as warnings in the -X output instead.
-  </description>
+  <description>Test that unused configuration parameters from the POM don't cause the
+    mojo to fail...they will show up as warnings in the -X output instead.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-0505/pom.xml b/core-it-suite/src/test/resources/mng-0505/pom.xml
index cad1dd4..3fd462b 100644
--- a/core-it-suite/src/test/resources/mng-0505/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0505/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-505</name>
-  <description>
-    Test version range support.
-  </description>
+  <description>Test version range support.</description>
 
   <dependencies>
     <dependency>
@@ -69,10 +65,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0507/pom.xml b/core-it-suite/src/test/resources/mng-0507/pom.xml
index a09c272..b8c3a18 100644
--- a/core-it-suite/src/test/resources/mng-0507/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0507/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -46,14 +44,14 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/artifacts.txt</compileArtifacts>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0522/child-project/pom.xml b/core-it-suite/src/test/resources/mng-0522/child-project/pom.xml
index ce79a98..d47a8d5 100644
--- a/core-it-suite/src/test/resources/mng-0522/child-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0522/child-project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -40,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>initialize</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0522/pom.xml b/core-it-suite/src/test/resources/mng-0522/pom.xml
index a862de2..e075a45 100644
--- a/core-it-suite/src/test/resources/mng-0522/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0522/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-522</name>
-  <description>
-    Test for injection of inherited plugin management into plugin configuration.
-  </description>
+  <description>Test for injection of inherited plugin management into plugin configuration.</description>
 
   <modules>
     <module>child-project</module>
diff --git a/core-it-suite/src/test/resources/mng-0553/test-1/pom.xml b/core-it-suite/src/test/resources/mng-0553/test-1/pom.xml
index 477bb1a..4298fa4 100644
--- a/core-it-suite/src/test/resources/mng-0553/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0553/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng0553</groupId>
@@ -29,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-533</name>
-  <description>
-    Test that the auth infos given in the settings.xml are properly decrypted.
-  </description>
+  <description>Test that the auth infos given in the settings.xml are properly decrypted.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0553/test-2/pom.xml b/core-it-suite/src/test/resources/mng-0553/test-2/pom.xml
index 663b064..f286014 100644
--- a/core-it-suite/src/test/resources/mng-0553/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0553/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng0553</groupId>
@@ -29,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-553</name>
-  <description>
-    Test that the auth infos given in the settings.xml are properly decrypted.
-  </description>
+  <description>Test that the auth infos given in the settings.xml are properly decrypted.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0557/pom.xml b/core-it-suite/src/test/resources/mng-0557/pom.xml
index abf0ebb..04c160f 100644
--- a/core-it-suite/src/test/resources/mng-0557/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0557/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0044</name>
   <groupId>org.apache.maven.its.it0044</groupId>
   <artifactId>maven-it-it0044</artifactId>
-  <description>Test --settings CLI option</description>
   <version>1.0-SNAPSHOT</version>
+  <name>Maven Integration Test :: it0044</name>
+  <description>Test --settings CLI option</description>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-0557/src/main/java/org/apache/maven/it0044/Person.java b/core-it-suite/src/test/resources/mng-0557/src/main/java/org/apache/maven/it0044/Person.java
index b8d3ea3..c70dc2a 100644
--- a/core-it-suite/src/test/resources/mng-0557/src/main/java/org/apache/maven/it0044/Person.java
+++ b/core-it-suite/src/test/resources/mng-0557/src/main/java/org/apache/maven/it0044/Person.java
@@ -1,16 +1,31 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it0044;
 
-public class Person
-{
+public class Person {
     private String name;
 
-    public void setName( String name )
-    {
+    public void setName(String name) {
         this.name = name;
     }
 
-    public String getName()
-    {
+    public String getName() {
         return name;
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-0612/dependency/pom.xml b/core-it-suite/src/test/resources/mng-0612/dependency/pom.xml
index 9dd3f8f..5bc7ab9 100644
--- a/core-it-suite/src/test/resources/mng-0612/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0612/dependency/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test Dependency :: it0125</name>
   <groupId>org.apache.maven.its.it0125</groupId>
   <artifactId>maven-it-it0125-dependency</artifactId>
-  <description>Project that brings in a newer version of maven-core-it-support.</description>
   <version>1.0</version>
+  <name>Maven Integration Test Dependency :: it0125</name>
+  <description>Project that brings in a newer version of maven-core-it-support.</description>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.its</groupId>
diff --git a/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml b/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
index fe0c221..43e0987 100644
--- a/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test Plugin :: it0125</name>
   <groupId>org.apache.maven.its.it0125</groupId>
   <artifactId>maven-it-it0125-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
-  <description>Plugin that writes the resolved artifacts to a file.</description>
   <version>1.0</version>
+  <packaging>maven-plugin</packaging>
+  <name>Maven Integration Test Plugin :: it0125</name>
+  <description>Plugin that writes the resolved artifacts to a file.</description>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-0612/plugin/src/main/java/org/apache/maven/its/it0125/DependenciesMojo.java b/core-it-suite/src/test/resources/mng-0612/plugin/src/main/java/org/apache/maven/its/it0125/DependenciesMojo.java
index 0bb27d5..1580dc2 100644
--- a/core-it-suite/src/test/resources/mng-0612/plugin/src/main/java/org/apache/maven/its/it0125/DependenciesMojo.java
+++ b/core-it-suite/src/test/resources/mng-0612/plugin/src/main/java/org/apache/maven/its/it0125/DependenciesMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0125;
 
 /*
@@ -19,20 +37,14 @@
  * under the License.
  */
 
-import java.io.BufferedOutputStream;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.Writer;
 import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.factory.DefaultArtifactFactory;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -44,8 +56,7 @@
  * @goal dependencies
  * @requiresDependencyResolution test
  */
-public class DependenciesMojo extends AbstractMojo
-{
+public class DependenciesMojo extends AbstractMojo {
     /**
      * @parameter expression="${project.artifacts}"
      */
@@ -59,32 +70,26 @@
     /*
      * @see org.apache.maven.plugin.Mojo#execute()
      */
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        File file = new File( buildDirectory, "dependencies.log" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        File file = new File(buildDirectory, "dependencies.log");
 
-        if ( !file.getParentFile().mkdirs() )
-        {
-            throw new MojoExecutionException( "Cannot create build directory" );
+        if (!file.getParentFile().mkdirs()) {
+            throw new MojoExecutionException("Cannot create build directory");
         }
 
-        try
-        {
-            BufferedWriter writer = new BufferedWriter( new FileWriter( file ) );
+        try {
+            BufferedWriter writer = new BufferedWriter(new FileWriter(file));
 
-            for ( Iterator iterator = artifacts.iterator(); iterator.hasNext(); )
-            {
+            for (Iterator iterator = artifacts.iterator(); iterator.hasNext(); ) {
                 Artifact artifact = (Artifact) iterator.next();
 
-                writer.write( artifact.toString() );
+                writer.write(artifact.toString());
                 writer.newLine();
             }
 
             writer.close();
-        }
-        catch ( IOException exception )
-        {
-            throw new MojoExecutionException( "Cannot create dependencies.log", exception );
+        } catch (IOException exception) {
+            throw new MojoExecutionException("Cannot create dependencies.log", exception);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-0612/project/pom.xml b/core-it-suite/src/test/resources/mng-0612/project/pom.xml
index 0490833..568a7ee 100644
--- a/core-it-suite/src/test/resources/mng-0612/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0612/project/pom.xml
@@ -1,42 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0125</name>
   <groupId>org.apache.maven.its.it0125</groupId>
   <artifactId>maven-it-it0125</artifactId>
-  <description>Test that ensures the newest-wins conflict resolver is used.</description>
   <version>1.0</version>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.it0125</groupId>
-        <artifactId>maven-it-it0125-plugin</artifactId>
-        <version>1.0</version>
-        <executions>
-          <execution>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>dependencies</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-verifier-plugin</artifactId>
-         <configuration>
-           <verificationFile>src/test/verifier/verifications-test.xml</verificationFile>
-         </configuration>
-         <executions>
-           <execution>
-             <phase>verify</phase>
-             <goals>
-               <goal>verify</goal>
-             </goals>
-           </execution>
-         </executions>
-      </plugin>
-    </plugins>
-  </build>
+  <name>Maven Integration Test :: it0125</name>
+  <description>Test that ensures the newest-wins conflict resolver is used.</description>
+  <properties>
+    <mavenConflictResolvers>newest</mavenConflictResolvers>
+  </properties>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.its.it0125</groupId>
@@ -49,7 +21,36 @@
       <version>1.0</version>
     </dependency>
   </dependencies>
-  <properties>
-    <mavenConflictResolvers>newest</mavenConflictResolvers>
-  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.it0125</groupId>
+        <artifactId>maven-it-it0125-plugin</artifactId>
+        <version>1.0</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>dependencies</goal>
+            </goals>
+            <phase>generate-resources</phase>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-verifier-plugin</artifactId>
+        <configuration>
+          <verificationFile>src/test/verifier/verifications-test.xml</verificationFile>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>verify</goal>
+            </goals>
+            <phase>verify</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/pom.xml b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/pom.xml
index d16cda0..f24f39f 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>grandchild1</name>
-  <artifactId>grandchild1</artifactId>
-  <packaging>jar</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624.depmgmt</groupId>
     <artifactId>child</artifactId>
   </parent>
+  <artifactId>grandchild1</artifactId>
+  <packaging>jar</packaging>
+  <name>grandchild1</name>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 414df2b..573876c 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild1/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello " + World.getWorld());
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello " + World.getWorld());
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/pom.xml b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/pom.xml
index 7188c9b..f8ee508 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>grandchild2</name>
-  <artifactId>grandchild2</artifactId>
-  <packaging>jar</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624.depmgmt</groupId>
     <artifactId>child</artifactId>
   </parent>
+  <artifactId>grandchild2</artifactId>
+  <packaging>jar</packaging>
+  <name>grandchild2</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/src/main/java/org/apache/maven/mng624/World.java b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/src/main/java/org/apache/maven/mng624/World.java
index 50c5ce1..21d290a 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/src/main/java/org/apache/maven/mng624/World.java
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/grandchild2/src/main/java/org/apache/maven/mng624/World.java
@@ -1,5 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class World {
-  public static String getWorld() { return "earth"; }
+    public static String getWorld() {
+        return "earth";
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/pom.xml b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/pom.xml
index bee16dd..98ef980 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/child/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <artifactId>child</artifactId>
-  <packaging>pom</packaging>
-  <name>child</name>
   <parent>
     <groupId>org.apache.maven.its.mng624.depmgmt</groupId>
     <artifactId>parent</artifactId>
   </parent>
+  <artifactId>child</artifactId>
+  <packaging>pom</packaging>
+  <name>child</name>
   <modules>
     <module>grandchild1</module>
     <module>grandchild2</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/pom.xml b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/pom.xml
index f73e498..518a98e 100644
--- a/core-it-suite/src/test/resources/mng-0624/dependencyManagement/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/dependencyManagement/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 parent</name>
   <groupId>org.apache.maven.its.mng624.depmgmt</groupId>
   <artifactId>parent</artifactId>
   <version>1</version>
   <packaging>pom</packaging>
+  <name>mng624 parent</name>
   <modules>
     <module>child</module>
   </modules>
diff --git a/core-it-suite/src/test/resources/mng-0624/noParentInTree/pom.xml b/core-it-suite/src/test/resources/mng-0624/noParentInTree/pom.xml
index 4837b4a..21fe52a 100644
--- a/core-it-suite/src/test/resources/mng-0624/noParentInTree/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/noParentInTree/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child1</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child1</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>parent</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child1</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child1</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/noParentInTree/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/noParentInTree/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/noParentInTree/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/noParentInTree/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/pom.xml
index ae3c546..e27d2cb 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child1</name>
-  <artifactId>child1</artifactId>
-  <packaging>jar</packaging>
-    <groupId>org.apache.maven.its.mng624.opt</groupId>
 
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>parent</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>child1</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child1</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/pom.xml
index 5324a10..07b92b8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 grandchild</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>grandchild</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>child2</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>grandchild</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 grandchild</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/pom.xml
index 413bce5..8ef560d 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child2/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child2</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>child2</artifactId>
-  <packaging>pom</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>parent</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>child2</artifactId>
+  <packaging>pom</packaging>
+  <name>mng624 child2</name>
   <modules>
     <module>grandchild</module>
     <module>../grandchild2</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/pom.xml
index a2749f2..4d14268 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child3child</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>child3child</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>child3</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>child3child</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child3child</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/pom.xml
index 7955ab6..97c1bf9 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child3/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child3</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>child3</artifactId>
-  <version>2</version>
-  <packaging>pom</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>parent</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>child3</artifactId>
+  <version>2</version>
+  <packaging>pom</packaging>
+  <name>mng624 child3</name>
   <modules>
     <module>child3child</module>
   </modules>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/pom.xml
index c25d8e8..5be6958 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child4</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>child4</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>parent</artifactId>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>child4</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child4</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/pom.xml
index 861cc32..c605e5a 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 grandchild2</name>
-  <groupId>org.apache.maven.its.mng624.opt</groupId>
-  <artifactId>grandchild2</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624.opt</groupId>
     <artifactId>child2</artifactId>
     <relativePath>../child2/pom.xml</relativePath>
   </parent>
+  <groupId>org.apache.maven.its.mng624.opt</groupId>
+  <artifactId>grandchild2</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 grandchild2</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/optionalVersion/pom.xml b/core-it-suite/src/test/resources/mng-0624/optionalVersion/pom.xml
index 9da13b4..19e301a 100644
--- a/core-it-suite/src/test/resources/mng-0624/optionalVersion/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/optionalVersion/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 parent</name>
   <groupId>org.apache.maven.its.mng624.opt</groupId>
   <artifactId>parent</artifactId>
   <version>1</version>
   <packaging>pom</packaging>
+  <name>mng624 parent</name>
   <modules>
     <module>child1</module>
     <module>child2</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/pom.xml b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/pom.xml
index a046255..0b5a967 100644
--- a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/pom.xml
@@ -1,13 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng0624 :: Main</name>
-  <groupId>org.apache.maven.its.mng0624</groupId>
-  <artifactId>maven-it-mng0624-main</artifactId>
-  <version>1.0</version>
   <parent>
     <groupId>org.apache.maven.its.mng0624</groupId>
     <artifactId>maven-it-mng0624-basic-parent</artifactId>
     <version>${mng0624ParentPom}</version>
     <relativePath>../parent</relativePath>
   </parent>
+  <groupId>org.apache.maven.its.mng0624</groupId>
+  <artifactId>maven-it-mng0624-main</artifactId>
+  <version>1.0</version>
+  <name>Maven Integration Test :: mng0624 :: Main</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/Hello.java b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/Hello.java
deleted file mode 100644
index 4b668d4..0000000
--- a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/Hello.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Created by IntelliJ IDEA.
- * User: rago2483
- * Date: Aug 6, 2008
- * Time: 10:36:21 PM
- * To change this template use File | Settings | File Templates.
- */
-public class Hello
-{
-    public void helloWorld()
-    {
-        System.out.println("Hello World!");
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/mng0624/Hello.java b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/mng0624/Hello.java
new file mode 100644
index 0000000..9a42e94
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/main/java/mng0624/Hello.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package mng0624;
+
+public class Hello {
+    public void helloWorld() {
+        System.out.println("Hello World!");
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/HelloTest.java b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/HelloTest.java
deleted file mode 100644
index 0f10592..0000000
--- a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/HelloTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-import junit.framework.TestCase;
-
-/**
- * Created by IntelliJ IDEA.
- * User: rago2483
- * Date: Aug 6, 2008
- * Time: 10:41:32 PM
- * To change this template use File | Settings | File Templates.
- */
-public class HelloTest extends TestCase
-{
-    public void testHello() throws Exception
-    {
-        Hello hello = new Hello();
-        hello.helloWorld();
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/mng0624/HelloTest.java b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/mng0624/HelloTest.java
new file mode 100644
index 0000000..70f6064
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-0624/parentBadPath/main/src/test/java/mng0624/HelloTest.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package mng0624;
+
+import junit.framework.TestCase;
+
+public class HelloTest extends TestCase {
+    public void testHello() throws Exception {
+        Hello hello = new Hello();
+        hello.helloWorld();
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/parent/pom.xml b/core-it-suite/src/test/resources/mng-0624/parentBadPath/parent/pom.xml
index 05c92b9..1e5bda6 100644
--- a/core-it-suite/src/test/resources/mng-0624/parentBadPath/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/parentBadPath/parent/pom.xml
@@ -1,15 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng0624 :: Parent</name>
-  <groupId>org.apache.maven.its.mng0624</groupId>
-  <artifactId>maven-it-mng0624-basic-parent</artifactId>
-  <packaging>pom</packaging>
-  <version>1.1</version>
   <parent>
     <groupId>org.apache.maven.its.mng0624</groupId>
     <artifactId>maven-it-mng0624-basic</artifactId>
     <version>${mng0624pom}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng0624</groupId>
+  <artifactId>maven-it-mng0624-basic-parent</artifactId>
+  <version>1.1</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: mng0624 :: Parent</name>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-0624/parentBadPath/pom.xml b/core-it-suite/src/test/resources/mng-0624/parentBadPath/pom.xml
index 2d1c498..25758f0 100644
--- a/core-it-suite/src/test/resources/mng-0624/parentBadPath/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/parentBadPath/pom.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng0624</name>
-  <description>Test that child can get its parent without specifying a version</description>
   <groupId>org.apache.maven.its.mng0624</groupId>
   <artifactId>maven-it-mng0624-basic</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: mng0624</name>
+  <description>Test that child can get its parent without specifying a version</description>
   <modules>
     <module>parent</module>
     <module>main</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/simple/child/pom.xml b/core-it-suite/src/test/resources/mng-0624/simple/child/pom.xml
index c578ab7..a9accbf 100644
--- a/core-it-suite/src/test/resources/mng-0624/simple/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/simple/child/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 simple child</name>
-  <artifactId>child</artifactId>
-  <packaging>jar</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624.simple</groupId>
     <artifactId>myproject</artifactId>
   </parent>
+  <artifactId>child</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 simple child</name>
 
   <profiles>
     <profile>
@@ -17,8 +18,10 @@
             <artifactId>maven-antrun-plugin</artifactId>
             <executions>
               <execution>
+                <goals>
+                  <goal>run</goal>
+                </goals>
                 <phase>install</phase>
-                <goals><goal>run</goal></goals>
                 <configuration>
                   <target>
                     <echo>hello world</echo>
diff --git a/core-it-suite/src/test/resources/mng-0624/simple/child/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/simple/child/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/simple/child/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/simple/child/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/simple/pom.xml b/core-it-suite/src/test/resources/mng-0624/simple/pom.xml
index 66c1c54..7304a7e 100644
--- a/core-it-suite/src/test/resources/mng-0624/simple/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/simple/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 myproject</name>
   <groupId>org.apache.maven.its.mng624.simple</groupId>
   <artifactId>myproject</artifactId>
   <version>1</version>
   <packaging>pom</packaging>
+  <name>mng624 myproject</name>
 
   <modules>
     <module>child</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/pom.xml
index 4837b4a..21fe52a 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child1</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child1</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>parent</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child1</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child1</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child1/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/pom.xml
index cf691d3..bd947d1 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 grandchild</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>grandchild</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>child2</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>grandchild</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 grandchild</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/grandchild/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/pom.xml
index 1ccada9..1f25df4 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child2/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child2</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child2</artifactId>
-  <packaging>pom</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>parent</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child2</artifactId>
+  <packaging>pom</packaging>
+  <name>mng624 child2</name>
   <modules>
     <module>grandchild</module>
     <module>../grandchild2</module>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/pom.xml
index 9feedec..ce5d48c 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child3child</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child3child</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>child3</artifactId>
     <version>2</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child3child</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child3child</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/child3child/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/pom.xml
index a904c4e..ba28035 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child3/pom.xml
@@ -1,15 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child3</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child3</artifactId>
-  <version>2</version>
-  <packaging>pom</packaging>
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>parent</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child3</artifactId>
+  <version>2</version>
+  <packaging>pom</packaging>
+  <name>mng624 child3</name>
   <modules>
     <module>child3child</module>
   </modules>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/pom.xml
index 234c80e..57b8412 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/pom.xml
@@ -1,14 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 child4</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>child4</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
     <artifactId>parent</artifactId>
     <version>${ver}</version>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>child4</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 child4</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/child4/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/pom.xml
index 9c5e22f..8bce39c 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/pom.xml
@@ -1,9 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 grandchild2</name>
-  <groupId>org.apache.maven.its.mng624</groupId>
-  <artifactId>grandchild2</artifactId>
-  <packaging>jar</packaging>
 
   <parent>
     <groupId>org.apache.maven.its.mng624</groupId>
@@ -11,5 +8,9 @@
     <version>${ver}</version>
     <relativePath>../child2/pom.xml</relativePath>
   </parent>
+  <groupId>org.apache.maven.its.mng624</groupId>
+  <artifactId>grandchild2</artifactId>
+  <packaging>jar</packaging>
+  <name>mng624 grandchild2</name>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java b/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
index 7180d8d..ba9fff8 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/grandchild2/src/main/java/org/apache/maven/mng624/HelloWorld.java
@@ -1,7 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.maven.mng624;
 
 public class HelloWorld {
-  public static void main(String[] args) {
-    System.out.println("Hello world!");
-  }
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-0624/versionInProperty/pom.xml b/core-it-suite/src/test/resources/mng-0624/versionInProperty/pom.xml
index 74c4c0b..c3b7cfd 100644
--- a/core-it-suite/src/test/resources/mng-0624/versionInProperty/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0624/versionInProperty/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>mng624 parent</name>
   <groupId>org.apache.maven.its.mng624</groupId>
   <artifactId>parent</artifactId>
   <version>${ver}</version>
   <packaging>pom</packaging>
+  <name>mng624 parent</name>
   <modules>
     <module>child1</module>
     <module>child2</module>
diff --git a/core-it-suite/src/test/resources/mng-0666/pom.xml b/core-it-suite/src/test/resources/mng-0666/pom.xml
index 6e37565..8d6a410 100644
--- a/core-it-suite/src/test/resources/mng-0666/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0666/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-666</name>
-  <description>
-    Verify that maven-1 POMs will be ignored but not stop the resolution process.
-  </description>
+  <description>Verify that maven-1 POMs will be ignored but not stop the resolution process.</description>
 
   <dependencies>
     <dependency>
@@ -48,14 +44,14 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/artifacts.txt</compileArtifacts>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0674/pom.xml b/core-it-suite/src/test/resources/mng-0674/pom.xml
index 0ad6de4..2b75bd5 100644
--- a/core-it-suite/src/test/resources/mng-0674/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0674/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +29,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0680/pom.xml b/core-it-suite/src/test/resources/mng-0680/pom.xml
index 72dfcdb..bef9262 100644
--- a/core-it-suite/src/test/resources/mng-0680/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0680/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng0680</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-680</name>
   <description>Test that the basedir of the parent is set correctly.</description>
diff --git a/core-it-suite/src/test/resources/mng-0680/subproject/pom.xml b/core-it-suite/src/test/resources/mng-0680/subproject/pom.xml
index d362b8a..0e886f0 100644
--- a/core-it-suite/src/test/resources/mng-0680/subproject/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0680/subproject/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -48,10 +46,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0761/pom.xml b/core-it-suite/src/test/resources/mng-0761/pom.xml
index 0e708ef..8822f10 100644
--- a/core-it-suite/src/test/resources/mng-0761/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0761/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-761</name>
-  <description>
-    Test that a deployment of a snapshot falls back to a non-snapshot repository if no snapshot repository is
-    specified.
-  </description>
+  <description>Test that a deployment of a snapshot falls back to a non-snapshot repository if no snapshot repository is
+    specified.</description>
 
   <distributionManagement>
     <repository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0768/pom.xml b/core-it-suite/src/test/resources/mng-0768/pom.xml
index 70c33db..b5f4eac 100644
--- a/core-it-suite/src/test/resources/mng-0768/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0768/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0773/pom.xml b/core-it-suite/src/test/resources/mng-0773/pom.xml
index 93fd0ff..86f42d0 100644
--- a/core-it-suite/src/test/resources/mng-0773/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0773/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-773</name>
-  <description>
-    Verify that profiles from settings.xml do not pollute module lists across projects in a reactorized build.
-   </description>
+  <description>Verify that profiles from settings.xml do not pollute module lists across projects in a reactorized build.</description>
 
   <modules>
     <module>subproject</module>
diff --git a/core-it-suite/src/test/resources/mng-0773/subproject/pom.xml b/core-it-suite/src/test/resources/mng-0773/subproject/pom.xml
index 07c18e8..4cbe019 100644
--- a/core-it-suite/src/test/resources/mng-0773/subproject/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0773/subproject/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0781/pom.xml b/core-it-suite/src/test/resources/mng-0781/pom.xml
index 1146475..caf21a1 100644
--- a/core-it-suite/src/test/resources/mng-0781/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0781/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.it0074</groupId>
@@ -28,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: it0074</name>
-  <description>
-    Test that plugin-level configuration instances are not nullified by
-    execution-level configuration instances.
-  </description>
+  <description>Test that plugin-level configuration instances are not nullified by
+    execution-level configuration instances.</description>
 
   <build>
     <plugins>
@@ -42,13 +37,13 @@
         <executions>
           <execution>
             <id>precompile</id>
+            <goals>
+              <goal>resources</goal>
+            </goals>
             <phase>initialize</phase>
             <configuration>
               <pathname>target/exec-level.txt</pathname>
             </configuration>
-            <goals>
-              <goal>resources</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0786/pom.xml b/core-it-suite/src/test/resources/mng-0786/pom.xml
index b09fce6..a28f719 100644
--- a/core-it-suite/src/test/resources/mng-0786/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0786/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: it0075</name>
-  <description>
-    Verify that direct invocation of a mojo from the command line still
-    results in the processing of modules included via profiles.
-  </description>
+  <description>Verify that direct invocation of a mojo from the command line still
+    results in the processing of modules included via profiles.</description>
 
   <modules>
     <module>sub1</module>
diff --git a/core-it-suite/src/test/resources/mng-0786/sub1/pom.xml b/core-it-suite/src/test/resources/mng-0786/sub1/pom.xml
index a526ee9..9e84a9e 100644
--- a/core-it-suite/src/test/resources/mng-0786/sub1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0786/sub1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0786/sub2/pom.xml b/core-it-suite/src/test/resources/mng-0786/sub2/pom.xml
index 6a97def..719d2a2 100644
--- a/core-it-suite/src/test/resources/mng-0786/sub2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0786/sub2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-0814/pom.xml b/core-it-suite/src/test/resources/mng-0814/pom.xml
index 6d1cf97..21a8ad4 100644
--- a/core-it-suite/src/test/resources/mng-0814/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0814/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -43,10 +41,10 @@
             <version>2.1-SNAPSHOT</version>
             <executions>
               <execution>
-                <phase>validate</phase>
                 <goals>
                   <goal>eval</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputFile>target/profile.properties</outputFile>
                   <expressions>
diff --git a/core-it-suite/src/test/resources/mng-0818/pom.xml b/core-it-suite/src/test/resources/mng-0818/pom.xml
index fca5688..c602240 100644
--- a/core-it-suite/src/test/resources/mng-0818/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0818/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>ear</packaging>
 
   <name>Maven Integration Test :: it0080</name>
-  <description>
-    Test that depending on a WAR doesn't also get its dependencies transitively.
-  </description>
+  <description>Test that depending on a WAR doesn't also get its dependencies transitively.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0820/pom.xml b/core-it-suite/src/test/resources/mng-0820/pom.xml
index c0cca95..97b4759 100644
--- a/core-it-suite/src/test/resources/mng-0820/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0820/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-820</name>
-  <description>
-    Verify that the collector selecting a particular version gets the correct subtree.
-  </description>
+  <description>Verify that the collector selecting a particular version gets the correct subtree.</description>
 
   <!--
   This project has the following *raw* dependency tree:
@@ -69,10 +65,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0823/pom.xml b/core-it-suite/src/test/resources/mng-0823/pom.xml
index 93d13af..0454dc2 100644
--- a/core-it-suite/src/test/resources/mng-0823/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0823/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0073</name>
   <groupId>org.apache.maven.its.it0073</groupId>
   <artifactId>maven-it-it0073</artifactId>
-  <description>Tests context passing between mojos in the same plugin.</description>
   <version>1.0-SNAPSHOT</version>
+  <name>Maven Integration Test :: it0073</name>
+  <description>Tests context passing between mojos in the same plugin.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-0828/pom.xml b/core-it-suite/src/test/resources/mng-0828/pom.xml
index bfa9137..b75b582 100644
--- a/core-it-suite/src/test/resources/mng-0828/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0828/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-828</name>
-  <description>
-    Verify that plain plugin configuration values are listed correctly in debug mode.
-  </description>
+  <description>Verify that plain plugin configuration values are listed correctly in debug mode.</description>
 
   <build>
     <pluginManagement>
@@ -105,10 +101,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0836/pom.xml b/core-it-suite/src/test/resources/mng-0836/pom.xml
index a1d2811..9802ebd 100644
--- a/core-it-suite/src/test/resources/mng-0836/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0836/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng836</groupId>
@@ -28,11 +25,9 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-836</name>
-  <description>
-    Test that parent POMs referenced by a plugin POM can be resolved from ordinary repos, i.e. non-plugin repos.
+  <description>Test that parent POMs referenced by a plugin POM can be resolved from ordinary repos, i.e. non-plugin repos.
     As a motivation for this, imagine the plugin repository hosts only snapshots while the ordinary repository
-    hosts releases and a snapshot plugin might easily use a released parent.
-  </description>
+    hosts releases and a snapshot plugin might easily use a released parent.</description>
 
   <build>
     <plugins>
@@ -47,10 +42,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <file>target/test.txt</file>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-0848/pom.xml b/core-it-suite/src/test/resources/mng-0848/pom.xml
index cc202f4..7c2df6e 100644
--- a/core-it-suite/src/test/resources/mng-0848/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0848/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-848</name>
-  <description>
-    Test that user properties take precedence over default value of plugin parameters.
-  </description>
+  <description>Test that user properties take precedence over default value of plugin parameters.</description>
 
   <build>
     <plugins>
@@ -39,10 +35,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-0866/pom.xml b/core-it-suite/src/test/resources/mng-0866/pom.xml
index 9becd08..51c7369 100644
--- a/core-it-suite/src/test/resources/mng-0866/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0866/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-866</name>
-  <description>
-    Test that expressions inside the default value of plugin parameters are evaluated.
-  </description>
+  <description>Test that expressions inside the default value of plugin parameters are evaluated.</description>
 
   <build>
     <plugins>
@@ -39,10 +35,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml b/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
index 08d3618..2964f87 100644
--- a/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-870 :: Test Plugin</name>
-  <description>
-    Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
-    installed to the local repo.
-  </description>
+  <description>Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
+    installed to the local repo.</description>
 
   <properties>
     <maven.test.skip>true</maven.test.skip>
@@ -85,10 +81,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>initialize</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0870/plugin/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java b/core-it-suite/src/test/resources/mng-0870/plugin/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
index 505df0a..a0191f6 100644
--- a/core-it-suite/src/test/resources/mng-0870/plugin/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
+++ b/core-it-suite/src/test/resources/mng-0870/plugin/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugin.coreit;
 
 /*
@@ -19,15 +37,14 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.net.URL;
-
 /**
  * Creates a touch file if and only if a resource from the plugin dependency was successfully loaded, fails otherwise.
  *
@@ -37,9 +54,7 @@
  * @author Benjamin Bentmann
  *
  */
-public class LoadMojo
-    extends AbstractMojo
-{
+public class LoadMojo extends AbstractMojo {
 
     /**
      * The path to the output file, relative to the project base directory.
@@ -54,33 +69,26 @@
      * @throws MojoExecutionException If the output file could not be created.
      * @throws MojoFailureException If the output file has not been set.
      */
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
+    public void execute() throws MojoExecutionException, MojoFailureException {
         String resource = "mng0870.properties";
 
-        getLog().info( "[MAVEN-CORE-IT-LOG] Loading resource from plugin dependency: " + resource );
+        getLog().info("[MAVEN-CORE-IT-LOG] Loading resource from plugin dependency: " + resource);
 
-        URL url = getClass().getResource( "/" + resource );
+        URL url = getClass().getResource("/" + resource);
 
-        getLog().info( "[MAVEN-CORE-IT-LOG]   " + url );
+        getLog().info("[MAVEN-CORE-IT-LOG]   " + url);
 
-        if ( url == null )
-        {
-            throw new MojoExecutionException( "Resource was not found, incomplete plugin class realm" );
+        if (url == null) {
+            throw new MojoExecutionException("Resource was not found, incomplete plugin class realm");
         }
 
-        getLog().info( "[MAVEN-CORE-IT-LOG] Creating output file: " + file );
+        getLog().info("[MAVEN-CORE-IT-LOG] Creating output file: " + file);
 
-        try
-        {
+        try {
             file.getParentFile().mkdirs();
             file.createNewFile();
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Output file could not be created: " + file, e );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Output file could not be created: " + file, e);
         }
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-0870/pom.xml b/core-it-suite/src/test/resources/mng-0870/pom.xml
index cdbf46e..700cf5f 100644
--- a/core-it-suite/src/test/resources/mng-0870/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0870/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-870</name>
-  <description>
-    Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
-    installed to the local repo.
-  </description>
+  <description>Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
+    installed to the local repo.</description>
 
   <modules>
     <module>plugin</module>
diff --git a/core-it-suite/src/test/resources/mng-0870/project/pom.xml b/core-it-suite/src/test/resources/mng-0870/project/pom.xml
index c4a42e8..3556f99 100644
--- a/core-it-suite/src/test/resources/mng-0870/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0870/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-870 :: Plugin Consumer</name>
-  <description>
-    Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
-    installed to the local repo.
-  </description>
+  <description>Test that the reactor can resolve plugins that have just been built by a previous module and are not yet
+    installed to the local repo.</description>
 
   <build>
     <plugins>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>initialize</phase>
             <goals>
               <goal>load</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0947/pom.xml b/core-it-suite/src/test/resources/mng-0947/pom.xml
index ce3f3e4..faf956f 100644
--- a/core-it-suite/src/test/resources/mng-0947/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0947/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-947</name>
-  <description>
-    Verify that direct optional dependencies are included in the project class paths while transitive optional
-    dependencies are excluded.
-  </description>
+  <description>Verify that direct optional dependencies are included in the project class paths while transitive optional
+    dependencies are excluded.</description>
 
   <dependencies>
     <dependency>
@@ -57,6 +53,11 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>runtime</goal>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/compile.txt</compileArtifacts>
@@ -64,11 +65,6 @@
               <testArtifacts>target/test.txt</testArtifacts>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-              <goal>runtime</goal>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-0956/pom.xml b/core-it-suite/src/test/resources/mng-0956/pom.xml
index 313e16a..8853c09 100644
--- a/core-it-suite/src/test/resources/mng-0956/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0956/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-956</name>
-  <description>
-    Test component injection from project-level plugin dependencies.
-  </description>
+  <description>Test component injection from project-level plugin dependencies.</description>
 
   <build>
     <plugins>
@@ -38,19 +34,6 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>validate</phase>
-            <configuration>
-              <className>java.lang.Object</className>
-              <instanceofPropertiesFile>target/component.properties</instanceofPropertiesFile>
-            </configuration>
-            <goals>
-              <goal>instanceof</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <!-- load component into plugin realm -->
           <dependency>
@@ -59,6 +42,19 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>instanceof</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <className>java.lang.Object</className>
+              <instanceofPropertiesFile>target/component.properties</instanceofPropertiesFile>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-0985/pom.xml b/core-it-suite/src/test/resources/mng-0985/pom.xml
index d76ac2d..6ffba95 100644
--- a/core-it-suite/src/test/resources/mng-0985/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0985/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: it0076</name>
-  <description>
-    Test that plugins in pluginManagement aren't included in the build
+  <description>Test that plugins in pluginManagement aren't included in the build
     unless they are referenced by groupId/artifactId within the plugins
-    section of a pom.
-  </description>
+    section of a pom.</description>
 
   <build>
     <pluginManagement>
@@ -44,10 +40,10 @@
           <executions>
             <execution>
               <id>exec1</id>
-              <phase>initialize</phase>
               <goals>
                 <goal>reset</goal>
               </goals>
+              <phase>initialize</phase>
               <configuration>
                 <logFile>target/unexpected.txt</logFile>
               </configuration>
diff --git a/core-it-suite/src/test/resources/mng-1021/pom.xml b/core-it-suite/src/test/resources/mng-1021/pom.xml
index 347cf79..f12a1c5 100644
--- a/core-it-suite/src/test/resources/mng-1021/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1021/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-1021</name>
-  <description>
-    Test that attached artifacts have the same build number as the main
-    artifact when deployed.
-  </description>
+  <description>Test that attached artifacts have the same build number as the main
+    artifact when deployed.</description>
 
   <distributionManagement>
     <snapshotRepository>
@@ -48,7 +44,6 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
@@ -56,6 +51,7 @@
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <mainFile>jars/main.jar</mainFile>
               <attachedFile>jars/attached.jar</attachedFile>
diff --git a/core-it-suite/src/test/resources/mng-1052/pom.xml b/core-it-suite/src/test/resources/mng-1052/pom.xml
index 7ca0fa9..aa22023 100644
--- a/core-it-suite/src/test/resources/mng-1052/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1052/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0078</name>
-  <description>
-    Test that configuration for a lifecycle-bound plugin is injected from
+  <description>Test that configuration for a lifecycle-bound plugin is injected from
     PluginManagement section even when it's not explicitly defined in the
-    plugins section.
-  </description>
+    plugins section.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-1073/pom.xml b/core-it-suite/src/test/resources/mng-1073/pom.xml
index 7a21c65..d7c3dbc 100644
--- a/core-it-suite/src/test/resources/mng-1073/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1073/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-1073</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.</description>
 
   <modules>
     <module>sub-1</module>
diff --git a/core-it-suite/src/test/resources/mng-1073/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-1073/sub-1/pom.xml
index b79e56c..1d0f085 100644
--- a/core-it-suite/src/test/resources/mng-1073/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1073/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1073 :: Sub-1</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-1073/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-1073/sub-2/pom.xml
index f98baec..5e823d9 100644
--- a/core-it-suite/src/test/resources/mng-1073/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1073/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1073 :: Sub-2</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI that fork the build do so for the entire reactor.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-1088/client/pom.xml b/core-it-suite/src/test/resources/mng-1088/client/pom.xml
index b8287de..d982f7b 100644
--- a/core-it-suite/src/test/resources/mng-1088/client/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1088/client/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1088 :: Plugin Client</name>
-  <description>
-    Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
+  <description>Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
     (i.e. an active project artifact) but the lifecycle has not been executed far enough to produce a file for
-    the plugin (i.e. a phase before "compile").
-  </description>
+    the plugin (i.e. a phase before "compile").</description>
 
   <build>
     <plugins>
@@ -44,10 +40,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>initialize</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <file>target/touch.txt</file>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml b/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
index d6f474c..09687bc 100644
--- a/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,17 +26,15 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-1088 :: Plugin</name>
-  <description>
-    Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
+  <description>Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
     (i.e. an active project artifact) but the lifecycle has not been executed far enough to produce a file for
-    the plugin (i.e. a phase before "compile").
-  </description>
+    the plugin (i.e. a phase before "compile").</description>
 
   <distributionManagement>
     <repository>
+      <uniqueVersion>false</uniqueVersion>
       <id>maven-core-it</id>
       <url>file:///${basedir}/repo</url>
-      <uniqueVersion>false</uniqueVersion>
     </repository>
   </distributionManagement>
 
diff --git a/core-it-suite/src/test/resources/mng-1088/plugin/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java b/core-it-suite/src/test/resources/mng-1088/plugin/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
index f1db14b..a2ebf93 100644
--- a/core-it-suite/src/test/resources/mng-1088/plugin/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
+++ b/core-it-suite/src/test/resources/mng-1088/plugin/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugin.coreit;
 
 /*
@@ -19,12 +37,12 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
 /**
  * Creates a text file.
  *
@@ -33,9 +51,7 @@
  *
  * @author Benjamin Bentmann
  */
-public class TouchMojo
-    extends AbstractMojo
-{
+public class TouchMojo extends AbstractMojo {
 
     /**
      * The path to the output file, relative to the project base directory.
@@ -49,20 +65,14 @@
      *
      * @throws MojoExecutionException If the output file could not be created.
      */
-    public void execute()
-        throws MojoExecutionException
-    {
-        getLog().info( "[MAVEN-CORE-IT-LOG] Creating output file: " + file );
+    public void execute() throws MojoExecutionException {
+        getLog().info("[MAVEN-CORE-IT-LOG] Creating output file: " + file);
 
-        try
-        {
+        try {
             file.getParentFile().mkdirs();
             file.createNewFile();
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Output file could not be created: " + file, e );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Output file could not be created: " + file, e);
         }
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-1088/pom.xml b/core-it-suite/src/test/resources/mng-1088/pom.xml
index f95880b..30c2456 100644
--- a/core-it-suite/src/test/resources/mng-1088/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1088/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-1088</name>
-  <description>
-    Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
+  <description>Test that the plugin manager falls back to resolution from the repository if a plugin is part of the reactor
     (i.e. an active project artifact) but the lifecycle has not been executed far enough to produce a file for
-    the plugin (i.e. a phase before "compile").
-  </description>
+    the plugin (i.e. a phase before "compile").</description>
 
   <modules>
     <module>plugin</module>
diff --git a/core-it-suite/src/test/resources/mng-1142/test-ab/pom.xml b/core-it-suite/src/test/resources/mng-1142/test-ab/pom.xml
index b61ef6e..d3d4ede 100644
--- a/core-it-suite/src/test/resources/mng-1142/test-ab/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1142/test-ab/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4913</name>
-  <description>
-    Verify that combination of two version ranges doesn't erroneously select an exclusive upper bound.
-  </description>
+  <description>Verify that combination of two version ranges doesn't erroneously select an exclusive upper bound.</description>
 
   <dependencies>
     <dependency>
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1142/test-ba/pom.xml b/core-it-suite/src/test/resources/mng-1142/test-ba/pom.xml
index d475885..fe1e6fd 100644
--- a/core-it-suite/src/test/resources/mng-1142/test-ba/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1142/test-ba/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4913</name>
-  <description>
-    Verify that combination of two version ranges doesn't erroneously select an exclusive upper bound.
-  </description>
+  <description>Verify that combination of two version ranges doesn't erroneously select an exclusive upper bound.</description>
 
   <dependencies>
     <dependency>
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1144/pom.xml b/core-it-suite/src/test/resources/mng-1144/pom.xml
index 6787122..461438c 100644
--- a/core-it-suite/src/test/resources/mng-1144/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1144/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,15 +26,11 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1144</name>
-  <description>
-    Test that multiple goals can be specified as default goal using whitespace as delimiter.
-  </description>
+  <description>Test that multiple goals can be specified as default goal using whitespace as delimiter.</description>
 
   <build>
-    <defaultGoal>
-      clean
-      process-resources
-    </defaultGoal>
+    <defaultGoal>clean
+      process-resources</defaultGoal>
     <plugins>
       <plugin>
         <artifactId>maven-clean-plugin</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-1233/pom.xml b/core-it-suite/src/test/resources/mng-1233/pom.xml
index a143bf0..8f4621c 100644
--- a/core-it-suite/src/test/resources/mng-1233/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1233/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>war</packaging>
 
   <name>Maven Integration Test :: it0083</name>
-  <description>
-    Verify that overriding a transitive compile time dependency as provided in a WAR ensures it is not included.
-  </description>
+  <description>Verify that overriding a transitive compile time dependency as provided in a WAR ensures it is not included.</description>
 
   <dependencies>
     <dependency>
@@ -60,11 +56,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1323/a/pom.xml b/core-it-suite/src/test/resources/mng-1323/a/pom.xml
index d0767bd..5b459c8 100644
--- a/core-it-suite/src/test/resources/mng-1323/a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1323/a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-1323/b/pom.xml b/core-it-suite/src/test/resources/mng-1323/b/pom.xml
index dc79be9..8983cd5 100644
--- a/core-it-suite/src/test/resources/mng-1323/b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1323/b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-1323/c/pom.xml b/core-it-suite/src/test/resources/mng-1323/c/pom.xml
index ef196d5..18f8a94 100644
--- a/core-it-suite/src/test/resources/mng-1323/c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1323/c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-1323/pom.xml b/core-it-suite/src/test/resources/mng-1323/pom.xml
index 23892c5..395d9a9 100644
--- a/core-it-suite/src/test/resources/mng-1323/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1323/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng1323</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-1323 :: Parent</name>
-  <description>
-    Verify that project-level plugin dependencies actually apply to the current project only and not the entire reactor.
-  </description>
+  <description>Verify that project-level plugin dependencies actually apply to the current project only and not the entire reactor.</description>
 
   <modules>
     <module>a</module>
@@ -47,14 +43,14 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.mng1323.ClassA,org.apache.maven.its.mng1323.ClassB</classNames>
               <pluginClassLoaderOutput>${basedir}/target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1349/pom.xml b/core-it-suite/src/test/resources/mng-1349/pom.xml
index 6fb09d1..c4abeb9 100644
--- a/core-it-suite/src/test/resources/mng-1349/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1349/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng1349</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1349</name>
-  <description>
-    Tests that different checksum formats are supported.
-  </description>
+  <description>Tests that different checksum formats are supported.</description>
 
   <!--
   Tested formats:
@@ -80,10 +76,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1412/pom.xml b/core-it-suite/src/test/resources/mng-1412/pom.xml
index ca9fd69..dd9da7d 100644
--- a/core-it-suite/src/test/resources/mng-1412/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1412/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-1412</name>
-  <description>
-    Check that dependencies are available in classpath in same order as declared in POM.
-  </description>
+  <description>Check that dependencies are available in classpath in same order as declared in POM.</description>
 
   <dependencies>
     <!-- model dependencies first, in the order given -->
@@ -50,6 +46,35 @@
     </dependency>
   </dependencies>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-dependency-resolution</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <compileArtifacts>target/compile-artifacts.txt</compileArtifacts>
+          <compileClassPath>target/compile-classpath.txt</compileClassPath>
+          <runtimeArtifacts>target/runtime-artifacts.txt</runtimeArtifacts>
+          <runtimeClassPath>target/runtime-classpath.txt</runtimeClassPath>
+          <testArtifacts>target/test-artifacts.txt</testArtifacts>
+          <testClassPath>target/test-classpath.txt</testClassPath>
+          <significantPathLevels>1</significantPathLevels>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>compile</goal>
+              <goal>runtime</goal>
+              <goal>test</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
   <profiles>
     <profile>
       <id>mng-1412</id>
@@ -72,33 +97,4 @@
       </dependencies>
     </profile>
   </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-dependency-resolution</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <configuration>
-          <compileArtifacts>target/compile-artifacts.txt</compileArtifacts>
-          <compileClassPath>target/compile-classpath.txt</compileClassPath>
-          <runtimeArtifacts>target/runtime-artifacts.txt</runtimeArtifacts>
-          <runtimeClassPath>target/runtime-classpath.txt</runtimeClassPath>
-          <testArtifacts>target/test-artifacts.txt</testArtifacts>
-          <testClassPath>target/test-classpath.txt</testClassPath>
-          <significantPathLevels>1</significantPathLevels>
-        </configuration>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>compile</goal>
-              <goal>runtime</goal>
-              <goal>test</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-1415/pom.xml b/core-it-suite/src/test/resources/mng-1415/pom.xml
index 9df32be..a582cfc 100644
--- a/core-it-suite/src/test/resources/mng-1415/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1415/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-1415</name>
-  <description>
-    Test that quoted system properties are processed correctly.
-  </description>
+  <description>Test that quoted system properties are processed correctly.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1491/child1/pom.xml b/core-it-suite/src/test/resources/mng-1491/child1/pom.xml
index e79b05f..98c1309 100644
--- a/core-it-suite/src/test/resources/mng-1491/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1491/child1/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng1491</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
 
   <artifactId>child</artifactId>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-1491/child2/pom.xml b/core-it-suite/src/test/resources/mng-1491/child2/pom.xml
index e79b05f..98c1309 100644
--- a/core-it-suite/src/test/resources/mng-1491/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1491/child2/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng1491</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
 
   <artifactId>child</artifactId>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-1491/pom.xml b/core-it-suite/src/test/resources/mng-1491/pom.xml
index 37fc7b0..5e4e832 100644
--- a/core-it-suite/src/test/resources/mng-1491/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1491/pom.xml
@@ -3,11 +3,11 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng1491</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>child1</module>
     <module>child2</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-1493/pom.xml b/core-it-suite/src/test/resources/mng-1493/pom.xml
index 1b9ab20..003c533 100644
--- a/core-it-suite/src/test/resources/mng-1493/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1493/pom.xml
@@ -1,9 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng1493</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>module/pom-unusual.xml</module>
diff --git a/core-it-suite/src/test/resources/mng-1701/pom.xml b/core-it-suite/src/test/resources/mng-1701/pom.xml
index 85334e7..f7b74cd 100644
--- a/core-it-suite/src/test/resources/mng-1701/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1701/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-1701</name>
-  <description>
-    Verify that duplicate plugin declarations cause a warning/error.
-  </description>
+  <description>Verify that duplicate plugin declarations cause a warning/error.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-1703/child/pom.xml b/core-it-suite/src/test/resources/mng-1703/child/pom.xml
index 227e2fb..e99f466 100644
--- a/core-it-suite/src/test/resources/mng-1703/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1703/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>maven-it-mng1703</artifactId>
 
   <name>Maven Integration Test :: MNG-1703</name>
-  <description>
-    Verify that a project-level plugin dependency class inherited from the parent can be loaded from both the plugin classloader
-    and the context classloader available to the plugin.
-  </description>
+  <description>Verify that a project-level plugin dependency class inherited from the parent can be loaded from both the plugin classloader
+    and the context classloader available to the plugin.</description>
 
   <build>
     <plugins>
@@ -44,6 +40,9 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.mng1703.MNG1703,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
@@ -51,9 +50,6 @@
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1703/pom.xml b/core-it-suite/src/test/resources/mng-1703/pom.xml
index 8d743f8..c99f956 100644
--- a/core-it-suite/src/test/resources/mng-1703/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1703/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-1703</name>
-  <description>
-    Verify that a project-level plugin dependency class inherited from the parent can be loaded from both the plugin classloader
-    and the context classloader available to the plugin.
-  </description>
+  <description>Verify that a project-level plugin dependency class inherited from the parent can be loaded from both the plugin classloader
+    and the context classloader available to the plugin.</description>
 
   <modules>
     <module>child</module>
diff --git a/core-it-suite/src/test/resources/mng-1751/dep/pom.xml b/core-it-suite/src/test/resources/mng-1751/dep/pom.xml
index 4575efe..57e0ba5 100644
--- a/core-it-suite/src/test/resources/mng-1751/dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1751/dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1751 :: Dependency</name>
-  <description>
-    Verify that deployment always updates the metadata even if its remote timestamp currently refers to
-    the future.
-  </description>
+  <description>Verify that deployment always updates the metadata even if its remote timestamp currently refers to
+    the future.</description>
 
   <distributionManagement>
     <repository>
@@ -52,13 +48,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1751/test/pom.xml b/core-it-suite/src/test/resources/mng-1751/test/pom.xml
index 062836e..7d8bcbd 100644
--- a/core-it-suite/src/test/resources/mng-1751/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1751/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1751</name>
-  <description>
-    Verify that deployment always updates the metadata even if its remote timestamp currently refers to
-    the future.
-  </description>
+  <description>Verify that deployment always updates the metadata even if its remote timestamp currently refers to
+    the future.</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1803/pom.xml b/core-it-suite/src/test/resources/mng-1803/pom.xml
index c411b05..d0eb5f3 100644
--- a/core-it-suite/src/test/resources/mng-1803/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1803/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1803</name>
-  <description>
-    Verify that POM errors indicate the line and column number in the input file.
-  </description>
+  <description>Verify that POM errors indicate the line and column number in the input file.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-1895/direct-vs-indirect/pom.xml b/core-it-suite/src/test/resources/mng-1895/direct-vs-indirect/pom.xml
index e49c03d..9802fe0 100644
--- a/core-it-suite/src/test/resources/mng-1895/direct-vs-indirect/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1895/direct-vs-indirect/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-1895</name>
-  <description>
-    Verify that for a dependency being referenced in two different scopes, the scope given directly in the POM
-    always wins, even if weaker than the scope of the transitive dependency.
-  </description>
+  <description>Verify that for a dependency being referenced in two different scopes, the scope given directly in the POM
+    always wins, even if weaker than the scope of the transitive dependency.</description>
 
   <dependencies>
     <!--
@@ -85,12 +81,12 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-1957/pom.xml b/core-it-suite/src/test/resources/mng-1957/pom.xml
index aea53b5..9773fda 100644
--- a/core-it-suite/src/test/resources/mng-1957/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1957/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-1957</name>
-  <description>
-    Test that JDK profile activation allows version ranges.
-  </description>
+  <description>Test that JDK profile activation allows version ranges.</description>
 
   <build>
     <plugins>
@@ -39,10 +35,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/jdk.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-1992/pom.xml b/core-it-suite/src/test/resources/mng-1992/pom.xml
index 266e48c..3296788 100644
--- a/core-it-suite/src/test/resources/mng-1992/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1992/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,9 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-1992</name>
-  <description>
-    Test that system/execution properties take precedence over the POM's properties section when configuring a
+  <description>Test that system/execution properties take precedence over the POM's properties section when configuring a
     plugin parameter that is annotated with @parameter expression="prop". Note that this issue is not about POM
-    interpolation but rather plugin parameter expression evaluation.
-  </description>
+    interpolation but rather plugin parameter expression evaluation.</description>
 
   <properties>
     <config.stringParam>FAILED</config.stringParam>
@@ -45,10 +41,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-1995/pom.xml b/core-it-suite/src/test/resources/mng-1995/pom.xml
index 992eac1..9155835 100644
--- a/core-it-suite/src/test/resources/mng-1995/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1995/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-1995</name>
-  <description>
-    Verify that POM fields that are of type boolean can be interpolated with expressions.
-  </description>
+  <description>Verify that POM fields that are of type boolean can be interpolated with expressions.</description>
 
   <properties>
     <filter.resources>true</filter.resources>
@@ -38,21 +34,21 @@
 
   <repositories>
     <repository>
-      <id>maven-core-it</id>
-      <url>file:///${basedir}/repo</url>
       <releases>
         <!-- That's the boolean POM field we would like to interpolate -->
         <enabled>${releasesEnabled}</enabled>
       </releases>
+      <id>maven-core-it</id>
+      <url>file:///${basedir}/repo</url>
     </repository>
   </repositories>
 
   <build>
     <resources>
       <resource>
-        <directory>src/main/resources</directory>
         <!-- That's the boolean POM field we would like to interpolate -->
         <filtering>${filter.resources}</filtering>
+        <directory>src/main/resources</directory>
       </resource>
     </resources>
     <plugins>
@@ -70,10 +66,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2006/child/pom.xml b/core-it-suite/src/test/resources/mng-2006/child/pom.xml
index 1f377df..47edfc3 100644
--- a/core-it-suite/src/test/resources/mng-2006/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2006/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
 
   <artifactId>child</artifactId>
   <name>Child Project</name>
-  <description>
-    Test that inheritance of those URLs which automatically append the child's artifact id take the child's
-    relative location to the parent into account.
-  </description>
+  <description>Test that inheritance of those URLs which automatically append the child's artifact id take the child's
+    relative location to the parent into account.</description>
 
   <build>
     <plugins>
@@ -44,10 +40,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-2006/parent/pom.xml b/core-it-suite/src/test/resources/mng-2006/parent/pom.xml
index f8b069f..3d59d68 100644
--- a/core-it-suite/src/test/resources/mng-2006/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2006/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,26 +26,24 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2006</name>
-  <description>
-    Test that inheritance of those URLs which automatically append the child's artifact id take the child's
-    relative location to the parent into account.
-  </description>
+  <description>Test that inheritance of those URLs which automatically append the child's artifact id take the child's
+    relative location to the parent into account.</description>
+
+  <url>http://project.url/parent</url>
 
   <modules>
     <module>../child</module>
   </modules>
 
-  <url>http://project.url/parent</url>
-
   <scm>
-    <url>http://viewvc.project.url/parent</url>
     <connection>http://scm.project.url/parent</connection>
     <developerConnection>https://scm.project.url/parent</developerConnection>
+    <url>http://viewvc.project.url/parent</url>
   </scm>
   <distributionManagement>
     <site>
-      <url>http://site.project.url/parent</url>
       <id>parent.site</id>
+      <url>http://site.project.url/parent</url>
     </site>
   </distributionManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2045/pom.xml b/core-it-suite/src/test/resources/mng-2045/pom.xml
index 497327a..ac37f2f 100644
--- a/core-it-suite/src/test/resources/mng-2045/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2045/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2045</name>
-  <description>
-    Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
-    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.
-  </description>
+  <description>Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
+    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.</description>
 
   <modules>
     <module>test-jar</module>
diff --git a/core-it-suite/src/test/resources/mng-2045/test-jar/pom.xml b/core-it-suite/src/test/resources/mng-2045/test-jar/pom.xml
index 59a222d..3cef945 100644
--- a/core-it-suite/src/test/resources/mng-2045/test-jar/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2045/test-jar/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +31,10 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2045 :: Test JAR Producer</name>
-  <description>
-    Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
-    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.
-  </description>
+  <description>Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
+    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.</description>
 
   <build>
-    <outputDirectory>main</outputDirectory>
-    <testOutputDirectory>test</testOutputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -49,6 +43,12 @@
         <executions>
           <execution>
             <id>install</id>
+            <goals>
+              <goal>set</goal>
+              <goal>attach-pom</goal>
+              <goal>attach</goal>
+              <goal>install</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>main.jar</mainFile>
@@ -56,15 +56,11 @@
               <artifactType>test-jar</artifactType>
               <artifactClassifier>tests</artifactClassifier>
             </configuration>
-            <goals>
-              <goal>set</goal>
-              <goal>attach-pom</goal>
-              <goal>attach</goal>
-              <goal>install</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>main</outputDirectory>
+    <testOutputDirectory>test</testOutputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2045/test-user/pom.xml b/core-it-suite/src/test/resources/mng-2045/test-user/pom.xml
index f4cd493..109aae5 100644
--- a/core-it-suite/src/test/resources/mng-2045/test-user/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2045/test-user/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2045 :: Test JAR Consumer</name>
-  <description>
-    Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
-    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.
-  </description>
+  <description>Verify that during a multi-module build up to phase "install" the (compile) class path of a module that
+    depends on another module's test JAR actually points to the test classes/JAR and not the main classes.</description>
 
   <dependencies>
     <dependency>
@@ -57,6 +53,11 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>runtime</goal>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
@@ -64,11 +65,6 @@
               <testClassPath>target/test.txt</testClassPath>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-              <goal>runtime</goal>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2052/pom.xml b/core-it-suite/src/test/resources/mng-2052/pom.xml
index c9efd08..bda3e4a 100644
--- a/core-it-suite/src/test/resources/mng-2052/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2052/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2052</name>
-  <description>
-    Test that properties defined in an active profile in the user's
-    settings are available for interpolation of systemPath in a dependency.
-  </description>
+  <description>Test that properties defined in an active profile in the user's
+    settings are available for interpolation of systemPath in a dependency.</description>
 
   <dependencies>
     <dependency>
@@ -50,10 +46,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2054/pom.xml b/core-it-suite/src/test/resources/mng-2054/pom.xml
index 06687ef..515c61c 100644
--- a/core-it-suite/src/test/resources/mng-2054/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2054/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2054</name>
-  <description>
-    Test that plugin executions from &gt;1 step of inheritance don't run multiple times.
-  </description>
+  <description>Test that plugin executions from &gt;1 step of inheritance don't run multiple times.</description>
 
   <modules>
     <module>project</module>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2054/project/pom.xml b/core-it-suite/src/test/resources/mng-2054/project/pom.xml
index 642fa71..8033fcb 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2054/project/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2054/project/project-level2/pom.xml b/core-it-suite/src/test/resources/mng-2054/project/project-level2/pom.xml
index d009cbd..be05ad2 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/project-level2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2054/project/project-level2/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/pom.xml b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/pom.xml
index 530d891..ed2dbf9 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/pom.xml b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/pom.xml
index 3db7bdc..c99233c 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/main/java/com/stchome/mavenTest/App.java b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/main/java/com/stchome/mavenTest/App.java
index 3d3f7bf..24d458d 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/main/java/com/stchome/mavenTest/App.java
+++ b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/main/java/com/stchome/mavenTest/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package com.stchome.mavenTest.it0096;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/test/java/com/stchome/mavenTest/AppTest.java b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/test/java/com/stchome/mavenTest/AppTest.java
index 1c8ac99..f870d71 100644
--- a/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/test/java/com/stchome/mavenTest/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-2054/project/project-level2/project-level3/project-jar/src/test/java/com/stchome/mavenTest/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package com.stchome.mavenTest.it0096;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-2068/test-1/parent/child/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-1/parent/child/pom.xml
index d9b7070..fa99911 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-1/parent/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-1/parent/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2068/test-1/parent/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-1/parent/pom.xml
index 36a9b25..414ef0f 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-1/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-1/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2068/test-1/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-1/pom.xml
index 365b359..2673b2f 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2068/test-2/parent/child/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-2/parent/child/pom.xml
index 37dad3e..b4c9571 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-2/parent/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-2/parent/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2068/test-2/parent/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-2/parent/pom.xml
index b6611ee..e77217e 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-2/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-2/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -39,4 +37,4 @@
   <modules>
     <module>child</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-2/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-2/pom.xml
index f7832c3..78ecf1c 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/pom.xml
index abbd16a..536f36f 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,9 +8,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2068</name>
-  <description>
-    Test that the implied relative path for the parent POM works, even two levels deep.
-  </description>
+  <description>Test that the implied relative path for the parent POM works, even two levels deep.</description>
 
   <modules>
     <module>project/project-level2/project-level3</module>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/pom.xml
index f380b96..73d204e 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2068</groupId>
-  <version>1</version>
   <artifactId>project</artifactId>
+  <version>1</version>
   <packaging>pom</packaging>
 
   <modules>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/pom.xml
index 42d1cfe..b67a901 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/project-level3/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/project-level3/pom.xml
index d00ab8c..c723013 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/project-level3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-level2/project-level3/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-sibling-level2/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-sibling-level2/pom.xml
index 433042f..7bd3204 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/project-sibling-level2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/project-sibling-level2/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/pom.xml
index 2c8d7ac..ab11d9a 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/relative-project-level3/pom.xml b/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/relative-project-level3/pom.xml
index 06a66d6..9705004 100644
--- a/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/relative-project-level3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2068/test-3/project/relative-project-level2/relative-project-level3/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2098/pom.xml b/core-it-suite/src/test/resources/mng-2098/pom.xml
index 186f95e..68ea7df 100644
--- a/core-it-suite/src/test/resources/mng-2098/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2098/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,12 +25,10 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2098</name>
-  <description>
-    Test that the selected version from a version range can be successfully resolved even if the repository
+  <description>Test that the selected version from a version range can be successfully resolved even if the repository
     with the newest metadata does not provide the selected version. In particular, the repository with the
     newest metadata must not be the only repository used during artifact resolution, all repositories must
-    be considered.
-  </description>
+    be considered.</description>
 
   <dependencies>
     <dependency>
@@ -51,10 +47,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2103/child-1/pom.xml b/core-it-suite/src/test/resources/mng-2103/child-1/pom.xml
index 2d672a5..ff12b89 100644
--- a/core-it-suite/src/test/resources/mng-2103/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2103/child-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2103 :: Child-1</name>
-  <description>
-    Verify that the plugin-level inherited flag can be overridden by the execution-level flag.
-  </description>
+  <description>Verify that the plugin-level inherited flag can be overridden by the execution-level flag.</description>
 
   <!-- NOTE: This module does not mention the build plugin with the inherited execution -->
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2103/child-2/pom.xml b/core-it-suite/src/test/resources/mng-2103/child-2/pom.xml
index e16c379..5aa0423 100644
--- a/core-it-suite/src/test/resources/mng-2103/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2103/child-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2103 :: Child-2</name>
-  <description>
-    Verify that the plugin-level inherited flag can be overridden by the execution-level flag.
-  </description>
+  <description>Verify that the plugin-level inherited flag can be overridden by the execution-level flag.</description>
 
   <!-- NOTE: This module mentions the build plugin with the inherited execution -->
   <build>
diff --git a/core-it-suite/src/test/resources/mng-2103/pom.xml b/core-it-suite/src/test/resources/mng-2103/pom.xml
index 396a9e9..2876b81 100644
--- a/core-it-suite/src/test/resources/mng-2103/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2103/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2103 :: Parent</name>
-  <description>
-    Verify that the plugin-level inherited flag can be overridden by the execution-level flag.
-  </description>
+  <description>Verify that the plugin-level inherited flag can be overridden by the execution-level flag.</description>
 
   <modules>
     <module>child-1</module>
@@ -48,12 +44,12 @@
         <executions>
           <execution>
             <id>inherited</id>
-            <!-- this should override the plugin-level setting -->
-            <inherited>true</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
+            <!-- this should override the plugin-level setting -->
+            <inherited>true</inherited>
             <configuration>
               <logFile>target/log.txt</logFile>
               <string>inherited</string>
@@ -61,11 +57,11 @@
           </execution>
           <execution>
             <id>not-inherited</id>
-            <!-- should use plugin-level setting, i.e. inherited=false -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- should use plugin-level setting, i.e. inherited=false -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/log.txt</logFile>
               <string>not-inherited</string>
diff --git a/core-it-suite/src/test/resources/mng-2123/pom.xml b/core-it-suite/src/test/resources/mng-2123/pom.xml
index cbd0559..90ab8cd 100644
--- a/core-it-suite/src/test/resources/mng-2123/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2123/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2123</name>
-  <description>
-    Verify that conflicts between a soft version and a version range are properly resolved.
-  </description>
+  <description>Verify that conflicts between a soft version and a version range are properly resolved.</description>
 
   <dependencies>
     <!--
@@ -60,13 +56,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/artifacts.txt</compileArtifacts>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2124/parent/child/pom.xml b/core-it-suite/src/test/resources/mng-2124/parent/child/pom.xml
index 7632168..67426fb 100644
--- a/core-it-suite/src/test/resources/mng-2124/parent/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2124/parent/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-     <artifactId>parent</artifactId>
-     <groupId>org.apache.maven.its.it0100</groupId>
-     <version>1.0</version>
+    <groupId>org.apache.maven.its.it0100</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
   </parent>
 
   <artifactId>child</artifactId>
@@ -42,10 +40,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/${project.parent.artifactId}.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-2124/parent/pom.xml b/core-it-suite/src/test/resources/mng-2124/parent/pom.xml
index f9ef88d..b7176db 100644
--- a/core-it-suite/src/test/resources/mng-2124/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2124/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2124/pom.xml b/core-it-suite/src/test/resources/mng-2124/pom.xml
index 08d0815..483866b 100644
--- a/core-it-suite/src/test/resources/mng-2124/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2124/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2130/child/pom.xml b/core-it-suite/src/test/resources/mng-2130/child/pom.xml
index 1e258cd..99a5f9a 100644
--- a/core-it-suite/src/test/resources/mng-2130/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2130/child/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2130/pom.xml b/core-it-suite/src/test/resources/mng-2130/pom.xml
index 0976e90..3c3e472 100644
--- a/core-it-suite/src/test/resources/mng-2130/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2130/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,10 +8,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2130</name>
-  <description>
-    Test that parent-POMs cached during a build are available as parents
-    to other POMs in the multi-module build.
-  </description>
+  <description>Test that parent-POMs cached during a build are available as parents
+    to other POMs in the multi-module build.</description>
 
   <modules>
     <module>child</module>
diff --git a/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml b/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
index f1c3e47..b61457d 100644
--- a/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-2135 :: Plugin</name>
-  <description>
-    Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.
-  </description>
+  <description>Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.</description>
 
   <properties>
     <maven.test.skip>true</maven.test.skip>
diff --git a/core-it-suite/src/test/resources/mng-2135/plugin/src/main/java/coreit/ItMojo.java b/core-it-suite/src/test/resources/mng-2135/plugin/src/main/java/coreit/ItMojo.java
index 96de5ca..07093cd 100644
--- a/core-it-suite/src/test/resources/mng-2135/plugin/src/main/java/coreit/ItMojo.java
+++ b/core-it-suite/src/test/resources/mng-2135/plugin/src/main/java/coreit/ItMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package coreit;
 
 /*
@@ -26,27 +44,19 @@
 /**
  * @goal it
  */
-public class ItMojo
-    extends AbstractMojo
-{
+public class ItMojo extends AbstractMojo {
 
     /**
      * @parameter default-value="${project.build.directory}/touch.txt"
      */
     private File outputFile;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        try
-        {
+    public void execute() throws MojoExecutionException {
+        try {
             outputFile.getParentFile().mkdirs();
             outputFile.createNewFile();
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to create touch file: " + e.getMessage(), e );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to create touch file: " + e.getMessage(), e);
         }
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-2135/pom.xml b/core-it-suite/src/test/resources/mng-2135/pom.xml
index 8d02044..29537f3 100644
--- a/core-it-suite/src/test/resources/mng-2135/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2135/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2135</name>
-  <description>
-    Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.
-  </description>
+  <description>Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.</description>
 
   <modules>
     <!-- NOTE: Deliberately ordered in reverse build order to check project sorting by Maven -->
diff --git a/core-it-suite/src/test/resources/mng-2135/project/pom.xml b/core-it-suite/src/test/resources/mng-2135/project/pom.xml
index 96a5d98..7c4bac3 100644
--- a/core-it-suite/src/test/resources/mng-2135/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2135/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2135 :: Project</name>
-  <description>
-    Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.
-  </description>
+  <description>Test that the reactor can handle builds where one module provides a Maven plugin that another module uses.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>it</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2136/pom.xml b/core-it-suite/src/test/resources/mng-2136/pom.xml
index 9f2d7d4..dedcd31 100644
--- a/core-it-suite/src/test/resources/mng-2136/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2136/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: it0102</name>
-  <description>
-    Test that &lt;activeByDefault/&gt; calculations for profile activation only
-    use profiles defined in the POM. [MNG-2136]
-  </description>
+  <description>Test that &lt;activeByDefault/&gt; calculations for profile activation only
+    use profiles defined in the POM. [MNG-2136]</description>
 
   <profiles>
     <profile>
@@ -47,7 +43,9 @@
     <profile>
       <id>testInternal2</id>
       <activation>
-        <property><name>user.name</name></property>
+        <property>
+          <name>user.name</name>
+        </property>
       </activation>
       <properties>
         <testOutput>Success</testOutput>
diff --git a/core-it-suite/src/test/resources/mng-2140/dependency/pom.xml b/core-it-suite/src/test/resources/mng-2140/dependency/pom.xml
index 02db557..8354929 100644
--- a/core-it-suite/src/test/resources/mng-2140/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2140/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2140</name>
-  <description>
-    Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.
-  </description>
+  <description>Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
           <execution>
             <!-- NOTE: Mimic "package" phase only, i.e. don't install, we want to check reactor resolution -->
             <id>set-main-file</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2140/pom.xml b/core-it-suite/src/test/resources/mng-2140/pom.xml
index 2084735..8b44922 100644
--- a/core-it-suite/src/test/resources/mng-2140/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2140/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2140</name>
-  <description>
-    Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.
-  </description>
+  <description>Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.</description>
 
   <modules>
     <module>dependency</module>
diff --git a/core-it-suite/src/test/resources/mng-2140/project/pom.xml b/core-it-suite/src/test/resources/mng-2140/project/pom.xml
index 7a632c1..d87b673 100644
--- a/core-it-suite/src/test/resources/mng-2140/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2140/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2140</name>
-  <description>
-    Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.
-  </description>
+  <description>Test that mojos in a forked lifecycle can also resolve dependencies from the reactor.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>fork</id>
-            <phase>validate</phase>
             <goals>
               <goal>fork-test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2174/pom.xml b/core-it-suite/src/test/resources/mng-2174/pom.xml
index e283bb0..6ed65df 100644
--- a/core-it-suite/src/test/resources/mng-2174/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2174/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2174</name>
-  <description>
-    Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the
-    parent's main plugin management section is also present.
-  </description>
+  <description>Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the
+    parent's main plugin management section is also present.</description>
 
   <modules>
     <module>sub</module>
diff --git a/core-it-suite/src/test/resources/mng-2174/sub/pom.xml b/core-it-suite/src/test/resources/mng-2174/sub/pom.xml
index 3614e30..6a18aea 100644
--- a/core-it-suite/src/test/resources/mng-2174/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2174/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2174</name>
-  <description>
-    Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the
-    parent's main plugin management section is also present.
-  </description>
+  <description>Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the
+    parent's main plugin management section is also present.</description>
 
   <build>
     <plugins>
@@ -46,14 +42,14 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <resourcePaths>mng-2174.properties</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2196/level1/level2/level3/pom.xml b/core-it-suite/src/test/resources/mng-2196/level1/level2/level3/pom.xml
index a5ccc48..03bb4c4 100644
--- a/core-it-suite/src/test/resources/mng-2196/level1/level2/level3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2196/level1/level2/level3/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2196/level1/level2/pom.xml b/core-it-suite/src/test/resources/mng-2196/level1/level2/pom.xml
index b2c11bb..6362eea 100644
--- a/core-it-suite/src/test/resources/mng-2196/level1/level2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2196/level1/level2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2196/level1/pom.xml b/core-it-suite/src/test/resources/mng-2196/level1/pom.xml
index 56a8ee9..5271b9f 100644
--- a/core-it-suite/src/test/resources/mng-2196/level1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2196/level1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2196/pom.xml b/core-it-suite/src/test/resources/mng-2196/pom.xml
index 22b4684..2e86bcd 100644
--- a/core-it-suite/src/test/resources/mng-2196/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2196/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,11 +8,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2196</name>
-  <description>
-    Verify that multi-module builds where one project references another as
+  <description>Verify that multi-module builds where one project references another as
     a parent can build, even if that parent is not correctly referenced by
-    &lt;relativePath/&gt; and is not in the local repository.
-  </description>
+    &lt;relativePath/&gt; and is not in the local repository.</description>
 
   <modules>
     <module>level1</module>
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
index 39a2210..315ad00 100644
--- a/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng2199</groupId>
     <artifactId>local-parent</artifactId>
     <version>[1,2]</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>expression</artifactId>
   <!-- Must not use expressions, when using version ranges. -->
   <version>${project.parent.version}</version>
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
index 9d54edd..aec30af 100644
--- a/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng2199</groupId>
     <artifactId>local-parent</artifactId>
     <version>[1,2]</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>inherited</artifactId>
   <!-- Must not inherit version, when using version ranges. -->
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
index d9498d5..c3e4085 100644
--- a/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng2199</groupId>
     <artifactId>local-parent</artifactId>
     <!-- Not available anywhere. Not on disk, not in repository. -->
     <version>[2,3]</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>invalid</artifactId>
   <version>1</version>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
index e61f908..5a33313 100644
--- a/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng2199</groupId>
     <artifactId>local-parent</artifactId>
     <version>[1,2]</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>valid</artifactId>
   <version>3.4.5</version>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2201/pom.xml b/core-it-suite/src/test/resources/mng-2201/pom.xml
index 4cd0167..ccaa635 100644
--- a/core-it-suite/src/test/resources/mng-2201/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2201/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,14 +26,12 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it0104</name>
-  <description>
-    Verify that plugin configurations are interpolated correctly.
-  </description>
+  <description>Verify that plugin configurations are interpolated correctly.</description>
+  <url>http://maven.apache.org</url>
 
   <organization>
     <name>Apache</name>
   </organization>
-  <url>http://maven.apache.org</url>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-2222/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-2222/mod-a/pom.xml
index 08d3a46..f508d52 100644
--- a/core-it-suite/src/test/resources/mng-2222/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2222/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,9 +30,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-2222 :: Module A</name>
-  <description>
-    Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
+  <description>Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
     exist (e.g. due to non-existing sources). This ensures consistent build results for "mvn compile" and
-    "mvn package".
-  </description>
+    "mvn package".</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2222/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-2222/mod-b/pom.xml
index 05c66f8..4441058 100644
--- a/core-it-suite/src/test/resources/mng-2222/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2222/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,11 +30,9 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-2222 :: Module B</name>
-  <description>
-    Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
+  <description>Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
     exist (e.g. due to non-existing sources). This ensures consistent build results for "mvn compile" and
-    "mvn package".
-  </description>
+    "mvn package".</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
               <significantPathLevels>3</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-2222/pom.xml b/core-it-suite/src/test/resources/mng-2222/pom.xml
index 2f54d0e..3cc4a17 100644
--- a/core-it-suite/src/test/resources/mng-2222/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2222/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2222</name>
-  <description>
-    Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
+  <description>Test that dependencies on reactor projects can be satisfied by their output directories even if those do not
     exist (e.g. due to non-existing sources). This ensures consistent build results for "mvn compile" and
-    "mvn package".
-  </description>
+    "mvn package".</description>
 
   <modules>
     <module>mod-a</module>
diff --git a/core-it-suite/src/test/resources/mng-2228/pom.xml b/core-it-suite/src/test/resources/mng-2228/pom.xml
index 724f7ea..2d27ce2 100644
--- a/core-it-suite/src/test/resources/mng-2228/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2228/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,38 +25,15 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2228</name>
-  <description>
-    Verify that components injected into plugins are actually assignment-compatible with the corresponding mojo
-    fields in case the field type is both provided by a plugin dependency and by a build extension.
-  </description>
+  <description>Verify that components injected into plugins are actually assignment-compatible with the corresponding mojo
+    fields in case the field type is both provided by a plugin dependency and by a build extension.</description>
 
   <build>
-    <extensions>
-      <!-- load component api and implementation into core/extension realm -->
-      <extension>
-        <groupId>org.apache.maven.its.mng2228</groupId>
-        <artifactId>component</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>api</id>
-            <phase>validate</phase>
-            <configuration>
-              <className>org.apache.maven.its.mng2228.Component</className>
-              <instanceofPropertiesFile>target/api.properties</instanceofPropertiesFile>
-            </configuration>
-            <goals>
-              <goal>instanceof</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <!-- load component api and implementation into plugin realm -->
           <dependency>
@@ -72,7 +47,28 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>api</id>
+            <goals>
+              <goal>instanceof</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <className>org.apache.maven.its.mng2228.Component</className>
+              <instanceofPropertiesFile>target/api.properties</instanceofPropertiesFile>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <!-- load component api and implementation into core/extension realm -->
+      <extension>
+        <groupId>org.apache.maven.its.mng2228</groupId>
+        <artifactId>component</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2234/pom.xml b/core-it-suite/src/test/resources/mng-2234/pom.xml
index b6c5b32..b75e199 100644
--- a/core-it-suite/src/test/resources/mng-2234/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2234/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -6,10 +7,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2234</name>
-  <description>
-    Verify that the activeProfile section from the settings.xml can also activate profiles specified in the POM,
-    i.e. outside of the settings.xml.
-  </description>
+  <description>Verify that the activeProfile section from the settings.xml can also activate profiles specified in the POM,
+    i.e. outside of the settings.xml.</description>
 
   <profiles>
     <profile>
@@ -23,10 +22,10 @@
             <executions>
               <execution>
                 <id>test</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
               </execution>
             </executions>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2254/pom.xml b/core-it-suite/src/test/resources/mng-2254/pom.xml
index 9740c1f..6c85992 100644
--- a/core-it-suite/src/test/resources/mng-2254/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2254/pom.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="US-ASCII"?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2254</name>
-  <description>
-    Verify that the encoding declaration of the POM is respected.
-  </description>
+  <description>Verify that the encoding declaration of the POM is respected.</description>
 
   <modules>
     <module>utf-8</module>
@@ -46,6 +42,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -53,9 +52,6 @@
               </expressions>
               <outputFile>target/pom.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2254/utf-8/pom.xml b/core-it-suite/src/test/resources/mng-2254/utf-8/pom.xml
index 580a4d0..b5ffe62 100644
--- a/core-it-suite/src/test/resources/mng-2254/utf-8/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2254/utf-8/pom.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0"?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,11 +17,9 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <!--
 NOTE: This POM's XML declaration specified no encoding which should therefore default to UTF-8.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2276/pom.xml b/core-it-suite/src/test/resources/mng-2276/pom.xml
index fd8c5d8..469c4cc 100644
--- a/core-it-suite/src/test/resources/mng-2276/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2276/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2276</name>
-  <description>
-    Test that profiles in the POM can be activated by properties declared in active profiles from the settings.
-  </description>
+  <description>Test that profiles in the POM can be activated by properties declared in active profiles from the settings.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-2277/assembly/pom.xml b/core-it-suite/src/test/resources/mng-2277/assembly/pom.xml
index 3e95760..350d5db 100644
--- a/core-it-suite/src/test/resources/mng-2277/assembly/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2277/assembly/pom.xml
@@ -1,12 +1,12 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng2277</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
-  <name>assembly</name>
   <artifactId>assembly</artifactId>
   <version>1.0</version>
+  <name>assembly</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2277/pom.xml b/core-it-suite/src/test/resources/mng-2277/pom.xml
index 97b0941..13bb18f 100644
--- a/core-it-suite/src/test/resources/mng-2277/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2277/pom.xml
@@ -1,11 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2277</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
   <name>MNG-2277</name>
 
+  <modules>
+    <module>assembly</module>
+    <module>test</module>
+  </modules>
+
   <build>
     <pluginManagement>
       <plugins>
@@ -17,9 +23,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-  <modules>
-    <module>assembly</module>
-    <module>test</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2277/test/pom.xml b/core-it-suite/src/test/resources/mng-2277/test/pom.xml
index acd413a..5966404 100644
--- a/core-it-suite/src/test/resources/mng-2277/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2277/test/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
@@ -8,10 +9,10 @@
   <artifactId>test</artifactId>
   <name>Test</name>
   <dependencies>
-      <dependency>
-        <groupId>org.apache.maven.its.mng2277</groupId>
-        <artifactId>assembly</artifactId>
-        <version>1.0</version>
-      </dependency>
-    </dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng2277</groupId>
+      <artifactId>assembly</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2289/issue/pom.xml b/core-it-suite/src/test/resources/mng-2289/issue/pom.xml
index 837a1f5..223e73a 100644
--- a/core-it-suite/src/test/resources/mng-2289/issue/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2289/issue/pom.xml
@@ -1,26 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <parent>
-        <groupId>org.codehaus.jira.mng.2289</groupId>
-        <artifactId>parent</artifactId>
-        <version>SNAPSHOT</version>
-    </parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>mng-issue-2289</artifactId>
-    <packaging>jar</packaging>
-    <name>Issue 2289</name>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.codehaus.jira.mng.2289</groupId>
+    <artifactId>parent</artifactId>
     <version>SNAPSHOT</version>
-    <description><![CDATA[Demonstration of issue 2289.]]></description>
+  </parent>
+  <artifactId>mng-issue-2289</artifactId>
+  <version>SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>Issue 2289</name>
+  <description><![CDATA[Demonstration of issue 2289.]]></description>
 
-    <dependencies>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2289/issue/src/main/java/mng/Issue2289.java b/core-it-suite/src/test/resources/mng-2289/issue/src/main/java/mng/Issue2289.java
index 1073f80..5c7d373 100644
--- a/core-it-suite/src/test/resources/mng-2289/issue/src/main/java/mng/Issue2289.java
+++ b/core-it-suite/src/test/resources/mng-2289/issue/src/main/java/mng/Issue2289.java
@@ -1,11 +1,27 @@
+/*
+ * 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.
+ */
 package mng;
 
 import junit.framework.TestCase;
 
-public class Issue2289
-{
-    public static void main(final String[] args)
-    {
+public class Issue2289 {
+    public static void main(final String[] args) {
         TestCase tc = new TestCase("Dummy") {};
         System.exit(tc == null ? -1 : 0);
     }
diff --git a/core-it-suite/src/test/resources/mng-2305/pom.xml b/core-it-suite/src/test/resources/mng-2305/pom.xml
index df08b22..2fc53c9 100644
--- a/core-it-suite/src/test/resources/mng-2305/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2305/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2305</name>
-  <description>
-    Verify that proxies can be setup for multiple protocols, in this case HTTP and HTTPS. As a nice side effect,
-    this checks HTTPS tunneling over a web proxy.
-  </description>
-
+  <description>Verify that proxies can be setup for multiple protocols, in this case HTTP and HTTPS. As a nice side effect,
+    this checks HTTPS tunneling over a web proxy.</description>
 
   <dependencies>
     <dependency>
@@ -59,10 +54,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2309/pom.xml b/core-it-suite/src/test/resources/mng-2309/pom.xml
index 63ad804..0214a73 100644
--- a/core-it-suite/src/test/resources/mng-2309/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2309/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,31 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2309</name>
-  <description>
-    Test that profiles are injected in declaration order, with the last profile being the most dominant.
-  </description>
+  <description>Test that profiles are injected in declaration order, with the last profile being the most dominant.</description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <outputFile>target/pom.properties</outputFile>
+              <expressions>
+                <expression>project/properties</expression>
+              </expressions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
   <profiles>
     <!-- NOTE: Using intentionally more than two profiles to prevent random test success -->
@@ -65,28 +85,4 @@
       </properties>
     </profile>
   </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-expression</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-            <configuration>
-              <outputFile>target/pom.properties</outputFile>
-              <expressions>
-                <expression>project/properties</expression>
-              </expressions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2318/A/pom.xml b/core-it-suite/src/test/resources/mng-2318/A/pom.xml
index bdca5dd..40c5a63 100644
--- a/core-it-suite/src/test/resources/mng-2318/A/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2318/A/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   ~ Copyright 2006 The Apache Software Foundation.
   ~
@@ -15,9 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2318</groupId>
   <artifactId>A</artifactId>
@@ -25,4 +22,3 @@
   <packaging>pom</packaging>
   <name>A</name>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-2318/C/pom.xml b/core-it-suite/src/test/resources/mng-2318/C/pom.xml
index 3f1a04b..559b2fc 100644
--- a/core-it-suite/src/test/resources/mng-2318/C/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2318/C/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   ~ Copyright 2006 The Apache Software Foundation.
   ~
@@ -15,9 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2318/pom.xml b/core-it-suite/src/test/resources/mng-2318/pom.xml
index 9c30441..d64f4a1 100644
--- a/core-it-suite/src/test/resources/mng-2318/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2318/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   ~ Copyright 2006 The Apache Software Foundation.
   ~
@@ -15,9 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -28,12 +25,11 @@
   </parent>
 
   <artifactId>B</artifactId>
-  <description>When a project has modules and its parent is not preinstalled [MNG-2318]</description>
   <packaging>pom</packaging>
   <name>B</name>
+  <description>When a project has modules and its parent is not preinstalled [MNG-2318]</description>
 
   <modules>
     <module>C</module>
   </modules>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-2339/a/pom.xml b/core-it-suite/src/test/resources/mng-2339/a/pom.xml
index 14ede1b..514f345 100644
--- a/core-it-suite/src/test/resources/mng-2339/a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2339/a/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2339</groupId>
diff --git a/core-it-suite/src/test/resources/mng-2339/b/pom.xml b/core-it-suite/src/test/resources/mng-2339/b/pom.xml
index 27c0878..45fc36b 100644
--- a/core-it-suite/src/test/resources/mng-2339/b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2339/b/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2339</groupId>
   <artifactId>interpolation-of-cliProps</artifactId>
@@ -17,10 +17,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>initialize</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2362/pom.xml b/core-it-suite/src/test/resources/mng-2362/pom.xml
index 4bf0910..5c4bebe 100644
--- a/core-it-suite/src/test/resources/mng-2362/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2362/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2362</name>
-  <description>
-    Verify that installed/deployed POMs retain their original file encoding and don't get messed up by some
-    transformation that erroneously uses the platform's default encoding for reading/writing them.
-  </description>
+  <description>Verify that installed/deployed POMs retain their original file encoding and don't get messed up by some
+    transformation that erroneously uses the platform's default encoding for reading/writing them.</description>
 
   <modules>
     <module>utf-8</module>
diff --git a/core-it-suite/src/test/resources/mng-2362/utf-8/pom.xml b/core-it-suite/src/test/resources/mng-2362/utf-8/pom.xml
index b807d3a..8191a6a 100644
--- a/core-it-suite/src/test/resources/mng-2362/utf-8/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2362/utf-8/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,13 +17,11 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <!--
 
 NOTE: This file being encoded in UTF-8 is essential part of this test!
 
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +30,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2362</name>
-  <description>
-    TEST-CHARS: ßıΣЯא€
-  </description>
+  <description>TEST-CHARS: ßıΣЯא€</description>
 
   <distributionManagement>
     <repository>
@@ -53,16 +48,16 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
-            <configuration>
-              <mainFile>main.jar</mainFile>
-            </configuration>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
+            <configuration>
+              <mainFile>main.jar</mainFile>
+            </configuration>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2363/pom.xml b/core-it-suite/src/test/resources/mng-2363/pom.xml
index f866c61..47b0856 100644
--- a/core-it-suite/src/test/resources/mng-2363/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2363/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2363</name>
-  <description>
-    Test that the file-based profile activator resolves relative paths against the current project's base directory
-    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.
-  </description>
+  <description>Test that the file-based profile activator resolves relative paths against the current project's base directory
+    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.</description>
 
   <modules>
     <module>sub-a</module>
@@ -55,13 +51,13 @@
             <executions>
               <execution>
                 <id>test-1</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/file1.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -84,13 +80,13 @@
             <executions>
               <execution>
                 <id>test-2</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/parent1.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -113,13 +109,13 @@
             <executions>
               <execution>
                 <id>test-3</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/file2.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -142,13 +138,13 @@
             <executions>
               <execution>
                 <id>test-4</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/parent2.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2363/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-2363/sub-a/pom.xml
index e1fd6f4..b4d0e2e 100644
--- a/core-it-suite/src/test/resources/mng-2363/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2363/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,8 +29,6 @@
   <artifactId>sub-a</artifactId>
 
   <name>Maven Integration Test :: MNG-2363 :: Sub-A</name>
-  <description>
-    Test that the file-based profile activator resolves relative paths against the current project's base directory
-    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.
-  </description>
+  <description>Test that the file-based profile activator resolves relative paths against the current project's base directory
+    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2363/sub-b/pom.xml b/core-it-suite/src/test/resources/mng-2363/sub-b/pom.xml
index ea62ba1..f0de423 100644
--- a/core-it-suite/src/test/resources/mng-2363/sub-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2363/sub-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,8 +29,6 @@
   <artifactId>sub-b</artifactId>
 
   <name>Maven Integration Test :: MNG-2363 :: Sub-B</name>
-  <description>
-    Test that the file-based profile activator resolves relative paths against the current project's base directory
-    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.
-  </description>
+  <description>Test that the file-based profile activator resolves relative paths against the current project's base directory
+    and also interpolates ${basedir} if explicitly given, just like usual for other parts of the POM.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2387/pom.xml b/core-it-suite/src/test/resources/mng-2387/pom.xml
index 31f3cf0..2836283 100644
--- a/core-it-suite/src/test/resources/mng-2387/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2387/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2387</name>
-  <description>
-    Test that no proxy is used if none of the configured proxies is actually set as active.
-  </description>
+  <description>Test that no proxy is used if none of the configured proxies is actually set as active.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2432/pom.xml b/core-it-suite/src/test/resources/mng-2432/pom.xml
index 0512e13..7839925 100644
--- a/core-it-suite/src/test/resources/mng-2432/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2432/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2432</name>
-  <description>
-    Verify that when resolving plugin prefixes the plugins from the POM are searched before the plugin groups
-    from the settings.
-  </description>
+  <description>Verify that when resolving plugin prefixes the plugins from the POM are searched before the plugin groups
+    from the settings.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-2486/dep-a/pom.xml b/core-it-suite/src/test/resources/mng-2486/dep-a/pom.xml
index a0ed99e..a16fcf3 100644
--- a/core-it-suite/src/test/resources/mng-2486/dep-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2486/dep-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -48,13 +46,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2486/dep-b/pom.xml b/core-it-suite/src/test/resources/mng-2486/dep-b/pom.xml
index 0d7af07..4d0620c 100644
--- a/core-it-suite/src/test/resources/mng-2486/dep-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2486/dep-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -61,13 +59,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2486/parent/pom.xml b/core-it-suite/src/test/resources/mng-2486/parent/pom.xml
index fce0fb4..d79dc6e 100644
--- a/core-it-suite/src/test/resources/mng-2486/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2486/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -59,12 +57,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2486/test/pom.xml b/core-it-suite/src/test/resources/mng-2486/test/pom.xml
index 1c3082f..20ab404 100644
--- a/core-it-suite/src/test/resources/mng-2486/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2486/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -51,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2562/custom/pom.xml b/core-it-suite/src/test/resources/mng-2562/custom/pom.xml
index 51ce13e..6c0667c 100644
--- a/core-it-suite/src/test/resources/mng-2562/custom/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/custom/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,20 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2562</groupId>
   <artifactId>timestamp</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2562</name>
-  <description>
-    Verify that the format of the timestamp can be customized via maven.build.timestamp.format.
-  </description>
+  <description>Verify that the format of the timestamp can be customized via maven.build.timestamp.format.</description>
 
   <properties>
     <timestamp>${maven.build.timestamp}</timestamp>
@@ -40,22 +37,22 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
-        <version>2.1-SNAPSHOT</version>
         <artifactId>maven-it-plugin-expression</artifactId>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-          </execution>
-        </executions>
+        <version>2.1-SNAPSHOT</version>
         <configuration>
           <outputFile>target/pom.properties</outputFile>
           <expressions>
             <expression>project/properties</expression>
           </expressions>
         </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-2562/default/pom.xml b/core-it-suite/src/test/resources/mng-2562/default/pom.xml
index 5d10947..692cb58 100644
--- a/core-it-suite/src/test/resources/mng-2562/default/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/default/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,20 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2562</groupId>
   <artifactId>timestamp</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2562</name>
-  <description>
-    Verify that the property build.timestamp is available for POM interpolation.
-  </description>
+  <description>Verify that the property build.timestamp is available for POM interpolation.</description>
 
   <properties>
     <timestamp1>${maven.build.timestamp}</timestamp1>
@@ -40,22 +37,22 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
-        <version>2.1-SNAPSHOT</version>
         <artifactId>maven-it-plugin-expression</artifactId>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-          </execution>
-        </executions>
+        <version>2.1-SNAPSHOT</version>
         <configuration>
           <outputFile>target/pom.properties</outputFile>
           <expressions>
             <expression>project/properties</expression>
           </expressions>
         </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-2562/reactor/child-1/pom.xml b/core-it-suite/src/test/resources/mng-2562/reactor/child-1/pom.xml
index 022d907..3ff1ffd 100644
--- a/core-it-suite/src/test/resources/mng-2562/reactor/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/reactor/child-1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -33,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2562 :: Child 1</name>
-  <description>
-    Verify that the timestamp is the same for all modules of a reactor build.
-  </description>
+  <description>Verify that the timestamp is the same for all modules of a reactor build.</description>
 
   <properties>
     <timestamp>${maven.build.timestamp}</timestamp>
diff --git a/core-it-suite/src/test/resources/mng-2562/reactor/child-2/pom.xml b/core-it-suite/src/test/resources/mng-2562/reactor/child-2/pom.xml
index 5479d2b..dadd64f 100644
--- a/core-it-suite/src/test/resources/mng-2562/reactor/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/reactor/child-2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -33,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2562 :: Child 2</name>
-  <description>
-    Verify that the timestamp is the same for all modules of a reactor build.
-  </description>
+  <description>Verify that the timestamp is the same for all modules of a reactor build.</description>
 
   <properties>
     <timestamp>${maven.build.timestamp}</timestamp>
diff --git a/core-it-suite/src/test/resources/mng-2562/reactor/child-3/pom.xml b/core-it-suite/src/test/resources/mng-2562/reactor/child-3/pom.xml
index 7e22335..d3da06a 100644
--- a/core-it-suite/src/test/resources/mng-2562/reactor/child-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/reactor/child-3/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -33,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2562 :: Child 3</name>
-  <description>
-    Verify that the timestamp is the same for all modules of a reactor build.
-  </description>
+  <description>Verify that the timestamp is the same for all modules of a reactor build.</description>
 
   <properties>
     <timestamp>${maven.build.timestamp}</timestamp>
diff --git a/core-it-suite/src/test/resources/mng-2562/reactor/pom.xml b/core-it-suite/src/test/resources/mng-2562/reactor/pom.xml
index 124c61a..38751b3 100644
--- a/core-it-suite/src/test/resources/mng-2562/reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2562/reactor/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,20 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2562</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2562</name>
-  <description>
-    Verify that the timestamp is the same for all modules of a reactor build.
-  </description>
+  <description>Verify that the timestamp is the same for all modules of a reactor build.</description>
 
   <modules>
     <module>child-1</module>
@@ -46,22 +43,22 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
-        <version>2.1-SNAPSHOT</version>
         <artifactId>maven-it-plugin-expression</artifactId>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-          </execution>
-        </executions>
+        <version>2.1-SNAPSHOT</version>
         <configuration>
           <outputFile>target/pom.properties</outputFile>
           <expressions>
             <expression>project/properties</expression>
           </expressions>
         </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-2576/pom.xml b/core-it-suite/src/test/resources/mng-2576/pom.xml
index 1719773..f228442 100644
--- a/core-it-suite/src/test/resources/mng-2576/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2576/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -49,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2576/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-2576/sub-a/pom.xml
index 1ea21c3..6c04fc9 100644
--- a/core-it-suite/src/test/resources/mng-2576/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2576/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2576/sub-b/pom.xml b/core-it-suite/src/test/resources/mng-2576/sub-b/pom.xml
index ca51ad3..bd42f58 100644
--- a/core-it-suite/src/test/resources/mng-2576/sub-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2576/sub-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2576/sub-c/pom.xml b/core-it-suite/src/test/resources/mng-2576/sub-c/pom.xml
index 97ebcad..40f2635 100644
--- a/core-it-suite/src/test/resources/mng-2576/sub-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2576/sub-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-2577/pom.xml b/core-it-suite/src/test/resources/mng-2577/pom.xml
index 3aa6c61..a475c9f 100644
--- a/core-it-suite/src/test/resources/mng-2577/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2577/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2577</name>
-  <description>
-    Verify that the settings.xml can be interpolated using environment variables and system properties.
-  </description>
+  <description>Verify that the settings.xml can be interpolated using environment variables and system properties.</description>
 
   <build>
     <plugins>
@@ -41,6 +37,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -48,9 +47,6 @@
               </expressions>
               <outputFile>target/settings.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2591/no-profile/pom.xml b/core-it-suite/src/test/resources/mng-2591/no-profile/pom.xml
index 60180d5..0e0ecd3 100644
--- a/core-it-suite/src/test/resources/mng-2591/no-profile/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2591/no-profile/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2591</name>
-  <description>
-    Test aggregation of list configuration items for build plugins when using
-    'combine.children=append' attribute.
-  </description>
+  <description>Test aggregation of list configuration items for build plugins when using
+    'combine.children=append' attribute.</description>
 
   <modules>
     <module>subproject</module>
diff --git a/core-it-suite/src/test/resources/mng-2591/no-profile/subproject/pom.xml b/core-it-suite/src/test/resources/mng-2591/no-profile/subproject/pom.xml
index cef53d3..22bdef7 100644
--- a/core-it-suite/src/test/resources/mng-2591/no-profile/subproject/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2591/no-profile/subproject/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -58,10 +56,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2591/with-profile/pom.xml b/core-it-suite/src/test/resources/mng-2591/with-profile/pom.xml
index 72ab3f4..cabbfa7 100644
--- a/core-it-suite/src/test/resources/mng-2591/with-profile/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2591/with-profile/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2591</name>
-  <description>
-    Test aggregation of list configuration items for build plugins when using
-    'combine.children=append' attribute.
-  </description>
+  <description>Test aggregation of list configuration items for build plugins when using
+    'combine.children=append' attribute.</description>
 
   <modules>
     <module>subproject</module>
diff --git a/core-it-suite/src/test/resources/mng-2591/with-profile/subproject/pom.xml b/core-it-suite/src/test/resources/mng-2591/with-profile/subproject/pom.xml
index 7023503..192be5b 100644
--- a/core-it-suite/src/test/resources/mng-2591/with-profile/subproject/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2591/with-profile/subproject/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -58,10 +56,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2605/pom.xml b/core-it-suite/src/test/resources/mng-2605/pom.xml
index a3439d4..afe5fa3 100644
--- a/core-it-suite/src/test/resources/mng-2605/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2605/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2605</name>
-  <description>
-    Test that profiles are not accidentally activated when they have no activation element at all and
-    the user did not request their activation via id.
-  </description>
+  <description>Test that profiles are not accidentally activated when they have no activation element at all and
+    the user did not request their activation via id.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-2668/pom.xml b/core-it-suite/src/test/resources/mng-2668/pom.xml
index ecf2306..3c9c570 100644
--- a/core-it-suite/src/test/resources/mng-2668/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2668/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -8,9 +8,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2539</name>
-  <description>
-    Verify that dependencies of plugins are considered by the project sorter for a reactor build.
-  </description>
+  <description>Verify that dependencies of plugins are considered by the project sorter for a reactor build.</description>
 
   <modules>
     <!-- NOTE: project goes first but the project sorter should recognize that tools needs to be build first -->
diff --git a/core-it-suite/src/test/resources/mng-2668/project/pom.xml b/core-it-suite/src/test/resources/mng-2668/project/pom.xml
index d609a2b..1e5e150 100644
--- a/core-it-suite/src/test/resources/mng-2668/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2668/project/pom.xml
@@ -1,19 +1,17 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
     <groupId>org.apache.maven.its.mng2668</groupId>
-    <version>1.0-SNAPSHOT</version>
     <artifactId>test-project</artifactId>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>project</artifactId>
 
   <name>Maven Integration Test :: MNG-2539 :: Plugin Dependency Consumer</name>
-  <description>
-    Verify that dependencies of plugins are considered by the project sorter for a reactor build.
-  </description>
+  <description>Verify that dependencies of plugins are considered by the project sorter for a reactor build.</description>
 
   <build>
     <plugins>
@@ -21,6 +19,9 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-artifact</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <mainFile>pom.xml</mainFile>
+        </configuration>
         <dependencies>
           <dependency>
             <groupId>${project.groupId}</groupId>
@@ -28,20 +29,16 @@
             <version>${project.version}</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <mainFile>pom.xml</mainFile>
-        </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-2668/tools/pom.xml b/core-it-suite/src/test/resources/mng-2668/tools/pom.xml
index d046da9..87c57aa 100644
--- a/core-it-suite/src/test/resources/mng-2668/tools/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2668/tools/pom.xml
@@ -1,19 +1,17 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
     <groupId>org.apache.maven.its.mng2668</groupId>
-    <version>1.0-SNAPSHOT</version>
     <artifactId>test-project</artifactId>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>tools</artifactId>
 
   <name>Maven Integration Test :: MNG-2539 :: Plugin Dependency Provider</name>
-  <description>
-    Verify that dependencies of plugins are considered by the project sorter for a reactor build.
-  </description>
+  <description>Verify that dependencies of plugins are considered by the project sorter for a reactor build.</description>
 
   <build>
     <plugins>
@@ -26,15 +24,14 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-2690/mojo-complookup/pom.xml b/core-it-suite/src/test/resources/mng-2690/mojo-complookup/pom.xml
index c0f4580..6feb1ef 100644
--- a/core-it-suite/src/test/resources/mng-2690/mojo-complookup/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2690/mojo-complookup/pom.xml
@@ -15,10 +15,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>mojo-component-lookup-exception</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2690/noclassdef-mojo/pom.xml b/core-it-suite/src/test/resources/mng-2690/noclassdef-mojo/pom.xml
index 0a2697d..98f2b4a 100644
--- a/core-it-suite/src/test/resources/mng-2690/noclassdef-mojo/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2690/noclassdef-mojo/pom.xml
@@ -15,10 +15,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>no-class-def-found-error-mojo</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2690/noclassdef-param/pom.xml b/core-it-suite/src/test/resources/mng-2690/noclassdef-param/pom.xml
index b7744d9..7f43cf6 100644
--- a/core-it-suite/src/test/resources/mng-2690/noclassdef-param/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2690/noclassdef-param/pom.xml
@@ -15,10 +15,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>no-class-def-found-error-param</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2690/requirement-complookup/pom.xml b/core-it-suite/src/test/resources/mng-2690/requirement-complookup/pom.xml
index 59a58d8..79544a9 100644
--- a/core-it-suite/src/test/resources/mng-2690/requirement-complookup/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2690/requirement-complookup/pom.xml
@@ -15,10 +15,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>requirement-component-lookup-exception</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2693/pom.xml b/core-it-suite/src/test/resources/mng-2693/pom.xml
index b13c51a..6dc7146 100644
--- a/core-it-suite/src/test/resources/mng-2693/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2693/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2693</name>
-  <description>
-    Verify that a plugin class/resource can be loaded from the plugin realm, also during the site lifecycle.
-  </description>
+  <description>Verify that a plugin class/resource can be loaded from the plugin realm, also during the site lifecycle.</description>
 
   <build>
     <plugins>
@@ -40,6 +36,9 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>pre-site</phase>
             <configuration>
               <classNames>org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB,org.apache.maven.plugin.coreit.SomeClass</classNames>
@@ -47,9 +46,6 @@
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2695/pom.xml b/core-it-suite/src/test/resources/mng-2695/pom.xml
index b1d2cd9..846e9ef 100644
--- a/core-it-suite/src/test/resources/mng-2695/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2695/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2695</name>
-  <description>
-    Verify that snapshot plugins which are scheduled for an update don't fail the build when in offline mode.
-  </description>
+  <description>Verify that snapshot plugins which are scheduled for an update don't fail the build when in offline mode.</description>
 
   <build>
     <plugins>
@@ -44,10 +40,10 @@
         <executions>
           <execution>
             <id>test-a</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -62,10 +58,10 @@
         <executions>
           <execution>
             <id>test-b</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2720/child1/pom.xml b/core-it-suite/src/test/resources/mng-2720/child1/pom.xml
index 33bfc68..4542987 100644
--- a/core-it-suite/src/test/resources/mng-2720/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2720/child1/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -13,8 +13,6 @@
   <name>MNG-2720 Project Hierarchy 1 Child 1</name>
 
   <build>
-    <outputDirectory>main</outputDirectory>
-    <testOutputDirectory>test</testOutputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -23,6 +21,12 @@
         <executions>
           <execution>
             <id>package</id>
+            <goals>
+              <!-- emulate package phase -->
+              <goal>set</goal>
+              <goal>attach-pom</goal>
+              <goal>attach</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>main.jar</mainFile>
@@ -30,15 +34,11 @@
               <artifactType>test-jar</artifactType>
               <artifactClassifier>tests</artifactClassifier>
             </configuration>
-            <goals>
-              <!-- emulate package phase -->
-              <goal>set</goal>
-              <goal>attach-pom</goal>
-              <goal>attach</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>main</outputDirectory>
+    <testOutputDirectory>test</testOutputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2720/child2/pom.xml b/core-it-suite/src/test/resources/mng-2720/child2/pom.xml
index 46363e4..2b573fe 100644
--- a/core-it-suite/src/test/resources/mng-2720/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2720/child2/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2720/child3/pom.xml b/core-it-suite/src/test/resources/mng-2720/child3/pom.xml
index 3eae416..67784a5 100644
--- a/core-it-suite/src/test/resources/mng-2720/child3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2720/child3/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-2720/pom.xml b/core-it-suite/src/test/resources/mng-2720/pom.xml
index 17d133c..7cd6e5d 100644
--- a/core-it-suite/src/test/resources/mng-2720/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2720/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2720</groupId>
@@ -24,12 +24,12 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>initialize</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <compileClassPath>${project.build.directory}/compile.txt</compileClassPath>
               <runtimeClassPath>${project.build.directory}/runtime.txt</runtimeClassPath>
diff --git a/core-it-suite/src/test/resources/mng-2738/pom.xml b/core-it-suite/src/test/resources/mng-2738/pom.xml
index 298aa22..b0b1509 100644
--- a/core-it-suite/src/test/resources/mng-2738/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2738/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2738</name>
-  <description>
-    Verify that the CLI parsing properly handles activation of profiles whose id happens to match a short command
-    line option.
-  </description>
+  <description>Verify that the CLI parsing properly handles activation of profiles whose id happens to match a short command
+    line option.</description>
 
   <profiles>
     <profile>
@@ -45,10 +41,10 @@
             <executions>
               <execution>
                 <id>default</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>reset</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <logFile>target/touch.txt</logFile>
                 </configuration>
diff --git a/core-it-suite/src/test/resources/mng-2739/pom.xml b/core-it-suite/src/test/resources/mng-2739/pom.xml
index a79fa9c..04ac866 100644
--- a/core-it-suite/src/test/resources/mng-2739/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2739/pom.xml
@@ -3,14 +3,12 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2739</groupId>
   <artifactId>mng-2739</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
   <name>mng-2739</name>
-  <description>
-    Verify that repositories lacking id or url fail to build/validate.
-  </description>
+  <description>Verify that repositories lacking id or url fail to build/validate.</description>
   <modules>
     <module>repo-id</module>
     <module>repo-url</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-2739/repo-id/pom.xml b/core-it-suite/src/test/resources/mng-2739/repo-id/pom.xml
index 0c739af..6ff99f2 100644
--- a/core-it-suite/src/test/resources/mng-2739/repo-id/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2739/repo-id/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>mng-2739</artifactId>
     <groupId>org.apache.maven.its.mng2739</groupId>
+    <artifactId>mng-2739</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>repo-id</artifactId>
   <name>repo-id</name>
   <description>Test missing repository id</description>
@@ -13,4 +14,4 @@
       <url>http://maven.apache.org/</url>
     </repository>
   </repositories>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-2739/repo-url/pom.xml b/core-it-suite/src/test/resources/mng-2739/repo-url/pom.xml
index 2ded820..3c4945b 100644
--- a/core-it-suite/src/test/resources/mng-2739/repo-url/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2739/repo-url/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>mng-2739</artifactId>
     <groupId>org.apache.maven.its.mng2739</groupId>
+    <artifactId>mng-2739</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>repo-url</artifactId>
   <name>repo-url</name>
   <description>Test missing repository url</description>
@@ -13,4 +14,4 @@
       <id>test</id>
     </repository>
   </repositories>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-2741/pom.xml b/core-it-suite/src/test/resources/mng-2741/pom.xml
index 4a7789c..10859cb 100644
--- a/core-it-suite/src/test/resources/mng-2741/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2741/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,17 +17,14 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2741</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2741</name>
-  <description>
-    Tests that plugin prefix/version metadata resolution errors tell the underlying transport issue.
-  </description>
+  <description>Tests that plugin prefix/version metadata resolution errors tell the underlying transport issue.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2744/pom.xml b/core-it-suite/src/test/resources/mng-2744/pom.xml
index efa5756..aa3be00 100644
--- a/core-it-suite/src/test/resources/mng-2744/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2744/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng2744</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-2744</name>
-  <description>
-    Tests that hex digits of checksums are compared without regard to case.
-  </description>
+  <description>Tests that hex digits of checksums are compared without regard to case.</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2749/pom.xml b/core-it-suite/src/test/resources/mng-2749/pom.xml
index 9a75d52..a3095e6 100644
--- a/core-it-suite/src/test/resources/mng-2749/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2749/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,18 +25,9 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2749</name>
-  <description>
-    Verify that plugins can load classes/resources from a build extension.
-  </description>
+  <description>Verify that plugins can load classes/resources from a build extension.</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.mng2749</groupId>
-        <artifactId>extension</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -47,6 +36,9 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.mng2749.ExtensionClass</classNames>
@@ -54,12 +46,16 @@
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng2749</groupId>
+        <artifactId>extension</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2771/extension/pom.xml b/core-it-suite/src/test/resources/mng-2771/extension/pom.xml
index dfa7b8a..2302bdf 100644
--- a/core-it-suite/src/test/resources/mng-2771/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2771/extension/pom.xml
@@ -1,10 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0124</name>
   <groupId>org.apache.maven.its.it0124</groupId>
   <artifactId>maven-it-it0124-extension</artifactId>
-  <description>Project that provides an alternative ArtifactFactory implementation for testing.</description>
   <version>1.0</version>
+  <name>Maven Integration Test :: it0124</name>
+  <description>Project that provides an alternative ArtifactFactory implementation for testing.</description>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-2771/extension/src/main/java/org/apache/maven/its/it0124/CustomArtifactFactory.java b/core-it-suite/src/test/resources/mng-2771/extension/src/main/java/org/apache/maven/its/it0124/CustomArtifactFactory.java
index 222b633..2fab6eb 100644
--- a/core-it-suite/src/test/resources/mng-2771/extension/src/main/java/org/apache/maven/its/it0124/CustomArtifactFactory.java
+++ b/core-it-suite/src/test/resources/mng-2771/extension/src/main/java/org/apache/maven/its/it0124/CustomArtifactFactory.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0124;
 
 /*
@@ -26,7 +44,4 @@
  *
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  */
-public class CustomArtifactFactory
-    extends DefaultArtifactFactory
-{
-}
+public class CustomArtifactFactory extends DefaultArtifactFactory {}
diff --git a/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml b/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
index 9a2c077..91061f0 100644
--- a/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0124</name>
   <groupId>org.apache.maven.its.it0124</groupId>
   <artifactId>maven-it-it0124-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
-  <description>Plugin that writes the injected artifact factory implementation to a file.</description>
   <version>1.0</version>
+  <packaging>maven-plugin</packaging>
+  <name>Maven Integration Test :: it0124</name>
+  <description>Plugin that writes the injected artifact factory implementation to a file.</description>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-2771/plugin/src/main/java/org/apache/maven/its/it0124/LookupMojo.java b/core-it-suite/src/test/resources/mng-2771/plugin/src/main/java/org/apache/maven/its/it0124/LookupMojo.java
index 325283c..68cdf7e 100644
--- a/core-it-suite/src/test/resources/mng-2771/plugin/src/main/java/org/apache/maven/its/it0124/LookupMojo.java
+++ b/core-it-suite/src/test/resources/mng-2771/plugin/src/main/java/org/apache/maven/its/it0124/LookupMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0124;
 
 /*
@@ -19,17 +37,12 @@
  * under the License.
  */
 
-import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.Writer;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.factory.DefaultArtifactFactory;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -40,8 +53,7 @@
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @goal lookup
  */
-public class LookupMojo extends AbstractMojo
-{
+public class LookupMojo extends AbstractMojo {
     /**
      * @component
      */
@@ -55,24 +67,22 @@
     /*
      * @see org.apache.maven.plugin.Mojo#execute()
      */
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        File file = new File( buildDirectory, "lookup.log" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        File file = new File(buildDirectory, "lookup.log");
 
-        if ( !file.getParentFile().mkdirs() )
-        {
-            throw new MojoExecutionException( "Cannot create build directory" );
+        if (!file.getParentFile().mkdirs()) {
+            throw new MojoExecutionException("Cannot create build directory");
         }
 
-        try
-        {
-            Writer writer = new FileWriter( file );
-            writer.write( artifactFactory == null ? "null" : artifactFactory.getClass().getName() );
+        try {
+            Writer writer = new FileWriter(file);
+            writer.write(
+                    artifactFactory == null
+                            ? "null"
+                            : artifactFactory.getClass().getName());
             writer.close();
-        }
-        catch ( IOException exception )
-        {
-            throw new MojoExecutionException( "Cannot create lookup.log", exception );
+        } catch (IOException exception) {
+            throw new MojoExecutionException("Cannot create lookup.log", exception);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-2771/project/pom.xml b/core-it-suite/src/test/resources/mng-2771/project/pom.xml
index 0f49ea3..dccaaba 100644
--- a/core-it-suite/src/test/resources/mng-2771/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2771/project/pom.xml
@@ -1,18 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: it0124</name>
   <groupId>org.apache.maven.its.it0124</groupId>
   <artifactId>maven-it-it0124</artifactId>
-  <description>Test that ensures the POM extensions can override default component implementations.</description>
   <version>1.0</version>
+  <name>Maven Integration Test :: it0124</name>
+  <description>Test that ensures the POM extensions can override default component implementations.</description>
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.it0124</groupId>
-        <artifactId>maven-it-it0124-extension</artifactId>
-        <version>1.0</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.it0124</groupId>
@@ -20,28 +14,35 @@
         <version>1.0</version>
         <executions>
           <execution>
-            <phase>generate-resources</phase>
             <goals>
               <goal>lookup</goal>
             </goals>
+            <phase>generate-resources</phase>
           </execution>
         </executions>
       </plugin>
       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-verifier-plugin</artifactId>
-         <configuration>
-           <verificationFile>src/test/verifier/verifications-test.xml</verificationFile>
-         </configuration>
-         <executions>
-           <execution>
-             <phase>verify</phase>
-             <goals>
-               <goal>verify</goal>
-             </goals>
-           </execution>
-         </executions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-verifier-plugin</artifactId>
+        <configuration>
+          <verificationFile>src/test/verifier/verifications-test.xml</verificationFile>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>verify</goal>
+            </goals>
+            <phase>verify</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.it0124</groupId>
+        <artifactId>maven-it-it0124-extension</artifactId>
+        <version>1.0</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2790/pom.xml b/core-it-suite/src/test/resources/mng-2790/pom.xml
index 3ed5e5a..eaa1419 100644
--- a/core-it-suite/src/test/resources/mng-2790/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2790/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2790</name>
-  <description>
-    Verify that the field lastUpdated of existing local repo metadata is updated upon install of new a snapshot.
-  </description>
+  <description>Verify that the field lastUpdated of existing local repo metadata is updated upon install of new a snapshot.</description>
 
   <build>
     <plugins>
@@ -41,14 +37,14 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
-            <configuration>
-              <mainFile>snapshot.jar</mainFile>
-            </configuration>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
+            <configuration>
+              <mainFile>snapshot.jar</mainFile>
+            </configuration>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2820/pom.xml b/core-it-suite/src/test/resources/mng-2820/pom.xml
index 5afbc12..d2bdd18 100644
--- a/core-it-suite/src/test/resources/mng-2820/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2820/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,13 +17,10 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <!-- DOCUMENT-COMMENT-PRE-1 -->
-
 <!--
 DOCUMENT-COMMENT-PRE-2
 -->
-
 <project>
   <!-- MODEL-COMMENT -->
   <modelVersion>4.0.0</modelVersion>
@@ -57,25 +53,23 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
-            <configuration>
-              <mainFile>main.jar</mainFile>
-            </configuration>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
+            <configuration>
+              <mainFile>main.jar</mainFile>
+            </configuration>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
 </project>
-
 <!-- DOCUMENT-COMMENT-POST-1 -->
-
 <!--
 DOCUMENT-COMMENT-POST-2
 -->
diff --git a/core-it-suite/src/test/resources/mng-2831/pom.xml b/core-it-suite/src/test/resources/mng-2831/pom.xml
index c0e577a..04bd33f 100644
--- a/core-it-suite/src/test/resources/mng-2831/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2831/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,18 +27,9 @@
   <packaging>it-packaging</packaging>
 
   <name>Maven Integration Test :: MNG-2831</name>
-  <description>
-    Test the use of a custom lifecycle from a plugin that is defined as a build extension.
-  </description>
+  <description>Test the use of a custom lifecycle from a plugin that is defined as a build extension.</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-packaging</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -51,5 +40,12 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-packaging</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2843/pom.xml b/core-it-suite/src/test/resources/mng-2843/pom.xml
index c8ae1cb..69ee87a 100644
--- a/core-it-suite/src/test/resources/mng-2843/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2843/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,11 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2843</name>
-  <description>
-    Test that plugins can have the project properties injected via ${project.properties}.
-  </description>
+  <description>Test that plugins can have the project properties injected via ${project.properties}.</description>
+
+  <properties>
+    <key>PASSED</key>
+  </properties>
 
   <build>
     <plugins>
@@ -39,17 +39,13 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>generate-properties</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-
-  <properties>
-    <key>PASSED</key>
-  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2848/pom.xml b/core-it-suite/src/test/resources/mng-2848/pom.xml
index 46a927a..ee08b3a 100644
--- a/core-it-suite/src/test/resources/mng-2848/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2848/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-2848</name>
-  <description>
-    Test activation of a profile via environment variables.
-  </description>
+  <description>Test activation of a profile via environment variables.</description>
 
   <profiles>
     <profile>
@@ -51,10 +47,10 @@
             <version>2.1-SNAPSHOT</version>
             <executions>
               <execution>
-                <phase>validate</phase>
                 <goals>
                   <goal>eval</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputFile>target/profile.properties</outputFile>
                   <expressions>
diff --git a/core-it-suite/src/test/resources/mng-2861/A/pom.xml b/core-it-suite/src/test/resources/mng-2861/A/pom.xml
index 2cd5611..e9660c5 100644
--- a/core-it-suite/src/test/resources/mng-2861/A/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2861/A/pom.xml
@@ -3,8 +3,8 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>MNG-2861</artifactId>
     <groupId>org.apache.maven.its.mng2861</groupId>
+    <artifactId>MNG-2861</artifactId>
     <version>1.0-SNAPSHOT</version>
   </parent>
 
@@ -36,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <testArtifacts>target/artifacts.txt</testArtifacts>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-2861/B/pom.xml b/core-it-suite/src/test/resources/mng-2861/B/pom.xml
index 8b0c52a..e9751ba 100644
--- a/core-it-suite/src/test/resources/mng-2861/B/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2861/B/pom.xml
@@ -3,8 +3,8 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>MNG-2861</artifactId>
     <groupId>org.apache.maven.its.mng2861</groupId>
+    <artifactId>MNG-2861</artifactId>
     <version>1.0-SNAPSHOT</version>
   </parent>
 
@@ -31,12 +31,12 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-2861/C/pom.xml b/core-it-suite/src/test/resources/mng-2861/C/pom.xml
index f133a1c..325ef27 100644
--- a/core-it-suite/src/test/resources/mng-2861/C/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2861/C/pom.xml
@@ -3,8 +3,8 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>MNG-2861</artifactId>
     <groupId>org.apache.maven.its.mng2861</groupId>
+    <artifactId>MNG-2861</artifactId>
     <version>1.0-SNAPSHOT</version>
   </parent>
 
@@ -31,12 +31,12 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-2865/central/pom.xml b/core-it-suite/src/test/resources/mng-2865/central/pom.xml
index cc0a9a6..5bd67d5 100644
--- a/core-it-suite/src/test/resources/mng-2865/central/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2865/central/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2865</name>
-  <description>
-    Test that the mirror wildcard * matches any repo, in particular central.
-  </description>
+  <description>Test that the mirror wildcard * matches any repo, in particular central.</description>
 
   <dependencies>
     <dependency>
@@ -50,10 +46,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2865/external/pom.xml b/core-it-suite/src/test/resources/mng-2865/external/pom.xml
index 175653e..c5c128c 100644
--- a/core-it-suite/src/test/resources/mng-2865/external/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2865/external/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2865 :: C</name>
-  <description>
-    Test that the mirror wildcard * matches any repo.
-  </description>
+  <description>Test that the mirror wildcard * matches any repo.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2865/file/pom.xml b/core-it-suite/src/test/resources/mng-2865/file/pom.xml
index 4db02c1..74ada68 100644
--- a/core-it-suite/src/test/resources/mng-2865/file/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2865/file/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2865 :: A</name>
-  <description>
-    Test that the mirror wildcard * matches any repo.
-  </description>
+  <description>Test that the mirror wildcard * matches any repo.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2865/localhost/pom.xml b/core-it-suite/src/test/resources/mng-2865/localhost/pom.xml
index 9da7043..9a0df41 100644
--- a/core-it-suite/src/test/resources/mng-2865/localhost/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2865/localhost/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2865 :: B</name>
-  <description>
-    Test that the mirror wildcard * matches any repo.
-  </description>
+  <description>Test that the mirror wildcard * matches any repo.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2871/consumer/pom.xml b/core-it-suite/src/test/resources/mng-2871/consumer/pom.xml
index 9c84326..754e8ad 100644
--- a/core-it-suite/src/test/resources/mng-2871/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2871/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -37,8 +35,8 @@
     <dependency>
       <groupId>org.apache.maven.its.mng2871</groupId>
       <artifactId>ejbs</artifactId>
-      <type>ejb-client</type>
       <version>1.0-SNAPSHOT</version>
+      <type>ejb-client</type>
       <scope>compile</scope>
     </dependency>
   </dependencies>
@@ -52,13 +50,13 @@
         <executions>
           <execution>
             <id>resolve</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2871/ejbs/pom.xml b/core-it-suite/src/test/resources/mng-2871/ejbs/pom.xml
index 408eebb..c6b4a96 100644
--- a/core-it-suite/src/test/resources/mng-2871/ejbs/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2871/ejbs/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -46,13 +44,13 @@
           -->
           <execution>
             <id>install</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>target/classes</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2871/pom.xml b/core-it-suite/src/test/resources/mng-2871/pom.xml
index 4a0ca56..1b53e71 100644
--- a/core-it-suite/src/test/resources/mng-2871/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2871/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2871 :: Parent</name>
-  <description>
-    Verify that dependencies on not-yet-packaged sub artifacts in build phases prior to package can be satisfied
-    from a module's output directory, i.e. with the loose class files.
-  </description>
+  <description>Verify that dependencies on not-yet-packaged sub artifacts in build phases prior to package can be satisfied
+    from a module's output directory, i.e. with the loose class files.</description>
 
   <modules>
     <module>ejbs</module>
diff --git a/core-it-suite/src/test/resources/mng-2892/pom.xml b/core-it-suite/src/test/resources/mng-2892/pom.xml
index 945529a..43246ea 100644
--- a/core-it-suite/src/test/resources/mng-2892/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2892/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2892</name>
-  <description>
-    Verify that plugins can use their own version of plexus-utils and are not bound to the version bundled in the core.
-  </description>
+  <description>Verify that plugins can use their own version of plexus-utils and are not bound to the version bundled in the core.</description>
 
   <build>
     <plugins>
@@ -47,15 +43,15 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.codehaus.plexus.util.StringUtils</classNames>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2921/consumer/pom.xml b/core-it-suite/src/test/resources/mng-2921/consumer/pom.xml
index 6c089ce..7efeb78 100644
--- a/core-it-suite/src/test/resources/mng-2921/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2921/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -41,30 +39,30 @@
     <dependency>
       <groupId>org.apache.maven.its.mng2921</groupId>
       <artifactId>ejbs</artifactId>
-      <type>ejb-client</type>
       <version>1.0-SNAPSHOT</version>
+      <type>ejb-client</type>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng2921</groupId>
       <artifactId>tests</artifactId>
-      <type>test-jar</type>
       <version>1.0-SNAPSHOT</version>
+      <type>test-jar</type>
       <scope>test</scope>
     </dependency>
     <!-- NOTE: It is essential part of the test to also depend on multiple attached artifacts from the same module! -->
     <dependency>
       <groupId>org.apache.maven.its.mng2921</groupId>
       <artifactId>producer</artifactId>
-      <type>ejb-client</type>
       <version>1.0-SNAPSHOT</version>
+      <type>ejb-client</type>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng2921</groupId>
       <artifactId>producer</artifactId>
-      <type>test-jar</type>
       <version>1.0-SNAPSHOT</version>
+      <type>test-jar</type>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -78,6 +76,10 @@
         <executions>
           <execution>
             <id>resolve</id>
+            <goals>
+              <goal>compile</goal>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/compile.txt</compileArtifacts>
@@ -85,10 +87,6 @@
               <testClassPath>target/test-classpath.txt</testClassPath>
               <significantPathLevels>2</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2921/ejbs/pom.xml b/core-it-suite/src/test/resources/mng-2921/ejbs/pom.xml
index a6631a5..8ff15d7 100644
--- a/core-it-suite/src/test/resources/mng-2921/ejbs/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2921/ejbs/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -42,6 +40,10 @@
         <executions>
           <execution>
             <id>install</id>
+            <goals>
+              <goal>set</goal>
+              <goal>attach</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
@@ -49,10 +51,6 @@
               <artifactType>ejb-client</artifactType>
               <artifactClassifier>client</artifactClassifier>
             </configuration>
-            <goals>
-              <goal>set</goal>
-              <goal>attach</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2921/pom.xml b/core-it-suite/src/test/resources/mng-2921/pom.xml
index 92c34c0..c9e469c 100644
--- a/core-it-suite/src/test/resources/mng-2921/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2921/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,13 +26,11 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-2921 :: Parent</name>
-  <description>
-    Verify that attached project artifacts can be resolved from the reactor as active project artifacts for
+  <description>Verify that attached project artifacts can be resolved from the reactor as active project artifacts for
     consumption on other module's class paths. Note the subtle difference of this test compared to the closely
     related issue MNG-2871: This test is about *attached* artifacts, i.e. dependencies that have already been
     packaged. MNG-2871 on the other hand is about dependencies that haven't been packaged yet but merely exist
-    as loose class files in a module's output directory.
-  </description>
+    as loose class files in a module's output directory.</description>
 
   <modules>
     <module>tests</module>
diff --git a/core-it-suite/src/test/resources/mng-2921/producer/pom.xml b/core-it-suite/src/test/resources/mng-2921/producer/pom.xml
index 8529e4d..856253c 100644
--- a/core-it-suite/src/test/resources/mng-2921/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2921/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -43,37 +41,37 @@
         <executions>
           <execution>
             <id>package-main</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
           <execution>
             <id>package-tests</id>
+            <goals>
+              <goal>attach</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <attachedFile>tests.jar</attachedFile>
               <artifactType>test-jar</artifactType>
               <artifactClassifier>tests</artifactClassifier>
             </configuration>
-            <goals>
-              <goal>attach</goal>
-            </goals>
           </execution>
           <execution>
             <id>package-client</id>
+            <goals>
+              <goal>attach</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <attachedFile>client.jar</attachedFile>
               <artifactType>ejb-client</artifactType>
               <artifactClassifier>client</artifactClassifier>
             </configuration>
-            <goals>
-              <goal>attach</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2921/tests/pom.xml b/core-it-suite/src/test/resources/mng-2921/tests/pom.xml
index 085ad61..1897f17 100644
--- a/core-it-suite/src/test/resources/mng-2921/tests/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2921/tests/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -42,6 +40,10 @@
         <executions>
           <execution>
             <id>install</id>
+            <goals>
+              <goal>set</goal>
+              <goal>attach</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
@@ -49,10 +51,6 @@
               <artifactType>test-jar</artifactType>
               <artifactClassifier>tests</artifactClassifier>
             </configuration>
-            <goals>
-              <goal>set</goal>
-              <goal>attach</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2926/pom.xml b/core-it-suite/src/test/resources/mng-2926/pom.xml
index 43b898a..9d57bd0 100644
--- a/core-it-suite/src/test/resources/mng-2926/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2926/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,8 +25,6 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-2926</name>
-  <description>
-    Verify that when resolving plugin prefixes the group org.apache.maven.plugins is searched before
-    org.codehaus.mojo and that custom groups from the settings are searched before these standard ones.
-  </description>
+  <description>Verify that when resolving plugin prefixes the group org.apache.maven.plugins is searched before
+    org.codehaus.mojo and that custom groups from the settings are searched before these standard ones.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2972/test1/pom.xml b/core-it-suite/src/test/resources/mng-2972/test1/pom.xml
index 3a0d533..0974970 100644
--- a/core-it-suite/src/test/resources/mng-2972/test1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2972/test1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2972</name>
-  <description>
-    Verify that a project-level plugin dependency replaces the original dependency from the plugin POM.
-  </description>
+  <description>Verify that a project-level plugin dependency replaces the original dependency from the plugin POM.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,11 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <classNames>org.apache.maven.its.mng2972.MNG2972,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
+          <resourcePaths>org/apache/maven/its/mng2972/mng-2972.properties,org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
+          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+        </configuration>
         <dependencies>
           <!--
           This dependency should replace the plugins's original dependency on
@@ -53,18 +54,13 @@
             <version>0.2-mng-2972</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <classNames>org.apache.maven.its.mng2972.MNG2972,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
-          <resourcePaths>org/apache/maven/its/mng2972/mng-2972.properties,org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
-          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
-        </configuration>
         <executions>
           <execution>
             <id>load</id>
-            <phase>validate</phase>
             <goals>
               <goal>load</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2972/test2/pom.xml b/core-it-suite/src/test/resources/mng-2972/test2/pom.xml
index 1681fb7..8378346 100644
--- a/core-it-suite/src/test/resources/mng-2972/test2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2972/test2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2972</name>
-  <description>
-    Verify that a project-level plugin dependency replaces the original dependency from the plugin POM.
-  </description>
+  <description>Verify that a project-level plugin dependency replaces the original dependency from the plugin POM.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,11 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <classNames>org.apache.maven.its.mng2972.MNG2972,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
+          <resourcePaths>org/apache/maven/its/mng2972/mng-2972.properties,org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
+          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+        </configuration>
         <dependencies>
           <!--
           This dependency should replace the plugins's original dependency on
@@ -53,18 +54,13 @@
             <version>9.9-MNG-2972</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <classNames>org.apache.maven.its.mng2972.MNG2972,org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
-          <resourcePaths>org/apache/maven/its/mng2972/mng-2972.properties,org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
-          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
-        </configuration>
         <executions>
           <execution>
             <id>load</id>
-            <phase>validate</phase>
             <goals>
               <goal>load</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-2994/pom.xml b/core-it-suite/src/test/resources/mng-2994/pom.xml
index 3e7f68e..45a7ae2 100644
--- a/core-it-suite/src/test/resources/mng-2994/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2994/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-2994</name>
-  <description>
-    Test that snapshot repositories are checked for ranges with snapshot boundaries.
-  </description>
+  <description>Test that snapshot repositories are checked for ranges with snapshot boundaries.</description>
 
   <dependencies>
     <dependency>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3012/pom.xml b/core-it-suite/src/test/resources/mng-3012/pom.xml
index d7cef02..adeb149 100644
--- a/core-it-suite/src/test/resources/mng-3012/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3012/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3012</name>
-  <description>
-    Verify that classes shared with the Maven core realm are imported into the plugin realm such that instances of
-    these classes created by the core can be cast to classes loaded by the plugin.
-  </description>
+  <description>Verify that classes shared with the Maven core realm are imported into the plugin realm such that instances of
+    these classes created by the core can be cast to classes loaded by the plugin.</description>
 
   <build>
     <plugins>
@@ -38,22 +34,6 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>xpp3dom</id>
-            <phase>validate</phase>
-            <configuration>
-              <className>org.codehaus.plexus.util.xml.Xpp3Dom</className>
-              <objectExpressions>
-                <objectExpression>project/reporting/plugins/0/configuration</objectExpression>
-              </objectExpressions>
-              <instanceofPropertiesFile>target/xpp3dom.properties</instanceofPropertiesFile>
-            </configuration>
-            <goals>
-              <goal>instanceof</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <!-- put Xpp3Dom into plugin class realm to offer Maven the bad choice -->
           <dependency>
@@ -62,6 +42,22 @@
             <version>0.1-mng3012</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>xpp3dom</id>
+            <goals>
+              <goal>instanceof</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <className>org.codehaus.plexus.util.xml.Xpp3Dom</className>
+              <objectExpressions>
+                <objectExpression>project/reporting/plugins/0/configuration</objectExpression>
+              </objectExpressions>
+              <instanceofPropertiesFile>target/xpp3dom.properties</instanceofPropertiesFile>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-3023/consumer/pom.xml b/core-it-suite/src/test/resources/mng-3023/consumer/pom.xml
index a70b208..be123d0 100644
--- a/core-it-suite/src/test/resources/mng-3023/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3023/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -50,10 +48,10 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPath>${project.build.directory}/compile.classpath</compileClassPath>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-3023/dependency/pom.xml b/core-it-suite/src/test/resources/mng-3023/dependency/pom.xml
index e783f85..e3a5e4c 100644
--- a/core-it-suite/src/test/resources/mng-3023/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3023/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,6 @@
   <description>Test that reactor projects are included in dependency resolution.</description>
 
   <build>
-    <outputDirectory>dependency-classes</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -43,22 +40,22 @@
         <executions>
           <execution>
             <id>compile</id>
-            <phase>initialize</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <mainFile>dependency-classes</mainFile>
             </configuration>
           </execution>
           <execution>
             <id>install</id>
-            <phase>generate-sources</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>generate-sources</phase>
             <configuration>
               <mainFile>dependency-1.jar</mainFile>
             </configuration>
@@ -66,5 +63,6 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>dependency-classes</outputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3023/pom.xml b/core-it-suite/src/test/resources/mng-3023/pom.xml
index 23f09ce..89f2a2a 100644
--- a/core-it-suite/src/test/resources/mng-3023/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3023/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/pom.xml
index 4b9a031..8213322 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
@@ -6,6 +6,5 @@
   <version>1.0</version>
   <packaging>jar</packaging>
 
-  <dependencies>
-  </dependencies>
+  <dependencies />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/src/main/java/org/apache/maven/its/it0121/D/Foo.java b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/src/main/java/org/apache/maven/its/it0121/D/Foo.java
index 114f317..125cc54 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/src/main/java/org/apache/maven/its/it0121/D/Foo.java
+++ b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D1/src/main/java/org/apache/maven/its/it0121/D/Foo.java
@@ -1,11 +1,27 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0121.D;
 
 import java.util.Date;
 
-public class Foo
-{
-    public String getTimestamp()
-    {
+public class Foo {
+    public String getTimestamp() {
         return (new Date()).toString();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/pom.xml
index 2872226..095d751 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
@@ -6,6 +6,5 @@
   <version>2.0</version>
   <packaging>jar</packaging>
 
-  <dependencies>
-  </dependencies>
+  <dependencies />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/src/main/java/org/apache/maven/its/it0121/D/Foo.java b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/src/main/java/org/apache/maven/its/it0121/D/Foo.java
index 318f98d..015fb66 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/src/main/java/org/apache/maven/its/it0121/D/Foo.java
+++ b/core-it-suite/src/test/resources/mng-3038/test-other-deps/D2/src/main/java/org/apache/maven/its/it0121/D/Foo.java
@@ -1,16 +1,31 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0121.D;
 
+import java.text.DateFormat;
 import java.util.Date;
 import java.util.Locale;
-import java.text.DateFormat;
 
-public class Foo
-{
-    public String getTimestamp( Locale aLocale )
-    {
-        DateFormat format = DateFormat.getDateInstance(
-                DateFormat.LONG, aLocale );
+public class Foo {
+    public String getTimestamp(Locale aLocale) {
+        DateFormat format = DateFormat.getDateInstance(DateFormat.LONG, aLocale);
 
-        return format.format( new Date() );
+        return format.format(new Date());
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/A/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-project/A/pom.xml
index 21346a9..02838f1 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/A/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/A/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/A/src/main/java/org/apache/maven/its/it0121/A/App.java b/core-it-suite/src/test/resources/mng-3038/test-project/A/src/main/java/org/apache/maven/its/it0121/A/App.java
index 62ff317..acd8d2a 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/A/src/main/java/org/apache/maven/its/it0121/A/App.java
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/A/src/main/java/org/apache/maven/its/it0121/A/App.java
@@ -1,21 +1,36 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0121.A;
 
 import java.io.PrintWriter;
 
 import org.apache.maven.its.it0121.B.Out;
 
-public class App
-{
-    public static void main(String args[])
-    {
-        (new App()).output( new PrintWriter( System.out ) );
+public class App {
+    public static void main(String args[]) {
+        (new App()).output(new PrintWriter(System.out));
     }
 
-    public void output( PrintWriter writer )
-    {
-        Out out = new Out( writer );
+    public void output(PrintWriter writer) {
+        Out out = new Out(writer);
 
-        out.println( "Welcome to the org.apache.maven.its.it0121.A App." );
-        out.println( "The time is now: " + out.getTimestamp() );
+        out.println("Welcome to the org.apache.maven.its.it0121.A App.");
+        out.println("The time is now: " + out.getTimestamp());
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/A/src/test/java/org/apache/maven/its/it0121/A/AppTest.java b/core-it-suite/src/test/resources/mng-3038/test-project/A/src/test/java/org/apache/maven/its/it0121/A/AppTest.java
index ed30be6..f9ac2e1 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/A/src/test/java/org/apache/maven/its/it0121/A/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/A/src/test/java/org/apache/maven/its/it0121/A/AppTest.java
@@ -1,18 +1,34 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0121.A;
 
 import java.io.*;
+
 import junit.framework.*;
 
-public class AppTest
-    extends TestCase
-{
-    public void testOutput()
-    {
+public class AppTest extends TestCase {
+    public void testOutput() {
         App app = new App();
         StringWriter actual = new StringWriter();
-        PrintWriter writer = new PrintWriter( actual );
-        app.output( writer );
+        PrintWriter writer = new PrintWriter(actual);
+        app.output(writer);
 
-        assertTrue( actual.getBuffer().length() > 10 );
+        assertTrue(actual.getBuffer().length() > 10);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/B/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-project/B/pom.xml
index f552834..c275f2f 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/B/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/B/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/B/src/main/java/org/apache/maven/its/it0121/B/Out.java b/core-it-suite/src/test/resources/mng-3038/test-project/B/src/main/java/org/apache/maven/its/it0121/B/Out.java
index e3bbbb7..9f1d727 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/B/src/main/java/org/apache/maven/its/it0121/B/Out.java
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/B/src/main/java/org/apache/maven/its/it0121/B/Out.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it0121.B;
 
 import java.io.PrintWriter;
@@ -5,23 +23,19 @@
 
 import org.apache.maven.its.it0121.D.Foo;
 
-public class Out
-{
+public class Out {
     private PrintWriter writer;
 
-    public Out( PrintWriter writer )
-    {
+    public Out(PrintWriter writer) {
         this.writer = writer;
     }
 
-    public void println( String msg )
-    {
-        writer.println( "[Out] " + msg );
+    public void println(String msg) {
+        writer.println("[Out] " + msg);
     }
 
-    public String getTimestamp()
-    {
+    public String getTimestamp() {
         Foo foo = new Foo();
-        return foo.getTimestamp( Locale.getDefault() );
+        return foo.getTimestamp(Locale.getDefault());
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/C/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-project/C/pom.xml
index 61785cb..0bf92cf 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/C/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/C/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3038/test-project/pom.xml b/core-it-suite/src/test/resources/mng-3038/test-project/pom.xml
index 4ae5e51..41d8689 100644
--- a/core-it-suite/src/test/resources/mng-3038/test-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3038/test-project/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.it0121</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3043/consumer-a/pom.xml b/core-it-suite/src/test/resources/mng-3043/consumer-a/pom.xml
index 8eeade0..71e189c 100644
--- a/core-it-suite/src/test/resources/mng-3043/consumer-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3043/consumer-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,11 +29,9 @@
   <artifactId>consumer-a</artifactId>
 
   <name>Maven Integration Test :: MNG-3043 :: Consumer A</name>
-  <description>
-    Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
+  <description>Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
     yet, i.e. in build phases prior to "package" like "test", are satisfied from the output directories of the
-    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.
-  </description>
+    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.</description>
 
   <dependencies>
     <!-- This module depends *only* on the test JAR -->
@@ -56,12 +52,12 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
               <runtimeClassPath>target/runtime.txt</runtimeClassPath>
diff --git a/core-it-suite/src/test/resources/mng-3043/consumer-b/pom.xml b/core-it-suite/src/test/resources/mng-3043/consumer-b/pom.xml
index ae62ca3..ab98c57 100644
--- a/core-it-suite/src/test/resources/mng-3043/consumer-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3043/consumer-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,11 +29,9 @@
   <artifactId>consumer-b</artifactId>
 
   <name>Maven Integration Test :: MNG-3043 :: Consumer B</name>
-  <description>
-    Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
+  <description>Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
     yet, i.e. in build phases prior to "package" like "test", are satisfied from the output directories of the
-    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.
-  </description>
+    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.</description>
 
   <dependencies>
     <!-- This module depends *only* on the EJB client JAR -->
@@ -56,12 +52,12 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
               <runtimeClassPath>target/runtime.txt</runtimeClassPath>
diff --git a/core-it-suite/src/test/resources/mng-3043/consumer-c/pom.xml b/core-it-suite/src/test/resources/mng-3043/consumer-c/pom.xml
index 2e98337..dbb6270 100644
--- a/core-it-suite/src/test/resources/mng-3043/consumer-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3043/consumer-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,11 +29,9 @@
   <artifactId>consumer-c</artifactId>
 
   <name>Maven Integration Test :: MNG-3043 :: Consumer C</name>
-  <description>
-    Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
+  <description>Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
     yet, i.e. in build phases prior to "package" like "test", are satisfied from the output directories of the
-    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.
-  </description>
+    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.</description>
 
   <dependencies>
     <!-- This module depends on *both* artifacts -->
@@ -62,12 +58,12 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
               <runtimeClassPath>target/runtime.txt</runtimeClassPath>
diff --git a/core-it-suite/src/test/resources/mng-3043/dependency/pom.xml b/core-it-suite/src/test/resources/mng-3043/dependency/pom.xml
index f188eb0..ec3b239 100644
--- a/core-it-suite/src/test/resources/mng-3043/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3043/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,15 +30,11 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3043 :: Dependency</name>
-  <description>
-    Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
+  <description>Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
     yet, i.e. in build phases prior to "package" like "test", are satisfied from the output directories of the
-    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.
-  </description>
+    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.</description>
 
   <build>
-    <outputDirectory>classes-main</outputDirectory>
-    <testOutputDirectory>classes-test</testOutputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -50,10 +44,10 @@
           <execution>
             <!-- mimic creation of test JAR -->
             <id>package-test-jar</id>
-            <phase>package</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <attachedFile>classes-test/tests.jar</attachedFile>
               <artifactType>test-jar</artifactType>
@@ -63,10 +57,10 @@
           <execution>
             <!-- mimic creation of EJB client JAR -->
             <id>package-ejb-client-jar</id>
-            <phase>package</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <attachedFile>classes-main/client.jar</attachedFile>
               <artifactType>ejb-client</artifactType>
@@ -76,5 +70,7 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>classes-main</outputDirectory>
+    <testOutputDirectory>classes-test</testOutputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3043/pom.xml b/core-it-suite/src/test/resources/mng-3043/pom.xml
index 40cb56e..48e6612 100644
--- a/core-it-suite/src/test/resources/mng-3043/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3043/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3043</name>
-  <description>
-    Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
+  <description>Test that dependencies on attached artifacts like a test JAR or an EJB client JAR which have not been built
     yet, i.e. in build phases prior to "package" like "test", are satisfied from the output directories of the
-    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.
-  </description>
+    projects in the reactor. This is meant as a best effort to provide a class path for compilation or testing.</description>
 
   <modules>
     <module>dependency</module>
diff --git a/core-it-suite/src/test/resources/mng-3052/pom.xml b/core-it-suite/src/test/resources/mng-3052/pom.xml
index 4a0c805..89bbfaa 100644
--- a/core-it-suite/src/test/resources/mng-3052/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3052/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3052</name>
-  <description>
-    Test that the artifact collector considers repositories listed in dependency POMs when collecting transitive
-    dependencies, especially snapshot versions.
-  </description>
+  <description>Test that the artifact collector considers repositories listed in dependency POMs when collecting transitive
+    dependencies, especially snapshot versions.</description>
 
   <dependencies>
     <dependency>
@@ -51,10 +47,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3092/pom.xml b/core-it-suite/src/test/resources/mng-3092/pom.xml
index 1acb82b..bc04001 100644
--- a/core-it-suite/src/test/resources/mng-3092/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3092/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3092</name>
-  <description>
-    Verify that snapshots are not included in version ranges unless explicitly declared as the lower/upper bound
-    of the range.
-  </description>
+  <description>Verify that snapshots are not included in version ranges unless explicitly declared as the lower/upper bound
+    of the range.</description>
 
   <dependencies>
     <dependency>
@@ -63,10 +59,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3118/pom.xml b/core-it-suite/src/test/resources/mng-3118/pom.xml
index c63c1e0..dc78255 100644
--- a/core-it-suite/src/test/resources/mng-3118/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3118/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3118</name>
-  <description>
-    Check that test classes appear before main classes on the test class path.
-  </description>
+  <description>Check that test classes appear before main classes on the test class path.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3122/pom.xml b/core-it-suite/src/test/resources/mng-3122/pom.xml
index d895e3a..352ee63 100644
--- a/core-it-suite/src/test/resources/mng-3122/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3122/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3122</name>
-  <description>
-    Verify that MavenProject.getActiveProfiles() reports profiles from the settings.xml with activeByDefault=true
-    only once.
-  </description>
+  <description>Verify that MavenProject.getActiveProfiles() reports profiles from the settings.xml with activeByDefault=true
+    only once.</description>
 
   <build>
     <plugins>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3133/child/pom.xml b/core-it-suite/src/test/resources/mng-3133/child/pom.xml
index 60c3030..e016088 100644
--- a/core-it-suite/src/test/resources/mng-3133/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3133/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,11 +32,9 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3133 :: Child</name>
-  <description>
-    Verify that URL normalization does not happen before interpolation which would result in invalid
+  <description>Verify that URL normalization does not happen before interpolation which would result in invalid
     inherited URLs for project layouts where the parent resides in a sibling directory of the child
-    and expressions are used for the parent URLs ("${expression}/../foo" -> "foo").
-  </description>
+    and expressions are used for the parent URLs ("${expression}/../foo" -&gt; "foo").</description>
 
   <properties>
     <!-- these check that the normalized URL is already available during interpolation -->
@@ -67,10 +63,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3133/parent/pom.xml b/core-it-suite/src/test/resources/mng-3133/parent/pom.xml
index 868db7f..d00d9e3 100644
--- a/core-it-suite/src/test/resources/mng-3133/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3133/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,27 +26,19 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3133</name>
-  <description>
-    Verify that URL normalization does not happen before interpolation which would result in invalid
+  <description>Verify that URL normalization does not happen before interpolation which would result in invalid
     inherited URLs for project layouts where the parent resides in a sibling directory of the child
-    and expressions are used for the parent URLs ("${expression}/../foo" -> "foo").
-  </description>
+    and expressions are used for the parent URLs ("${expression}/../foo" -&gt; "foo").</description>
+
+  <url>${webUrl}</url>
 
   <modules>
     <module>../child</module>
   </modules>
-
-  <properties>
-    <webUrl>http://server.org/project</webUrl>
-    <scmUrl>scm:svn:https://svn.org/project</scmUrl>
-    <siteUrl>dav://server.org/project</siteUrl>
-  </properties>
-
-  <url>${webUrl}</url>
   <scm>
-    <url>${scmUrl}</url>
     <connection>${scmUrl}</connection>
     <developerConnection>${scmUrl}</developerConnection>
+    <url>${scmUrl}</url>
   </scm>
   <distributionManagement>
     <site>
@@ -56,4 +46,10 @@
       <url>${siteUrl}</url>
     </site>
   </distributionManagement>
+
+  <properties>
+    <webUrl>http://server.org/project</webUrl>
+    <scmUrl>scm:svn:https://svn.org/project</scmUrl>
+    <siteUrl>dav://server.org/project</siteUrl>
+  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3139/pom.xml b/core-it-suite/src/test/resources/mng-3139/pom.xml
index 7d41269..4438911 100644
--- a/core-it-suite/src/test/resources/mng-3139/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3139/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3139</name>
-  <description>
-    Test that locally cached metadata of blacklisted repositories is consulted to resolve metaversions.
-  </description>
+  <description>Test that locally cached metadata of blacklisted repositories is consulted to resolve metaversions.</description>
 
   <dependencies>
     <dependency>
@@ -50,10 +46,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3183/pom.xml b/core-it-suite/src/test/resources/mng-3183/pom.xml
index 2551a58..c37d8cc 100644
--- a/core-it-suite/src/test/resources/mng-3183/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3183/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,7 +25,5 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3183</name>
-  <description>
-    Test that the CLI parameter -l can be used to direct logging to a file.
-  </description>
+  <description>Test that the CLI parameter -l can be used to direct logging to a file.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3203/pom.xml b/core-it-suite/src/test/resources/mng-3203/pom.xml
index b787809..d6d807f 100644
--- a/core-it-suite/src/test/resources/mng-3203/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3203/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3203</groupId>
   <artifactId>mng-3203</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/App.java b/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/App.java
index 5fd389e..569e063 100644
--- a/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/App.java
+++ b/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/App.java
@@ -1,16 +1,32 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it.mng3203;
 
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
+public class App {
+    public static void main(String[] args) {
         List<String> stuff = new ArrayList<String>();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/Diamond.java b/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/Diamond.java
index c886881..ff78a35 100644
--- a/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/Diamond.java
+++ b/core-it-suite/src/test/resources/mng-3203/src/main/java/org/apache/maven/it/mng3203/Diamond.java
@@ -1,16 +1,32 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it.mng3203;
 
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Hello world!
  *
  */
-public class Diamond
-{
-    public static void main( String[] args )
-    {
+public class Diamond {
+    public static void main(String[] args) {
         List<String> stuff = new ArrayList<>();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3208/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-3208/mod-a/pom.xml
index 77471ae..7f7a5e3 100644
--- a/core-it-suite/src/test/resources/mng-3208/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3208/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3208 :: Mod-A</name>
-  <description>
-    Verify that project sorting considers dependencies injected by profiles.
-  </description>
+  <description>Verify that project sorting considers dependencies injected by profiles.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>first</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3208/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-3208/mod-b/pom.xml
index 3d08bf4..c154032 100644
--- a/core-it-suite/src/test/resources/mng-3208/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3208/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3208 :: Mod-B</name>
-  <description>
-    Verify that project sorting considers dependencies injected by profiles.
-  </description>
+  <description>Verify that project sorting considers dependencies injected by profiles.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>first</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3208/pom.xml b/core-it-suite/src/test/resources/mng-3208/pom.xml
index 3d83136..3745c41 100644
--- a/core-it-suite/src/test/resources/mng-3208/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3208/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3208</name>
-  <description>
-    Verify that project sorting considers dependencies injected by profiles.
-  </description>
+  <description>Verify that project sorting considers dependencies injected by profiles.</description>
 
   <modules>
     <!-- NOTE: Deliberately put in reverse order of expected build order -->
diff --git a/core-it-suite/src/test/resources/mng-3217/pom.xml b/core-it-suite/src/test/resources/mng-3217/pom.xml
index b6b8981..f250310 100644
--- a/core-it-suite/src/test/resources/mng-3217/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3217/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3217</name>
-  <description>
-    Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
-    reactor that uses a different version of plugin B for normal build tasks.
-  </description>
+  <description>Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
+    reactor that uses a different version of plugin B for normal build tasks.</description>
 
   <modules>
     <module>sub-1</module>
diff --git a/core-it-suite/src/test/resources/mng-3217/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-3217/sub-1/pom.xml
index 8a70d2b..2d113b0 100644
--- a/core-it-suite/src/test/resources/mng-3217/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3217/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3217 :: Module 1</name>
-  <description>
-    Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
-    reactor that uses a different version of plugin B for normal build tasks.
-  </description>
+  <description>Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
+    reactor that uses a different version of plugin B for normal build tasks.</description>
 
   <build>
     <plugins>
@@ -47,15 +43,6 @@
         <configuration>
           <logFile>target/touch-1.txt</logFile>
         </configuration>
-        <executions>
-          <execution>
-            <id>test-1</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>reset</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <!-- In broken Maven versions, this dependency screws up the plugin container used in the other module -->
           <dependency>
@@ -65,6 +52,15 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>test-1</id>
+            <goals>
+              <goal>reset</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-3217/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-3217/sub-2/pom.xml
index df36dec..fb2e6e5 100644
--- a/core-it-suite/src/test/resources/mng-3217/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3217/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3217 :: Module 2</name>
-  <description>
-    Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
-    reactor that uses a different version of plugin B for normal build tasks.
-  </description>
+  <description>Verify that the dependency of plugin A on some plugin B does not influence the build of another module in the
+    reactor that uses a different version of plugin B for normal build tasks.</description>
 
   <build>
     <plugins>
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3220/depMgmt-pom-module-notImported/pom.xml b/core-it-suite/src/test/resources/mng-3220/depMgmt-pom-module-notImported/pom.xml
index d5e026c..ad64279 100644
--- a/core-it-suite/src/test/resources/mng-3220/depMgmt-pom-module-notImported/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3220/depMgmt-pom-module-notImported/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3220</groupId>
@@ -29,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3220</name>
-  <description>
-    Verify that the dependency management from a dependency of type "pom" but without scope "import" does not
-    contribute to this project's dependency management.
-  </description>
+  <description>Verify that the dependency management from a dependency of type "pom" but without scope "import" does not
+    contribute to this project's dependency management.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3220/imported-pom-depMgmt/pom.xml b/core-it-suite/src/test/resources/mng-3220/imported-pom-depMgmt/pom.xml
index 3881d07..5601722 100644
--- a/core-it-suite/src/test/resources/mng-3220/imported-pom-depMgmt/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3220/imported-pom-depMgmt/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -36,10 +33,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3220</name>
-  <description>
-    Verify that the dependency management from a dependency of type "pom" and with scope "import" contributes to
-    this project's dependency management.
-  </description>
+  <description>Verify that the dependency management from a dependency of type "pom" and with scope "import" contributes to
+    this project's dependency management.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3259/module1/pom.xml b/core-it-suite/src/test/resources/mng-3259/module1/pom.xml
index 9d230df..86bf57d 100644
--- a/core-it-suite/src/test/resources/mng-3259/module1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/module1/pom.xml
@@ -1,38 +1,35 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>parent</artifactId>
-      <version>1-SNAPSHOT</version>
-  </parent>  
-  
-    <modelVersion>4.0.0</modelVersion>
     <groupId>org.codehaus.jira.mng.XXX</groupId>
-    <artifactId>mng-module1-XXX</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-    <name>Module-1 XXX</name>
-    <description><![CDATA[Module 1 of issue XXX.]]></description>
+    <artifactId>parent</artifactId>
+    <version>1-SNAPSHOT</version>
+  </parent>
+  <groupId>org.codehaus.jira.mng.XXX</groupId>
+  <artifactId>mng-module1-XXX</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>Module-1 XXX</name>
+  <description><![CDATA[Module 1 of issue XXX.]]></description>
 
-    <dependencies>
-        <dependency>
-            <groupId>com.thoughtworks.xstream</groupId>
-            <artifactId>xstream</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>jmock</groupId>
-            <artifactId>jmock</artifactId>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>compile</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>com.thoughtworks.xstream</groupId>
+      <artifactId>xstream</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>jmock</groupId>
+      <artifactId>jmock</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3259/module1/src/main/java/mng/XStreamTestCase.java b/core-it-suite/src/test/resources/mng-3259/module1/src/main/java/mng/XStreamTestCase.java
index 10c430f..cf60030 100644
--- a/core-it-suite/src/test/resources/mng-3259/module1/src/main/java/mng/XStreamTestCase.java
+++ b/core-it-suite/src/test/resources/mng-3259/module1/src/main/java/mng/XStreamTestCase.java
@@ -1,24 +1,39 @@
+/*
+ * 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.
+ */
 package mng;
 
-import junit.framework.TestCase;
 import com.thoughtworks.xstream.XStream;
 import org.jmock.MockObjectTestCase;
 
-public abstract class XStreamTestCase extends MockObjectTestCase
-{
+public abstract class XStreamTestCase extends MockObjectTestCase {
     private XStream xstream;
 
-    public void setUp()
-    {
+    public void setUp() {
         xstream = new XStream();
     }
 
-    public void testToXml()
-    {
+    public void testToXml() {
         String xml = xstream.toXML(getObject());
         assertEquals(getXML(), xml);
     }
 
     protected abstract Object getObject();
+
     protected abstract String getXML();
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module2/pom.xml b/core-it-suite/src/test/resources/mng-3259/module2/pom.xml
index 255a5ec..816bc49 100644
--- a/core-it-suite/src/test/resources/mng-3259/module2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/module2/pom.xml
@@ -1,33 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>parent</artifactId>
-      <version>1-SNAPSHOT</version>
-  </parent>  
-  
-    <modelVersion>4.0.0</modelVersion>
     <groupId>org.codehaus.jira.mng.XXX</groupId>
-    <artifactId>mng-module2-XXX</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-    <name>Module-2 XXX</name>
-    <description><![CDATA[Module 2 of issue XXX.]]></description>
+    <artifactId>parent</artifactId>
+    <version>1-SNAPSHOT</version>
+  </parent>
+  <groupId>org.codehaus.jira.mng.XXX</groupId>
+  <artifactId>mng-module2-XXX</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>Module-2 XXX</name>
+  <description><![CDATA[Module 2 of issue XXX.]]></description>
 
-    <dependencies>
-        <dependency>
-            <groupId>com.thoughtworks.xstream</groupId>
-            <artifactId>xstream</artifactId>
-        </dependency>
-        <!-- for test -->
-        <dependency>
-             <groupId>org.codehaus.jira.mng.XXX</groupId>
-             <artifactId>mng-module1-XXX</artifactId>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>com.thoughtworks.xstream</groupId>
+      <artifactId>xstream</artifactId>
+    </dependency>
+    <!-- for test -->
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module1-XXX</artifactId>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3259/module2/src/main/java/mng/Module2.java b/core-it-suite/src/test/resources/mng-3259/module2/src/main/java/mng/Module2.java
index 10cce09..4c2cce7 100644
--- a/core-it-suite/src/test/resources/mng-3259/module2/src/main/java/mng/Module2.java
+++ b/core-it-suite/src/test/resources/mng-3259/module2/src/main/java/mng/Module2.java
@@ -1,8 +1,25 @@
+/*
+ * 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.
+ */
 package mng;
 
 import com.thoughtworks.xstream.XStream;
 
-public class Module2
-{
+public class Module2 {
     XStream xstream;
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module3/pom.xml b/core-it-suite/src/test/resources/mng-3259/module3/pom.xml
index d2ef020..401bf96 100644
--- a/core-it-suite/src/test/resources/mng-3259/module3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/module3/pom.xml
@@ -1,22 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>parent</artifactId>
-      <version>1-SNAPSHOT</version>
-  </parent>  
-  
-    <modelVersion>4.0.0</modelVersion>
     <groupId>org.codehaus.jira.mng.XXX</groupId>
-    <artifactId>mng-module3-XXX</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-    <name>Module-3 XXX</name>
-    <description><![CDATA[Module 3 of issue XXX.]]></description>
+    <artifactId>parent</artifactId>
+    <version>1-SNAPSHOT</version>
+  </parent>
+  <groupId>org.codehaus.jira.mng.XXX</groupId>
+  <artifactId>mng-module3-XXX</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>Module-3 XXX</name>
+  <description><![CDATA[Module 3 of issue XXX.]]></description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module2-XXX</artifactId>
+    </dependency>
+    <!-- for test -->
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module1-XXX</artifactId>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
@@ -34,16 +43,4 @@
     </plugins>
   </build>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>mng-module2-XXX</artifactId>
-    </dependency>
-    <!-- for test -->
-    <dependency>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>mng-module1-XXX</artifactId>
-    </dependency>
-  </dependencies>
-
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3259/module3/src/main/java/mng/Module3.java b/core-it-suite/src/test/resources/mng-3259/module3/src/main/java/mng/Module3.java
index 5de0a84..4b4a997 100644
--- a/core-it-suite/src/test/resources/mng-3259/module3/src/main/java/mng/Module3.java
+++ b/core-it-suite/src/test/resources/mng-3259/module3/src/main/java/mng/Module3.java
@@ -1,6 +1,23 @@
+/*
+ * 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.
+ */
 package mng;
 
-public class Module3 extends Module2
-{
+public class Module3 extends Module2 {
     public static String MODULE = "3";
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module3/src/test/java/mng/Module3TestUtil.java b/core-it-suite/src/test/resources/mng-3259/module3/src/test/java/mng/Module3TestUtil.java
index 1db1abf..82debc9 100644
--- a/core-it-suite/src/test/resources/mng-3259/module3/src/test/java/mng/Module3TestUtil.java
+++ b/core-it-suite/src/test/resources/mng-3259/module3/src/test/java/mng/Module3TestUtil.java
@@ -1,13 +1,30 @@
+/*
+ * 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.
+ */
 package mng;
 
 import java.util.Calendar;
+
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
-public class Module3TestUtil
-{
-    public static String getCalendarAsXML(Calendar cal)
-    {
+public class Module3TestUtil {
+    public static String getCalendarAsXML(Calendar cal) {
         XStream xstream = new XStream(new DomDriver());
         return xstream.toXML(cal);
     }
diff --git a/core-it-suite/src/test/resources/mng-3259/module4/pom.xml b/core-it-suite/src/test/resources/mng-3259/module4/pom.xml
index 9c35719..c9b627f 100644
--- a/core-it-suite/src/test/resources/mng-3259/module4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/module4/pom.xml
@@ -1,22 +1,35 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>parent</artifactId>
-      <version>1-SNAPSHOT</version>
-  </parent>  
-  
-    <modelVersion>4.0.0</modelVersion>
     <groupId>org.codehaus.jira.mng.XXX</groupId>
-    <artifactId>mng-module4-XXX</artifactId>
-    <packaging>ejb</packaging>
-    <version>1.0-SNAPSHOT</version>
-    <name>Module-4 XXX</name>
-    <description><![CDATA[Module 4 of issue XXX.]]></description>
+    <artifactId>parent</artifactId>
+    <version>1-SNAPSHOT</version>
+  </parent>
+  <groupId>org.codehaus.jira.mng.XXX</groupId>
+  <artifactId>mng-module4-XXX</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>ejb</packaging>
+  <name>Module-4 XXX</name>
+  <description><![CDATA[Module 4 of issue XXX.]]></description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module3-XXX</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>jboss</groupId>
+      <artifactId>jboss-j2ee</artifactId>
+    </dependency>
+    <!-- for test -->
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module1-XXX</artifactId>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
@@ -40,20 +53,4 @@
     </plugins>
   </build>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>mng-module3-XXX</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>jboss</groupId>
-      <artifactId>jboss-j2ee</artifactId>
-    </dependency>
-    <!-- for test -->
-    <dependency>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>mng-module1-XXX</artifactId>
-    </dependency>
-  </dependencies>
-
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4.java b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4.java
index dab8c1b..33c7fee 100644
--- a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4.java
+++ b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4.java
@@ -1,15 +1,30 @@
+/*
+ * 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.
+ */
 package mng;
 
-import java.rmi.RemoteException;
-import javax.ejb.CreateException;
 import javax.ejb.EJBObject;
 
+import java.rmi.RemoteException;
 
 /**
  * An EJB for Module4
  */
-public interface Module4 extends EJBObject
-{
+public interface Module4 extends EJBObject {
     public boolean doIt() throws RemoteException;
 }
-
diff --git a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Bean.java b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Bean.java
index fb91a3e..f1387ac 100644
--- a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Bean.java
+++ b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Bean.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package mng;
 
 import javax.ejb.CreateException;
@@ -7,30 +25,18 @@
 /**
  * An EJB for Module4
  */
-public class Module4Bean implements SessionBean
-{
-    public void ejbCreate() throws CreateException
-    {
-    }
+public class Module4Bean implements SessionBean {
+    public void ejbCreate() throws CreateException {}
 
-    public void ejbRemove()
-    {
-    }
+    public void ejbRemove() {}
 
-    public void ejbActivate()
-    {
-    }
+    public void ejbActivate() {}
 
-    public void ejbPassivate()
-    {
-    }
+    public void ejbPassivate() {}
 
-    public void setSessionContext(SessionContext sessionContext)
-    {
-    }
+    public void setSessionContext(SessionContext sessionContext) {}
 
-    public boolean doIt()
-    {
+    public boolean doIt() {
         return true;
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Home.java b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Home.java
index d3527b2..1dca6db 100644
--- a/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Home.java
+++ b/core-it-suite/src/test/resources/mng-3259/module4/src/main/java/mng/Module4Home.java
@@ -1,15 +1,29 @@
+/*
+ * 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.
+ */
 package mng;
 
 /**
  * Home interface for Module4.
  */
-public interface Module4Home
-   extends javax.ejb.EJBHome
-{
-   public static final String COMP_NAME="java:comp/env/ejb/Module4";
-   public static final String JNDI_NAME="mng/Module4";
+public interface Module4Home extends javax.ejb.EJBHome {
+    public static final String COMP_NAME = "java:comp/env/ejb/Module4";
+    public static final String JNDI_NAME = "mng/Module4";
 
-   public Module4 create()
-      throws javax.ejb.CreateException,java.rmi.RemoteException;
-
+    public Module4 create() throws javax.ejb.CreateException, java.rmi.RemoteException;
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module5/pom.xml b/core-it-suite/src/test/resources/mng-3259/module5/pom.xml
index c8f1827..334faf2 100644
--- a/core-it-suite/src/test/resources/mng-3259/module5/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/module5/pom.xml
@@ -1,21 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>org.codehaus.jira.mng.XXX</groupId>
-      <artifactId>parent</artifactId>
-      <version>1-SNAPSHOT</version>
-  </parent>  
-  
-  <modelVersion>4.0.0</modelVersion>
+    <groupId>org.codehaus.jira.mng.XXX</groupId>
+    <artifactId>parent</artifactId>
+    <version>1-SNAPSHOT</version>
+  </parent>
   <groupId>org.codehaus.jira.mng.XXX</groupId>
   <artifactId>mng-module5-XXX</artifactId>
+  <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>Module-5 XXX</name>
-  <version>1.0-SNAPSHOT</version>
   <description><![CDATA[Module 5 of issue XXX.]]></description>
 
   <dependencies>
@@ -33,10 +30,10 @@
         </exclusion>
       </exclusions>
     </dependency>
-      <dependency>
-        <groupId>org.codehaus.jira.mng.XXX</groupId>
-        <artifactId>mng-module4-XXX</artifactId>
-        <type>ejb-client</type>
+    <dependency>
+      <groupId>org.codehaus.jira.mng.XXX</groupId>
+      <artifactId>mng-module4-XXX</artifactId>
+      <type>ejb-client</type>
       <exclusions>
         <exclusion>
           <groupId>com.thoughtworks.xstream</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3259/module5/src/main/java/mng/Module5.java b/core-it-suite/src/test/resources/mng-3259/module5/src/main/java/mng/Module5.java
index 4fb0b26..ffd1d16 100644
--- a/core-it-suite/src/test/resources/mng-3259/module5/src/main/java/mng/Module5.java
+++ b/core-it-suite/src/test/resources/mng-3259/module5/src/main/java/mng/Module5.java
@@ -1,6 +1,23 @@
+/*
+ * 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.
+ */
 package mng;
 
-public class Module5
-{
+public class Module5 {
     private Module4 m4;
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/module5/src/test/java/mng/Module5Test.java b/core-it-suite/src/test/resources/mng-3259/module5/src/test/java/mng/Module5Test.java
index 0197166..f09c34e 100644
--- a/core-it-suite/src/test/resources/mng-3259/module5/src/test/java/mng/Module5Test.java
+++ b/core-it-suite/src/test/resources/mng-3259/module5/src/test/java/mng/Module5Test.java
@@ -1,23 +1,37 @@
+/*
+ * 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.
+ */
 package mng;
 
 import java.util.Calendar;
 
-public class Module5Test extends XStreamTestCase
-{
+public class Module5Test extends XStreamTestCase {
     private Calendar cal = Calendar.getInstance();
 
-    protected Object getObject()
-    {
+    protected Object getObject() {
         return cal;
     }
 
-    protected String getXML()
-    {
-        return Module3TestUtil.getCalendarAsXML( cal );
+    protected String getXML() {
+        return Module3TestUtil.getCalendarAsXML(cal);
     }
 
-    public void testJMockAvailable()
-    {
-        assertNotNull( mock( Module4.class ) );
+    public void testJMockAvailable() {
+        assertNotNull(mock(Module4.class));
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3259/parent/pom.xml b/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
index b497e6c..70296b5 100644
--- a/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
@@ -1,16 +1,82 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.codehaus.jira.mng.XXX</groupId>
-    <artifactId>parent</artifactId>
-    <packaging>pom</packaging>
-    <name>Parent POM for issue</name>
-    <version>1-SNAPSHOT</version>
-    <inceptionYear>2007</inceptionYear>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.codehaus.jira.mng.XXX</groupId>
+  <artifactId>parent</artifactId>
+  <version>1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Parent POM for issue</name>
+  <inceptionYear>2007</inceptionYear>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module1-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module2-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module3-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module3-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module4-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <type>ejb</type>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jira.mng.XXX</groupId>
+        <artifactId>mng-module4-XXX</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <type>ejb-client</type>
+      </dependency>
+
+      <dependency>
+        <groupId>jboss</groupId>
+        <artifactId>jboss-j2ee</artifactId>
+        <version>3.2.3</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>xpp3</groupId>
+        <artifactId>xpp3_min</artifactId>
+        <version>1.1.3.4.O</version>
+      </dependency>
+      <dependency>
+        <groupId>com.thoughtworks.xstream</groupId>
+        <artifactId>xstream</artifactId>
+        <version>1.4.15</version>
+      </dependency>
+      <dependency>
+        <groupId>jmock</groupId>
+        <artifactId>jmock</artifactId>
+        <version>1.2.0</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>3.8.2</version>
+        <scope>test</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 
   <build>
     <pluginManagement>
@@ -29,73 +95,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module1-XXX</artifactId>
-                <version>1.0-SNAPSHOT</version>
-        <scope>test</scope>
-            </dependency>
-            <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module2-XXX</artifactId>
-                <version>1.0-SNAPSHOT</version>
-            </dependency>
-            <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module3-XXX</artifactId>
-                <version>1.0-SNAPSHOT</version>
-            </dependency>
-      <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module3-XXX</artifactId>
-        <type>test-jar</type>
-        <scope>test</scope>
-                <version>1.0-SNAPSHOT</version>
-      </dependency>
-            <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module4-XXX</artifactId>
-                <version>1.0-SNAPSHOT</version>
-        <type>ejb</type>
-            </dependency>
-            <dependency>
-          <groupId>org.codehaus.jira.mng.XXX</groupId>
-          <artifactId>mng-module4-XXX</artifactId>
-                <version>1.0-SNAPSHOT</version>
-        <type>ejb-client</type>
-            </dependency>
-
-      <dependency>
-        <groupId>jboss</groupId>
-        <artifactId>jboss-j2ee</artifactId>
-        <version>3.2.3</version>
-        <scope>provided</scope>
-      </dependency>
-            <dependency>
-              <groupId>xpp3</groupId>
-                <artifactId>xpp3_min</artifactId>
-                <version>1.1.3.4.O</version>
-            </dependency>
-            <dependency>
-              <groupId>com.thoughtworks.xstream</groupId>
-                <artifactId>xstream</artifactId>
-                <version>1.4.15</version>
-            </dependency>
-            <dependency>
-              <groupId>jmock</groupId>
-                <artifactId>jmock</artifactId>
-                <version>1.2.0</version>
-        <scope>test</scope>
-            </dependency>
-          <dependency>
-              <groupId>junit</groupId>
-              <artifactId>junit</artifactId>
-        <version>3.8.2</version>
-        <scope>test</scope>
-          </dependency>
-      </dependencies>
-    </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3259/pom.xml b/core-it-suite/src/test/resources/mng-3259/pom.xml
index bb17a50..7f8b3e4 100644
--- a/core-it-suite/src/test/resources/mng-3259/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/pom.xml
@@ -1,22 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.codehaus.jira.mng</groupId>
-    <artifactId>builder</artifactId>
-    <packaging>pom</packaging>
-    <name>Builder POM for issue XXX</name>
-    <version>1-SNAPSHOT</version>
-    <inceptionYear>2007</inceptionYear>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.codehaus.jira.mng</groupId>
+  <artifactId>builder</artifactId>
+  <version>1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Builder POM for issue XXX</name>
+  <inceptionYear>2007</inceptionYear>
 
-    <modules>
-        <module>module1</module>
-        <module>module2</module>
-        <module>module3</module>
-        <module>module4</module>
-        <module>module5</module>
-    </modules>
+  <modules>
+    <module>module1</module>
+    <module>module2</module>
+    <module>module3</module>
+    <module>module4</module>
+    <module>module5</module>
+  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3268/pom.xml b/core-it-suite/src/test/resources/mng-3268/pom.xml
index d3ed904..079bb79 100644
--- a/core-it-suite/src/test/resources/mng-3268/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3268/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3268</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3284/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-3284/mod-a/pom.xml
index bfb683e..c4c8c3a 100644
--- a/core-it-suite/src/test/resources/mng-3284/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3284/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -45,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>version</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3284/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-3284/mod-b/pom.xml
index 6c7f0f0..94898da 100644
--- a/core-it-suite/src/test/resources/mng-3284/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3284/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -45,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>version</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3284/pom.xml b/core-it-suite/src/test/resources/mng-3284/pom.xml
index c0f83aa..e8cd173 100644
--- a/core-it-suite/src/test/resources/mng-3284/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3284/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3284</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3284 :: Parent</name>
-  <description>
-    Verify that the effective plugin versions used for a project are not influenced by other instances of this
-    plugin in the reactor, i.e. each module gets exactly the plugin version it declares.
-  </description>
+  <description>Verify that the effective plugin versions used for a project are not influenced by other instances of this
+    plugin in the reactor, i.e. each module gets exactly the plugin version it declares.</description>
 
   <modules>
     <module>mod-a</module>
diff --git a/core-it-suite/src/test/resources/mng-3288/pom.xml b/core-it-suite/src/test/resources/mng-3288/pom.xml
index 259c49b..44733f7 100644
--- a/core-it-suite/src/test/resources/mng-3288/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3288/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3288</name>
-  <description>
-    Test the use of a system scoped dependency to a directory instead of a JAR which should fail early.
-  </description>
+  <description>Test the use of a system scoped dependency to a directory instead of a JAR which should fail early.</description>
 
   <dependencies>
     <dependency>
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3297/pom.xml b/core-it-suite/src/test/resources/mng-3297/pom.xml
index 1952cd1..eee41bb 100644
--- a/core-it-suite/src/test/resources/mng-3297/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3297/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3297</name>
-  <description>
-    Test that project dependencies resolved for one mojo are not exposed to another mojo if the latter
-    does not require dependency resolution.
-  </description>
+  <description>Test that project dependencies resolved for one mojo are not exposed to another mojo if the latter
+    does not require dependency resolution.</description>
 
   <dependencies>
     <dependency>
@@ -50,10 +46,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
@@ -67,10 +63,10 @@
         <executions>
           <execution>
             <id>no-resolve</id>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/artifact.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3314/pom.xml b/core-it-suite/src/test/resources/mng-3314/pom.xml
index 81033b6..02a20e8 100644
--- a/core-it-suite/src/test/resources/mng-3314/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3314/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3314</name>
-  <description>
-    Verify that snapshot dependencies which are scheduled for an update don't fail the build when in offline mode.
-  </description>
+  <description>Verify that snapshot dependencies which are scheduled for an update don't fail the build when in offline mode.</description>
 
   <dependencies>
     <!-- This has been deployed using uniqueVersion=false, it's the most prominent problem case -->
@@ -58,10 +54,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/mng3331-child/pom.xml b/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/mng3331-child/pom.xml
index c1a54f9..8dc41d1 100644
--- a/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/mng3331-child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/mng3331-child/pom.xml
@@ -1,14 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng3331</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
     <relativePath>../parent/pom.xml</relativePath>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3331</groupId>
   <artifactId>mng3331-child</artifactId>
-  <name>mng3331-child</name>
   <version>1</version>
   <packaging>pom</packaging>
-</project>
\ No newline at end of file
+  <name>mng3331-child</name>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/parent/pom.xml b/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/parent/pom.xml
index 22052b4..5134d22 100644
--- a/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3331/with-relative-parentDir-ref/parent/pom.xml
@@ -3,11 +3,11 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3331</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
   <name>MNG-3331 Parent</name>
 
   <modules>
     <module>../mng3331-child</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3331/with-spaces/mng3331 child/pom.xml b/core-it-suite/src/test/resources/mng-3331/with-spaces/mng3331 child/pom.xml
index 2a74f4c..ba4587b 100644
--- a/core-it-suite/src/test/resources/mng-3331/with-spaces/mng3331 child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3331/with-spaces/mng3331 child/pom.xml
@@ -1,13 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng3331</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3331</groupId>
   <artifactId>mng3331-child</artifactId>
-  <name>mng3331-child</name>
   <version>1</version>
   <packaging>pom</packaging>
-</project>
\ No newline at end of file
+  <name>mng3331-child</name>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3331/with-spaces/pom.xml b/core-it-suite/src/test/resources/mng-3331/with-spaces/pom.xml
index 196ca1c..2c42556 100644
--- a/core-it-suite/src/test/resources/mng-3331/with-spaces/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3331/with-spaces/pom.xml
@@ -3,11 +3,11 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3331</groupId>
   <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
   <name>MNG-3331 Parent</name>
 
   <modules>
     <module>mng3331 child</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3355/pom.xml b/core-it-suite/src/test/resources/mng-3355/pom.xml
index f997525..9f210f6 100644
--- a/core-it-suite/src/test/resources/mng-3355/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3355/pom.xml
@@ -1,8 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng2339</groupId>
   <artifactId>translated-path-property-expression-interpolation</artifactId>
   <version>1</version>
+  <properties>
+    <myDirectory>${project.build.directory}/foo</myDirectory>
+  </properties>
   <build>
     <plugins>
       <plugin>
@@ -19,7 +23,4 @@
       </plugin>
     </plugins>
   </build>
-  <properties>
-    <myDirectory>${project.build.directory}/foo</myDirectory>
-  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml b/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
index e3ba854..915b8e1 100644
--- a/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0"?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3372</groupId>
@@ -12,7 +11,7 @@
       <artifactId>maven-core</artifactId>
       <version>3.8.6</version>
     </dependency>
-  
+
     <!-- These are directly from MNG-3372, but we need something that can actually resolve.
     <dependency>
       <groupId>commons-beanutils</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
index 5e5b260..be88702 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3372</groupId>
   <artifactId>mng3372-maven-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/src/main/java/org/plugin/TestMojo.java b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/src/main/java/org/plugin/TestMojo.java
index 796f1bb..8b2326f 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/src/main/java/org/plugin/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/src/main/java/org/plugin/TestMojo.java
@@ -1,20 +1,36 @@
+/*
+ * 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.
+ */
 package org.plugin;
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
 import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
 /**
  * @goal test
  */
-public class TestMojo
-    implements Mojo
-{
+public class TestMojo implements Mojo {
 
     private Log log;
 
@@ -25,44 +41,31 @@
      */
     private File buildDir;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        File outFile = new File( buildDir, "out.txt" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        File outFile = new File(buildDir, "out.txt");
         FileWriter writer = null;
-        try
-        {
+        try {
             outFile.getParentFile().mkdirs();
 
-            writer = new FileWriter( outFile );
-            writer.write( "Test" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to write: " + outFile.getAbsolutePath(), e );
-        }
-        finally
-        {
-            if ( writer != null )
-            {
-                try
-                {
+            writer = new FileWriter(outFile);
+            writer.write("Test");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to write: " + outFile.getAbsolutePath(), e);
+        } finally {
+            if (writer != null) {
+                try {
                     writer.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                 }
             }
         }
     }
 
-    public Log getLog()
-    {
+    public Log getLog() {
         return log;
     }
 
-    public void setLog( Log log )
-    {
+    public void setLog(Log log) {
         this.log = log;
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/pom.xml b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/pom.xml
index 4be3391..1312d7a 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3372</groupId>
   <artifactId>project</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <name>project</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/main/java/org/test/App.java b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/main/java/org/test/App.java
index 2c825a0..01682b8 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/main/java/org/test/App.java
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/main/java/org/test/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.test;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/test/java/org/test/AppTest.java b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/test/java/org/test/AppTest.java
index e4e81e2..19f6ffd 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/test/java/org/test/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/project/src/test/java/org/test/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.test;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3379/pom.xml b/core-it-suite/src/test/resources/mng-3379/pom.xml
index 457e29d..0edad65 100644
--- a/core-it-suite/src/test/resources/mng-3379/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3379/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3379</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3379</name>
-  <description>
-    Tests that parallel downloads of artifacts from both the same and from different group ids don't corrupt
-    the local repo.
-  </description>
+  <description>Tests that parallel downloads of artifacts from both the same and from different group ids don't corrupt
+    the local repo.</description>
 
   <dependencies>
     <!-- group A -->
@@ -141,10 +137,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3380/pom.xml b/core-it-suite/src/test/resources/mng-3380/pom.xml
index 170125a..fe3d5ac 100644
--- a/core-it-suite/src/test/resources/mng-3380/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3380/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,17 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3380</name>
-  <description>
-    Verify that dependency resolution considers dependency management also for relocated artifacts.
-  </description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.its.mng3380</groupId>
-      <artifactId>direct</artifactId>
-      <version>1</version>
-    </dependency>
-  </dependencies>
+  <description>Verify that dependency resolution considers dependency management also for relocated artifacts.</description>
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -49,6 +37,14 @@
     </dependencies>
   </dependencyManagement>
 
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng3380</groupId>
+      <artifactId>direct</artifactId>
+      <version>1</version>
+    </dependency>
+  </dependencies>
+
   <build>
     <plugins>
       <plugin>
@@ -58,15 +54,15 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
               <testClassPath>target/test.txt</testClassPath>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3394/lifecycleMojoVersionInPluginMgmt/pom.xml b/core-it-suite/src/test/resources/mng-3394/lifecycleMojoVersionInPluginMgmt/pom.xml
index abee511..2e09b78 100644
--- a/core-it-suite/src/test/resources/mng-3394/lifecycleMojoVersionInPluginMgmt/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3394/lifecycleMojoVersionInPluginMgmt/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3394</groupId>
@@ -8,11 +8,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3394</name>
-  <description>
-    This test should verify that the Resources Plugin version used is 0.1-stub, not the latest one. It should
+  <description>This test should verify that the Resources Plugin version used is 0.1-stub, not the latest one. It should
     get this version from the POM's pluginManagement section, even though the plugin's mojo call is coming from
-    the default lifecycle bindings, and the plugin is not specified in the POM's build/plugins section.
-  </description>
+    the default lifecycle bindings, and the plugin is not specified in the POM's build/plugins section.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3394/preferBuildPluginOverPluginMgmt/pom.xml b/core-it-suite/src/test/resources/mng-3394/preferBuildPluginOverPluginMgmt/pom.xml
index 3b89c0c..11e1b7b 100644
--- a/core-it-suite/src/test/resources/mng-3394/preferBuildPluginOverPluginMgmt/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3394/preferBuildPluginOverPluginMgmt/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3394</groupId>
@@ -8,11 +8,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3394</name>
-  <description>
-    Test that the plugin version given in project/build/plugins overrides that in project/build/pluginManagement/plugins.
+  <description>Test that the plugin version given in project/build/plugins overrides that in project/build/pluginManagement/plugins.
     If this is correct, the clean plugin should find a valid version, and execute. Otherwise, the version 'invalid' is
-    used by Maven, and the clean plugin with that version cannot be resolved...so the build fails. Use `mvn clean` to test.
-  </description>
+    used by Maven, and the clean plugin with that version cannot be resolved...so the build fails. Use `mvn clean` to test.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3396/dependencies/a1/pom.xml b/core-it-suite/src/test/resources/mng-3396/dependencies/a1/pom.xml
index edd76ce..23f0787 100644
--- a/core-it-suite/src/test/resources/mng-3396/dependencies/a1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/dependencies/a1/pom.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396 :: A</name>
   <parent>
     <groupId>org.apache.maven.its.mng3396</groupId>
     <artifactId>dependencies</artifactId>
@@ -10,4 +8,5 @@
   </parent>
   <artifactId>A</artifactId>
   <version>1.0</version>
+  <name>Maven Integration Test :: mng3396 :: A</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3396/dependencies/b/pom.xml b/core-it-suite/src/test/resources/mng-3396/dependencies/b/pom.xml
index 7c9b736..45cb8b9 100644
--- a/core-it-suite/src/test/resources/mng-3396/dependencies/b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/dependencies/b/pom.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396 :: B</name>
   <parent>
     <groupId>org.apache.maven.its.mng3396</groupId>
     <artifactId>dependencies</artifactId>
@@ -10,6 +8,7 @@
   </parent>
   <artifactId>B</artifactId>
   <version>1.0</version>
+  <name>Maven Integration Test :: mng3396 :: B</name>
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3396/dependencies/pom.xml b/core-it-suite/src/test/resources/mng-3396/dependencies/pom.xml
index 01ccfad..4c6814d 100644
--- a/core-it-suite/src/test/resources/mng-3396/dependencies/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/dependencies/pom.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396</name>
   <groupId>org.apache.maven.its.mng3396</groupId>
   <artifactId>dependencies</artifactId>
-  <description>Managed versions don't affect over constrained ranges. [MNG-3396]</description>
   <version>1</version>
 
   <packaging>pom</packaging>
+  <name>Maven Integration Test :: mng3396</name>
+  <description>Managed versions don't affect over constrained ranges. [MNG-3396]</description>
 
   <modules>
     <module>a1</module>
diff --git a/core-it-suite/src/test/resources/mng-3396/plugin/a/pom.xml b/core-it-suite/src/test/resources/mng-3396/plugin/a/pom.xml
index c6dafc4..499a22b 100644
--- a/core-it-suite/src/test/resources/mng-3396/plugin/a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/plugin/a/pom.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396 :: A</name>
   <parent>
     <groupId>org.apache.maven.its.mng3396</groupId>
     <artifactId>plugin-parent</artifactId>
@@ -10,4 +8,5 @@
   </parent>
   <artifactId>A</artifactId>
   <version>3.0</version>
+  <name>Maven Integration Test :: mng3396 :: A</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3396/plugin/plugin/pom.xml b/core-it-suite/src/test/resources/mng-3396/plugin/plugin/pom.xml
index cde4ac1..1b7c0fe 100644
--- a/core-it-suite/src/test/resources/mng-3396/plugin/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/plugin/plugin/pom.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396 :: plugin</name>
   <parent>
     <groupId>org.apache.maven.its.mng3396</groupId>
     <artifactId>plugin-parent</artifactId>
@@ -11,6 +9,16 @@
   <artifactId>plugin</artifactId>
   <version>1.0</version>
   <packaging>maven-plugin</packaging>
+  <name>Maven Integration Test :: mng3396 :: plugin</name>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>A</artifactId>
+        <version>3.0</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 
   <dependencies>
     <dependency>
@@ -24,13 +32,4 @@
       <version>1.0</version>
     </dependency>
   </dependencies>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>A</artifactId>
-        <version>3.0</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3396/plugin/plugin/src/main/java/org/apache/maven/its/mng3396/NoopMojo.java b/core-it-suite/src/test/resources/mng-3396/plugin/plugin/src/main/java/org/apache/maven/its/mng3396/NoopMojo.java
index 00fd169..5e97927 100644
--- a/core-it-suite/src/test/resources/mng-3396/plugin/plugin/src/main/java/org/apache/maven/its/mng3396/NoopMojo.java
+++ b/core-it-suite/src/test/resources/mng-3396/plugin/plugin/src/main/java/org/apache/maven/its/mng3396/NoopMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng3396;
 
 /*
@@ -23,13 +41,7 @@
  * @phase compile
  * @requiresDependencyResolution test
  */
-public class NoopMojo
-    extends AbstractMojo
-{
+public class NoopMojo extends AbstractMojo {
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-    }
-
+    public void execute() throws MojoExecutionException, MojoFailureException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-3396/plugin/pom.xml b/core-it-suite/src/test/resources/mng-3396/plugin/pom.xml
index 0cdbedd..6f9c519 100644
--- a/core-it-suite/src/test/resources/mng-3396/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/plugin/pom.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396</name>
   <groupId>org.apache.maven.its.mng3396</groupId>
   <artifactId>plugin-parent</artifactId>
-  <description>Managed versions don't affect over constrained ranges. [MNG-3396]</description>
   <version>1</version>
 
   <packaging>pom</packaging>
+  <name>Maven Integration Test :: mng3396</name>
+  <description>Managed versions don't affect over constrained ranges. [MNG-3396]</description>
 
   <modules>
     <module>a</module>
diff --git a/core-it-suite/src/test/resources/mng-3396/pluginuser/pom.xml b/core-it-suite/src/test/resources/mng-3396/pluginuser/pom.xml
index ed7f3b5..b7078a1 100644
--- a/core-it-suite/src/test/resources/mng-3396/pluginuser/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3396/pluginuser/pom.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <name>Maven Integration Test :: mng3396 :: pluginuser</name>
   <groupId>org.apache.maven.its.mng3396</groupId>
   <artifactId>pluginuser</artifactId>
   <version>1.0</version>
+  <name>Maven Integration Test :: mng3396 :: pluginuser</name>
 
   <build>
     <plugins>
@@ -15,10 +14,10 @@
         <version>1.0</version>
         <executions>
           <execution>
-            <phase>compile</phase>
             <goals>
               <goal>noop</goal>
             </goals>
+            <phase>compile</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3401/with-mgmt/pom.xml b/core-it-suite/src/test/resources/mng-3401/with-mgmt/pom.xml
index d6e6159..023793f 100644
--- a/core-it-suite/src/test/resources/mng-3401/with-mgmt/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3401/with-mgmt/pom.xml
@@ -8,10 +8,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3401</name>
-  <description>
-    Test that the configuration of an execution block with the id "default-cli" applies to direct CLI
-    invocations of a goal as well.
-  </description>
+  <description>Test that the configuration of an execution block with the id "default-cli" applies to direct CLI
+    invocations of a goal as well.</description>
 
   <build>
     <!-- NOTE: This variant of the test uses plugin management -->
diff --git a/core-it-suite/src/test/resources/mng-3401/without-mgmt/pom.xml b/core-it-suite/src/test/resources/mng-3401/without-mgmt/pom.xml
index 57e1aad..66df79a 100644
--- a/core-it-suite/src/test/resources/mng-3401/without-mgmt/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3401/without-mgmt/pom.xml
@@ -8,10 +8,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3401</name>
-  <description>
-    Test that the configuration of an execution block with the id "default-cli" applies to direct CLI
-    invocations of a goal as well.
-  </description>
+  <description>Test that the configuration of an execution block with the id "default-cli" applies to direct CLI
+    invocations of a goal as well.</description>
 
   <build>
     <!-- NOTE: This variant of the test does not use plugin management -->
diff --git a/core-it-suite/src/test/resources/mng-3415/pom.xml b/core-it-suite/src/test/resources/mng-3415/pom.xml
index 8d65bd2..4ac9ec4 100644
--- a/core-it-suite/src/test/resources/mng-3415/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3415/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3415</groupId>
@@ -7,13 +7,11 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-3415</name>
-  <description>
-    Test that failures to resolve the artifact metadata are properly handled. In particular, we need to distinguish
+  <description>Test that failures to resolve the artifact metadata are properly handled. In particular, we need to distinguish
     between a network failure and a missing metadata file in the remote repo. After a network failure, we immediately
     want to retry the remote repo during the next build, regardless of the repo's update policy. In case the metadata
     (and hence the corresponding artifact) is simply missing from the repo, we don't want to recheck this repo on each
-    build but wait until the update interval has elapsed (see also MNG-2712).
-  </description>
+    build but wait until the update interval has elapsed (see also MNG-2712).</description>
 
   <dependencies>
     <dependency>
@@ -34,10 +32,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3422/pom.xml b/core-it-suite/src/test/resources/mng-3422/pom.xml
index 50d51d9..5d31aae 100644
--- a/core-it-suite/src/test/resources/mng-3422/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3422/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3422</name>
-  <description>
-    Verify that active collections of core components are properly injected into plugins.
-  </description>
+  <description>Verify that active collections of core components are properly injected into plugins.</description>
 
   <build>
     <plugins>
@@ -44,10 +40,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>dump-repo-layouts</goal>
-           </goals>
+            </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3441/pom.xml b/core-it-suite/src/test/resources/mng-3441/pom.xml
index bf1834a..5313b8f 100644
--- a/core-it-suite/src/test/resources/mng-3441/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3441/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3441</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3441/src/main/java/MyMojo.java b/core-it-suite/src/test/resources/mng-3441/src/main/java/MyMojo.java
deleted file mode 100644
index 01862ee..0000000
--- a/core-it-suite/src/test/resources/mng-3441/src/main/java/MyMojo.java
+++ /dev/null
@@ -1,9 +0,0 @@
-import org.apache.maven.plugin.AbstractMojo;
-
-/** @goal mojo */
-public class MyMojo extends AbstractMojo
-{
-    public void execute()
-    {
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-3441/src/main/java/mng3441/MyMojo.java b/core-it-suite/src/test/resources/mng-3441/src/main/java/mng3441/MyMojo.java
new file mode 100644
index 0000000..debd332
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-3441/src/main/java/mng3441/MyMojo.java
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package mng3441;
+
+import org.apache.maven.plugin.AbstractMojo;
+
+/** @goal mojo */
+public class MyMojo extends AbstractMojo {
+    public void execute() {}
+}
diff --git a/core-it-suite/src/test/resources/mng-3461/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3461/test-1/pom.xml
index dc741be..854a876 100644
--- a/core-it-suite/src/test/resources/mng-3461/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3461/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3461</name>
-  <description>
-    Test that mirror definitions are properly evaluated. In particular, an exact match by id should always
-    win over wildcard matches.
-  </description>
+  <description>Test that mirror definitions are properly evaluated. In particular, an exact match by id should always
+    win over wildcard matches.</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3461/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3461/test-2/pom.xml
index 4bb6c5a..a34e625 100644
--- a/core-it-suite/src/test/resources/mng-3461/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3461/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3461</name>
-  <description>
-    Test that mirror definitions are properly evaluated. In particular, the wildcard external:* should not
-    match file:// and localhost repos but only external repos.
-  </description>
+  <description>Test that mirror definitions are properly evaluated. In particular, the wildcard external:* should not
+    match file:// and localhost repos but only external repos.</description>
 
   <dependencies>
     <dependency>
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3461/test-3/pom.xml b/core-it-suite/src/test/resources/mng-3461/test-3/pom.xml
index d8ba0c6..9d3ab2e 100644
--- a/core-it-suite/src/test/resources/mng-3461/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3461/test-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3461</name>
-  <description>
-    Test that mirror definitions are properly evaluated. In particular, the wildcards within a single mirrorOf
-    spec should not be greedy.
-  </description>
+  <description>Test that mirror definitions are properly evaluated. In particular, the wildcards within a single mirrorOf
+    spec should not be greedy.</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3470/pom.xml b/core-it-suite/src/test/resources/mng-3470/pom.xml
index a138abd..817863f 100644
--- a/core-it-suite/src/test/resources/mng-3470/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3470/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3470</name>
-  <description>
-    Verify that strict checksum verification fails the build in case a dependency POM is corrupt.
-  </description>
+  <description>Verify that strict checksum verification fails the build in case a dependency POM is corrupt.</description>
 
   <dependencies>
     <dependency>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3475/pom.xml b/core-it-suite/src/test/resources/mng-3475/pom.xml
index 5e6d268..7766397 100644
--- a/core-it-suite/src/test/resources/mng-3475/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3475/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,21 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3475</name>
-  <description>
-    Verify that project directories are basedir aligned when queried by plugin parameter expressions.
-  </description>
+  <description>Verify that project directories are basedir aligned when queried by plugin parameter expressions.</description>
 
   <build>
-    <!--
-    NOTE: Deliberately re-specify default paths to decouple from super POM and interpolation. Proper handling of
-    *relative* paths is the whole point of this test.
-    -->
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
-    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
     <directory>target</directory>
-    <outputDirectory>target/classes</outputDirectory>
-    <testOutputDirectory>target/test-classes</testOutputDirectory>
 
     <plugins>
       <plugin>
@@ -65,14 +52,23 @@
         <executions>
           <execution>
             <id>interpolated-config</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <!--
+    NOTE: Deliberately re-specify default paths to decouple from super POM and interpolation. Proper handling of
+    *relative* paths is the whole point of this test.
+    -->
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+    <testSourceDirectory>src/test/java</testSourceDirectory>
+    <outputDirectory>target/classes</outputDirectory>
+    <testOutputDirectory>target/test-classes</testOutputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/mng-3477/pom.xml b/core-it-suite/src/test/resources/mng-3477/pom.xml
index 37edc4c..2653851 100644
--- a/core-it-suite/src/test/resources/mng-3477/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3477/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3477</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3477</name>
-  <description>
-    Tests that dependency resolution errors tell the underlying transport issue.
-  </description>
+  <description>Tests that dependency resolution errors tell the underlying transport issue.</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3482/pom.xml b/core-it-suite/src/test/resources/mng-3482/pom.xml
index 0c6fc55..eff78d4 100644
--- a/core-it-suite/src/test/resources/mng-3482/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3482/pom.xml
@@ -1,14 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3482</groupId>
   <artifactId>mng-3482</artifactId>
-  <packaging>jar</packaging>
   <version>2</version>
+  <packaging>jar</packaging>
 
   <name>Integration Test Project for MNG-3482</name>
-  <description>
-    This project verifies that MNG-3482 is fixed. It is controlled by a JUnit test called org.apache.maven.it.MNG3482Test
-  </description>
+  <description>This project verifies that MNG-3482 is fixed. It is controlled by a JUnit test called org.apache.maven.it.MNG3482Test</description>
 
   <url>https://issues.apache.org/jira/browse/MNG-3482</url>
 
@@ -34,10 +33,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3485/pom.xml b/core-it-suite/src/test/resources/mng-3485/pom.xml
index 8086b99..b083bd3 100644
--- a/core-it-suite/src/test/resources/mng-3485/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3485/pom.xml
@@ -1,9 +1,17 @@
-<?xml version="1.0"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3485</groupId>
-  <version>1.0-SNAPSHOT</version>
   <artifactId>test-project</artifactId>
+  <version>1.0-SNAPSHOT</version>
   <name>test-project</name>
+  <distributionManagement>
+    <repository>
+      <id>id</id>
+      <!-- Note this won't actually be used if it passes -->
+      <url>scpexe://foo.bar/path</url>
+    </repository>
+  </distributionManagement>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -13,13 +21,6 @@
     </dependency>
   </dependencies>
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-wagon</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -29,12 +30,12 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-wagon</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
-  <distributionManagement>
-    <repository>
-      <id>id</id>
-      <!-- Note this won't actually be used if it passes -->
-      <url>scpexe://foo.bar/path</url>
-    </repository>
-  </distributionManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3485/src/main/java/org/apache/maven/its/mng3485/App.java b/core-it-suite/src/test/resources/mng-3485/src/main/java/org/apache/maven/its/mng3485/App.java
index 7ae62ed..8c8474a 100644
--- a/core-it-suite/src/test/resources/mng-3485/src/main/java/org/apache/maven/its/mng3485/App.java
+++ b/core-it-suite/src/test/resources/mng-3485/src/main/java/org/apache/maven/its/mng3485/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng3485;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3485/src/test/java/org/apache/maven/its/mng3485/AppTest.java b/core-it-suite/src/test/resources/mng-3485/src/test/java/org/apache/maven/its/mng3485/AppTest.java
index 03e13b2..4406338 100644
--- a/core-it-suite/src/test/resources/mng-3485/src/test/java/org/apache/maven/its/mng3485/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3485/src/test/java/org/apache/maven/its/mng3485/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng3485;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
index ea64de0..2db3af8 100644
--- a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
@@ -1,4 +1,4 @@
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,14 +17,12 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3498</groupId>
   <artifactId>mavenit-mng3498-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
   <name>maven-mng3498-plugin Maven Mojo</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/CheckMojo.java b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/CheckMojo.java
index 94bdf24..ef719f7 100644
--- a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/CheckMojo.java
+++ b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/CheckMojo.java
@@ -1,36 +1,36 @@
 /*
- * Copyright 2001-2005 The Apache Software Foundation.
+ * 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
  *
- * Licensed 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
  *
- *      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.
+ * 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.
  */
-
 package plugin;
 
+import java.io.File;
+
 import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 
-import java.io.File;
-
 /**
  * @goal check
  * @phase validate
  * @execute goal="touch"
  */
-public class CheckMojo
-    implements Mojo
-{
+public class CheckMojo implements Mojo {
 
     /**
      * @parameter default-value="${project.build.directory}/touch.txt"
@@ -40,23 +40,18 @@
 
     private Log log;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( !touchFile.exists() )
-        {
-            throw new MojoExecutionException( "Touch file: " + touchFile + " has not been generated by forked mojo 'touch'." );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (!touchFile.exists()) {
+            throw new MojoExecutionException(
+                    "Touch file: " + touchFile + " has not been generated by forked mojo 'touch'.");
         }
     }
 
-    public Log getLog()
-    {
+    public Log getLog() {
         return log;
     }
 
-    public void setLog( Log log )
-    {
+    public void setLog(Log log) {
         this.log = log;
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/TouchMojo.java b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/TouchMojo.java
index 8748b3d..331e231 100644
--- a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/TouchMojo.java
+++ b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/src/main/java/plugin/TouchMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package plugin;
 
 /*
@@ -16,21 +34,19 @@
  * limitations under the License.
  */
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
 /**
  * Goal which touches a timestamp file.
  *
  * @goal touch
  */
-public class TouchMojo
-    extends AbstractMojo
-{
+public class TouchMojo extends AbstractMojo {
     /**
      * Location of the file.
      * @parameter expression="${project.build.directory}"
@@ -38,39 +54,27 @@
      */
     private File outputDirectory;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File f = outputDirectory;
 
-        if ( !f.exists() )
-        {
+        if (!f.exists()) {
             f.mkdirs();
         }
 
-        File touch = new File( f, "touch.txt" );
+        File touch = new File(f, "touch.txt");
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touch );
+        try {
+            w = new FileWriter(touch);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touch, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touch, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-3498/mng-3498-project/pom.xml b/core-it-suite/src/test/resources/mng-3498/mng-3498-project/pom.xml
index 3f54243..3e7cc39 100644
--- a/core-it-suite/src/test/resources/mng-3498/mng-3498-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3498/mng-3498-project/pom.xml
@@ -1,4 +1,4 @@
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,14 +17,12 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3498</groupId>
   <artifactId>mng-3498-project</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <build>
     <plugins>
@@ -35,10 +33,10 @@
         <executions>
           <execution>
             <id>check</id>
-            <phase>validate</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu-new/pom.xml b/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu-new/pom.xml
index 250a450..4b9ab42 100644
--- a/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu-new/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu-new/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3503</groupId>
   <artifactId>mng-3503-xpp3Shading-pu-new</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu11/pom.xml b/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu11/pom.xml
index 32db9d3..7161ed2 100644
--- a/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu11/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3503/mng-3503-xpp3Shading-pu11/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3503</groupId>
   <artifactId>mng-3503-xpp3Shading-pu11</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/pom.xml b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/pom.xml
index eb73907..483d442 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/pom.xml
@@ -17,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng3506</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/main/java/org/apache/maven/its/mng3506/App.java b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/main/java/org/apache/maven/its/mng3506/App.java
index a713f69..40241be 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/main/java/org/apache/maven/its/mng3506/App.java
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/main/java/org/apache/maven/its/mng3506/App.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -22,10 +22,8 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/test/java/org/apache/maven/its/mng3506/AppTest.java b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/test/java/org/apache/maven/its/mng3506/AppTest.java
index 1c1abf1..901f8d2 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/test/java/org/apache/maven/its/mng3506/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.1/src/test/java/org/apache/maven/its/mng3506/AppTest.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -25,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/pom.xml b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/pom.xml
index ee7f4b6..d68d6e9c 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/pom.xml
@@ -17,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng3506</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/main/java/org/apache/maven/its/mng3506/App.java b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/main/java/org/apache/maven/its/mng3506/App.java
index a713f69..40241be 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/main/java/org/apache/maven/its/mng3506/App.java
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/main/java/org/apache/maven/its/mng3506/App.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -22,10 +22,8 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/test/java/org/apache/maven/its/mng3506/AppTest.java b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/test/java/org/apache/maven/its/mng3506/AppTest.java
index 1c1abf1..901f8d2 100644
--- a/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/test/java/org/apache/maven/its/mng3506/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3506/mng-3506.2/src/test/java/org/apache/maven/its/mng3506/AppTest.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -25,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3506/pom.xml b/core-it-suite/src/test/resources/mng-3506/pom.xml
index 2922c6c..3781d24 100644
--- a/core-it-suite/src/test/resources/mng-3506/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3506/pom.xml
@@ -17,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3506</groupId>
@@ -41,4 +40,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3529/pom.xml b/core-it-suite/src/test/resources/mng-3529/pom.xml
index 2772b38..556ab2a 100644
--- a/core-it-suite/src/test/resources/mng-3529/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3529/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3529</name>
-  <description>
-    Verify that the command line processing doesn't choke on things like -Da=" ".
-  </description>
+  <description>Verify that the command line processing doesn't choke on things like -Da=" ".</description>
 
   <properties>
     <propA>-${test.a}-</propA>
@@ -45,6 +41,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -52,9 +51,6 @@
               </expressions>
               <outputFile>target/pom.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3535/failure/pom.xml b/core-it-suite/src/test/resources/mng-3535/failure/pom.xml
index c0ebfc8..6e64ac3 100644
--- a/core-it-suite/src/test/resources/mng-3535/failure/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3535/failure/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,42 +17,40 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>mng3535-selfReferentialProperties</artifactId>
-    <packaging>pom</packaging>
-    <version>1.0</version>
-    <name>Apache Maven: mng3535-selfReferentialProperties</name>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>mng3535-selfReferentialProperties</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>Apache Maven: mng3535-selfReferentialProperties</name>
+  <properties>
+    <my.specification.version>${my.specification.version}</my.specification.version>
+  </properties>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <version>2.1-SNAPSHOT</version>
-                <artifactId>maven-it-plugin-project-interpolation</artifactId>
-                <executions>
-                    <execution>
-                        <phase>install</phase>
-                        <goals>
-                            <goal>verify-property</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <properties>
-                        <property>
-                            <name>java.specification.version</name>
-                            <value>${my.specification.version}</value>
-                        </property>
-                    </properties>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <properties>
-        <my.specification.version>${my.specification.version}</my.specification.version>
-    </properties>
-</project>
\ No newline at end of file
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-project-interpolation</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <properties>
+            <property>
+              <name>java.specification.version</name>
+              <value>${my.specification.version}</value>
+            </property>
+          </properties>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>verify-property</goal>
+            </goals>
+            <phase>install</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3535/success/pom.xml b/core-it-suite/src/test/resources/mng-3535/success/pom.xml
index b21dd3e..33d71e7 100644
--- a/core-it-suite/src/test/resources/mng-3535/success/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3535/success/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,42 +17,40 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>test</groupId>
-    <artifactId>mng3535-selfReferentialProperties</artifactId>
-    <packaging>pom</packaging>
-    <version>1.0</version>
-    <name>Apache Maven: mng3535-selfReferentialProperties</name>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>mng3535-selfReferentialProperties</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>Apache Maven: mng3535-selfReferentialProperties</name>
+  <properties>
+    <java.specification.version>${java.specification.version}</java.specification.version>
+  </properties>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <version>2.1-SNAPSHOT</version>
-                <artifactId>maven-it-plugin-project-interpolation</artifactId>
-                <executions>
-                    <execution>
-                        <phase>install</phase>
-                        <goals>
-                            <goal>verify-property</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <properties>
-                        <property>
-                            <name>java.specification.version</name>
-                            <value>${java.specification.version}</value>
-                        </property>
-                    </properties>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <properties>
-        <java.specification.version>${java.specification.version}</java.specification.version>
-    </properties>
-</project>
\ No newline at end of file
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-project-interpolation</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <properties>
+            <property>
+              <name>java.specification.version</name>
+              <value>${java.specification.version}</value>
+            </property>
+          </properties>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>verify-property</goal>
+            </goals>
+            <phase>install</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3536/plugin/pom.xml b/core-it-suite/src/test/resources/mng-3536/plugin/pom.xml
index 8039a2b..97eca28 100644
--- a/core-it-suite/src/test/resources/mng-3536/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3536/plugin/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,25 +17,23 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.maven.its.mng3536</groupId>
-    <artifactId>mng3536-AppendedAbsolutePaths-plugin</artifactId>
-    <packaging>maven-plugin</packaging>
-    <version>1.0</version>
-    <name>Apache Maven: mng3536-AppendedAbsolutePaths-plugin</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <version>2.0.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-project</artifactId>
-            <version>2.0.9</version>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng3536</groupId>
+  <artifactId>mng3536-AppendedAbsolutePaths-plugin</artifactId>
+  <version>1.0</version>
+  <packaging>maven-plugin</packaging>
+  <name>Apache Maven: mng3536-AppendedAbsolutePaths-plugin</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0.9</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.0.9</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3536/plugin/src/main/java/plugin/Mojo3563.java b/core-it-suite/src/test/resources/mng-3536/plugin/src/main/java/plugin/Mojo3563.java
index 4b1ffce..aae4e0f 100644
--- a/core-it-suite/src/test/resources/mng-3536/plugin/src/main/java/plugin/Mojo3563.java
+++ b/core-it-suite/src/test/resources/mng-3536/plugin/src/main/java/plugin/Mojo3563.java
@@ -1,26 +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.
+ */
 package plugin;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.apache.maven.model.Model;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.model.Model;
 import org.codehaus.plexus.util.IOUtil;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-
 /**
  * @goal validate
  * @phase validate
  */
-public class Mojo3563
-    extends AbstractMojo
-{
+public class Mojo3563 extends AbstractMojo {
 
     /**
      * @parameter default-value="${project}"
@@ -42,49 +57,39 @@
 
         File testFile = new File(property.substring(property.indexOf(":") + 1));
         if (!testFile.exists()) {
-            throw new MojoExecutionException("Test file does not exist: File = " + testFile.getAbsolutePath() + "Property = " + property);
+            throw new MojoExecutionException(
+                    "Test file does not exist: File = " + testFile.getAbsolutePath() + "Property = " + property);
         }
         getLog().info("Property = " + property);
 
-        File f = new File( project.getBuild().getOutputDirectory(), "foo.txt" );
-        getLog().info( "Creating test file using project.getBuild().getDirectory(): " + f );
+        File f = new File(project.getBuild().getOutputDirectory(), "foo.txt");
+        getLog().info("Creating test file using project.getBuild().getDirectory(): " + f);
 
         String testValue = "" + System.currentTimeMillis();
 
         FileWriter w = null;
-        try
-        {
+        try {
             f.getParentFile().mkdirs();
-            w = new FileWriter( f );
+            w = new FileWriter(f);
 
-            w.write( testValue );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to write test file.", e );
-        }
-        finally
-        {
-            IOUtil.close( w );
+            w.write(testValue);
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to write test file.", e);
+        } finally {
+            IOUtil.close(w);
         }
 
-        getLog().info( "Attempting to read test file using path from plugin parameter: " + foo );
+        getLog().info("Attempting to read test file using path from plugin parameter: " + foo);
         BufferedReader r = null;
-        try
-        {
-            r = new BufferedReader( new FileReader( foo ) );
-            if ( !testValue.equals( r.readLine() ) )
-            {
-                throw new MojoExecutionException( "Test file: " + foo + " has wrong contents." );
+        try {
+            r = new BufferedReader(new FileReader(foo));
+            if (!testValue.equals(r.readLine())) {
+                throw new MojoExecutionException("Test file: " + foo + " has wrong contents.");
             }
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to read test file.", e );
-        }
-        finally
-        {
-            IOUtil.close( r );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to read test file.", e);
+        } finally {
+            IOUtil.close(r);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3536/project/pom.xml b/core-it-suite/src/test/resources/mng-3536/project/pom.xml
index 351b6f9..78aa3b1 100644
--- a/core-it-suite/src/test/resources/mng-3536/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3536/project/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,37 +17,35 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.maven.its.mng3536</groupId>
-    <artifactId>mng3536-AppendedAbsolutePaths</artifactId>
-    <packaging>pom</packaging>
-    <version>1.0</version>
-    <name>Apache Maven: mng3536-AppendedAbsolutePaths</name>
-    <build>
-        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.mng3536</groupId>
-                <artifactId>mng3536-AppendedAbsolutePaths-plugin</artifactId>
-                <version>1.0</version>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>validate</goal>
-                        </goals>
-                        <configuration>
-                          <foo>${project.build.outputDirectory}/foo.txt</foo>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <properties>
-        <test>file:${project.build.sourceDirectory}/plugin/Mojo3563.java</test>
-    </properties>
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng3536</groupId>
+  <artifactId>mng3536-AppendedAbsolutePaths</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>Apache Maven: mng3536-AppendedAbsolutePaths</name>
+  <properties>
+    <test>file:${project.build.sourceDirectory}/plugin/Mojo3563.java</test>
+  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.mng3536</groupId>
+        <artifactId>mng3536-AppendedAbsolutePaths-plugin</artifactId>
+        <version>1.0</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>validate</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <foo>${project.build.outputDirectory}/foo.txt</foo>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
+  </build>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3536/project/src/main/java/plugin/Mojo3563.java b/core-it-suite/src/test/resources/mng-3536/project/src/main/java/plugin/Mojo3563.java
index 850d424..786912a 100644
--- a/core-it-suite/src/test/resources/mng-3536/project/src/main/java/plugin/Mojo3563.java
+++ b/core-it-suite/src/test/resources/mng-3536/project/src/main/java/plugin/Mojo3563.java
@@ -1,12 +1,30 @@
+/*
+ * 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.
+ */
 package plugin;
 
+import java.io.File;
+
+import org.apache.maven.model.Model;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.model.Model;
-
-import java.io.File;
 
 /**
  * Maven Mojo for executing nunit tests
@@ -30,9 +48,9 @@
 
         File testFile = new File(property.substring(property.indexOf(":") + 1));
         if (!testFile.exists()) {
-            throw new MojoExecutionException("Test file does not exist: File = " + testFile.getAbsolutePath() + ", Property = " + property);
+            throw new MojoExecutionException(
+                    "Test file does not exist: File = " + testFile.getAbsolutePath() + ", Property = " + property);
         }
         getLog().info("Property = " + property);
-
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3545/pom.xml b/core-it-suite/src/test/resources/mng-3545/pom.xml
index b03cc67..2af709a 100644
--- a/core-it-suite/src/test/resources/mng-3545/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3545/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3545</groupId>
@@ -28,10 +29,10 @@
             <executions>
               <execution>
                 <id>profile1-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile1</outputDirectory>
                 </configuration>
@@ -54,10 +55,10 @@
             <executions>
               <execution>
                 <id>profile2-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile2</outputDirectory>
                 </configuration>
@@ -83,10 +84,10 @@
             <executions>
               <execution>
                 <id>profile3-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile3</outputDirectory>
                 </configuration>
@@ -106,10 +107,10 @@
             <executions>
               <execution>
                 <id>profile4-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile4</outputDirectory>
                 </configuration>
@@ -129,10 +130,10 @@
             <executions>
               <execution>
                 <id>profile5-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile5</outputDirectory>
                 </configuration>
diff --git a/core-it-suite/src/test/resources/mng-3575/pom.xml b/core-it-suite/src/test/resources/mng-3575/pom.xml
index 6241a56..1ac3a19 100644
--- a/core-it-suite/src/test/resources/mng-3575/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3575/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-3575</name>
-  <description>
-    Verify that numeric plugin parameters can be configured using hexadecimal/octal notation.
-  </description>
+  <description>Verify that numeric plugin parameters can be configured using hexadecimal/octal notation.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3581/pom.xml b/core-it-suite/src/test/resources/mng-3581/pom.xml
index 1caf162..c475fc2 100644
--- a/core-it-suite/src/test/resources/mng-3581/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3581/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3581</groupId>
@@ -24,11 +25,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -38,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>use-wagon</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3586/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3586/test-1/pom.xml
index 7daaa68..65b317e 100644
--- a/core-it-suite/src/test/resources/mng-3586/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3586/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3586</name>
-  <description>
-    Test that plugin dependencies with scope system are part of the plugin class realm.
-  </description>
+  <description>Test that plugin dependencies with scope system are part of the plugin class realm.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>coreit</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3586/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3586/test-2/pom.xml
index 89c4af6..00a27c1 100644
--- a/core-it-suite/src/test/resources/mng-3586/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3586/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3586</name>
-  <description>
-    Test that plugin dependencies with scope system are part of the plugin class realm.
-  </description>
+  <description>Test that plugin dependencies with scope system are part of the plugin class realm.</description>
 
   <build>
     <plugins>
@@ -49,14 +45,14 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <resourcePaths>maven-core-it.properties</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3599-mk2/pom.xml b/core-it-suite/src/test/resources/mng-3599-mk2/pom.xml
index 4417026..eb3668c 100644
--- a/core-it-suite/src/test/resources/mng-3599-mk2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3599-mk2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3599</groupId>
@@ -11,13 +12,6 @@
     </dependency>
   </dependencies>
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.wagon</groupId>
-        <artifactId>wagon-webdav-jackrabbit</artifactId>
-        <version>3.0.0</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -27,6 +21,12 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.wagon</groupId>
+        <artifactId>wagon-webdav-jackrabbit</artifactId>
+        <version>3.0.0</version>
+      </extension>
+    </extensions>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-3600/pom.xml b/core-it-suite/src/test/resources/mng-3600/pom.xml
index 5b1d7ef..039cf99 100644
--- a/core-it-suite/src/test/resources/mng-3600/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3600/pom.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0"?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,27 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3600</groupId>
-  <version>1.0-SNAPSHOT</version>
   <artifactId>test</artifactId>
+  <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3600</name>
-  <description>
-    Verify that file/group permissions configured for deployment are properly handled.
-  </description>
+  <description>Verify that file/group permissions configured for deployment are properly handled.</description>
+
+  <distributionManagement>
+    <repository>
+      <id>id</id>
+      <!-- Note this won't actually be used if it passes -->
+      <url>scpexe://foo.bar/path</url>
+    </repository>
+  </distributionManagement>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-wagon</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -50,23 +47,22 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-wagon</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
-
-  <distributionManagement>
-    <repository>
-      <id>id</id>
-      <!-- Note this won't actually be used if it passes -->
-      <url>scpexe://foo.bar/path</url>
-    </repository>
-  </distributionManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3607/pom.xml b/core-it-suite/src/test/resources/mng-3607/pom.xml
index 2018a3b..7d72abf 100644
--- a/core-it-suite/src/test/resources/mng-3607/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3607/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3607</name>
-  <description>
-    Test that class loaders created by Maven employ valid URLs, e.g. properly encode characters like spaces.
-  </description>
+  <description>Test that class loaders created by Maven employ valid URLs, e.g. properly encode characters like spaces.</description>
 
   <build>
     <plugins>
@@ -49,14 +45,14 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <resourcePaths>maven-core-it.properties</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3621/child/pom.xml b/core-it-suite/src/test/resources/mng-3621/child/pom.xml
index fddd872..a97ca82 100644
--- a/core-it-suite/src/test/resources/mng-3621/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3621/child/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-  <!--
+<!--
     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.
@@ -15,15 +14,13 @@
     License for the specific language governing permissions and
     limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-<parent>
-  <groupId>org.apache.maven.its.mng3621</groupId>
-  <artifactId>test-parent</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <parent>
+    <groupId>org.apache.maven.its.mng3621</groupId>
+    <artifactId>test-parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
   </parent>
   <artifactId>test-child</artifactId>
 
@@ -44,14 +41,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-3621/pom.xml b/core-it-suite/src/test/resources/mng-3621/pom.xml
index be2a825..09c45b6 100644
--- a/core-it-suite/src/test/resources/mng-3621/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3621/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-  <!--
+<!--
     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.
@@ -15,9 +14,7 @@
     License for the specific language governing permissions and
     limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3621</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3641/child1/pom.xml b/core-it-suite/src/test/resources/mng-3641/child1/pom.xml
index 9bdc10a..e27a67c 100644
--- a/core-it-suite/src/test/resources/mng-3641/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3641/child1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3641/child2/pom.xml b/core-it-suite/src/test/resources/mng-3641/child2/pom.xml
index 7364222..17c0ac1 100644
--- a/core-it-suite/src/test/resources/mng-3641/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3641/child2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3641/pom.xml b/core-it-suite/src/test/resources/mng-3641/pom.xml
index b98c7ec..e21b802 100644
--- a/core-it-suite/src/test/resources/mng-3641/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3641/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,14 +27,14 @@
 
   <name>MNG-3641 - Profile activation warning test</name>
 
+  <modules>
+    <module>child1</module>
+    <module>child2</module>
+  </modules>
+
   <profiles>
     <profile>
       <id>mng-3641-it-provided-profile</id>
     </profile>
   </profiles>
-
-  <modules>
-    <module>child1</module>
-    <module>child2</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3642/pom.xml b/core-it-suite/src/test/resources/mng-3642/pom.xml
index 48e21cd..cf056ea 100644
--- a/core-it-suite/src/test/resources/mng-3642/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3642/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3642</groupId>
   <artifactId>mng-3642-dynamicResources</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-3645/pom.xml b/core-it-suite/src/test/resources/mng-3645/pom.xml
index 15fa628..0234962 100644
--- a/core-it-suite/src/test/resources/mng-3645/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3645/pom.xml
@@ -1,17 +1,10 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3645</groupId>
   <artifactId>consumer</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.its.mng3645</groupId>
-      <artifactId>directdep</artifactId>
-      <version>1</version>
-    </dependency>
-  </dependencies>
+  <packaging>jar</packaging>
   <dependencyManagement>
     <dependencies>
       <!-- NOTE: The next three elements deliberately lack their enclosing <dependency> parent element -->
@@ -20,4 +13,11 @@
       <version>2</version>
     </dependencies>
   </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng3645</groupId>
+      <artifactId>directdep</artifactId>
+      <version>1</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
index c9d4475..b0ed1fc 100644
--- a/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3652</groupId>
   <artifactId>test-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1.0</version>
+  <packaging>maven-plugin</packaging>
   <name>test-plugin Maven Mojo</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3652/test-plugin/src/main/java/org/apache/maven/its/mng3652/MyMojo.java b/core-it-suite/src/test/resources/mng-3652/test-plugin/src/main/java/org/apache/maven/its/mng3652/MyMojo.java
index 6b64950..6b7619b 100644
--- a/core-it-suite/src/test/resources/mng-3652/test-plugin/src/main/java/org/apache/maven/its/mng3652/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3652/test-plugin/src/main/java/org/apache/maven/its/mng3652/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng3652;
 
 import java.io.File;
@@ -17,8 +35,6 @@
 import org.apache.maven.execution.RuntimeInformation;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
@@ -32,11 +48,9 @@
  *
  * @phase validate
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
 
-    private static final String LS = System.getProperty( "line.separator" );
+    private static final String LS = System.getProperty("line.separator");
 
     /**
      * @parameter default-value="${project.build.directory}/touch.txt"
@@ -87,102 +101,83 @@
      */
     private File localRepoDir;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy();
-        policy.setChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
-        policy.setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        policy.setEnabled( true );
+        policy.setChecksumPolicy(ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE);
+        policy.setUpdatePolicy(ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS);
+        policy.setEnabled(true);
 
-        ArtifactRepository remote =
-            repositoryFactory.createArtifactRepository( "test", testProtocol + "://localhost:" + testPort, layout,
-                                                        policy, policy );
+        ArtifactRepository remote = repositoryFactory.createArtifactRepository(
+                "test", testProtocol + "://localhost:" + testPort, layout, policy, policy);
 
-        Artifact artifact = artifactFactory.createArtifact( "bad.group", "missing-artifact", "1", null, "jar" );
+        Artifact artifact = artifactFactory.createArtifact("bad.group", "missing-artifact", "1", null, "jar");
 
-        try
-        {
-            FileUtils.deleteDirectory( localRepoDir );
+        try {
+            FileUtils.deleteDirectory(localRepoDir);
 
-            ArtifactRepository local =
-                repositoryFactory.createArtifactRepository( "local", localRepoDir.toURL().toExternalForm(), layout,
-                                                            null, null );
+            ArtifactRepository local = repositoryFactory.createArtifactRepository(
+                    "local", localRepoDir.toURL().toExternalForm(), layout, null, null);
 
-            getLog().info( "Retrieving " + artifact + " from " + remote + " to " + local );
+            getLog().info("Retrieving " + artifact + " from " + remote + " to " + local);
 
-            resolver.resolveAlways( artifact, Collections.singletonList( remote ), local );
-        }
-        catch ( Exception e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
+            resolver.resolveAlways(artifact, Collections.singletonList(remote), local);
+        } catch (Exception e) {
+            throw new MojoExecutionException(e.getMessage(), e);
         }
 
         // consistency check to see that we actually spoke to the test server, helpful for debugging if
         // the test fails
-        try
-        {
-            String content = FileUtils.fileRead( artifact.getFile() ).trim();
-            if ( !content.equals( "some content" ) )
-            {
-                throw new MojoExecutionException( "Expected 'some content' but was '" + content + "'" );
+        try {
+            String content = FileUtils.fileRead(artifact.getFile()).trim();
+            if (!content.equals("some content")) {
+                throw new MojoExecutionException("Expected 'some content' but was '" + content + "'");
             }
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
+        } catch (IOException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
         }
 
         String artifactVersion;
         InputStream resourceAsStream = null;
-        try
-        {
+        try {
             Properties properties = new Properties();
-            resourceAsStream = Artifact.class.getClassLoader().getResourceAsStream( "META-INF/maven/org.apache.maven/maven-artifact/pom.properties" );
-            if ( resourceAsStream == null )
-            {
-                resourceAsStream = Artifact.class.getClassLoader().getResourceAsStream( "META-INF/maven/org.apache.maven.artifact/maven-artifact/pom.properties" );
+            resourceAsStream = Artifact.class
+                    .getClassLoader()
+                    .getResourceAsStream("META-INF/maven/org.apache.maven/maven-artifact/pom.properties");
+            if (resourceAsStream == null) {
+                resourceAsStream = Artifact.class
+                        .getClassLoader()
+                        .getResourceAsStream("META-INF/maven/org.apache.maven.artifact/maven-artifact/pom.properties");
             }
-            properties.load( resourceAsStream );
+            properties.load(resourceAsStream);
 
-            artifactVersion = properties.getProperty( "version" );
-            if ( artifactVersion == null )
-            {
-                throw new MojoExecutionException( "Artifact version not found" );
+            artifactVersion = properties.getProperty("version");
+            if (artifactVersion == null) {
+                throw new MojoExecutionException("Artifact version not found");
             }
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Unable to read properties file from maven-core", e );
-        }
-        finally
-        {
-            IOUtil.close( resourceAsStream );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Unable to read properties file from maven-core", e);
+        } finally {
+            IOUtil.close(resourceAsStream);
         }
 
         FileWriter w = null;
-        try
-        {
+        try {
             touchFile.getParentFile().mkdirs();
-            w = new FileWriter( touchFile );
+            w = new FileWriter(touchFile);
 
-            w.write( runtimeInformation.getApplicationVersion().toString() );
-            w.write( LS );
-            w.write( System.getProperty( "java.version" ) );
-            w.write( LS );
-            w.write( System.getProperty( "os.name" ) );
-            w.write( LS );
-            w.write( System.getProperty( "os.version" ) );
-            w.write( LS );
-            w.write( artifactVersion );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to write touch-file: " + touchFile, e );
-        }
-        finally
-        {
-            IOUtil.close( w );
+            w.write(runtimeInformation.getApplicationVersion().toString());
+            w.write(LS);
+            w.write(System.getProperty("java.version"));
+            w.write(LS);
+            w.write(System.getProperty("os.name"));
+            w.write(LS);
+            w.write(System.getProperty("os.version"));
+            w.write(LS);
+            w.write(artifactVersion);
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to write touch-file: " + touchFile, e);
+        } finally {
+            IOUtil.close(w);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3652/test-project/pom.xml b/core-it-suite/src/test/resources/mng-3652/test-project/pom.xml
index 6e5ded4..80dfa31 100644
--- a/core-it-suite/src/test/resources/mng-3652/test-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3652/test-project/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3652</groupId>
   <artifactId>test-project</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <name>test-project</name>
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-3667/pom.xml b/core-it-suite/src/test/resources/mng-3667/pom.xml
index ea8c366..7d27cd2 100644
--- a/core-it-suite/src/test/resources/mng-3667/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3667/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3667</name>
-  <description>
-    Verify that dependency resolution gracefully ignores dependency POMs that have coordinates which don't
-    match the deployed artifact.
-  </description>
+  <description>Verify that dependency resolution gracefully ignores dependency POMs that have coordinates which don't
+    match the deployed artifact.</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3671/pom.xml b/core-it-suite/src/test/resources/mng-3671/pom.xml
index e61a236..c373cae 100644
--- a/core-it-suite/src/test/resources/mng-3671/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3671/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3671</groupId>
   <artifactId>plugin-level-dep-with-expression</artifactId>
-  <packaging>jar</packaging>
   <version>3.8.1</version>
+  <packaging>jar</packaging>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3671/src/main/java/testing/App.java b/core-it-suite/src/test/resources/mng-3671/src/main/java/testing/App.java
index 65ade62..e12fb32 100644
--- a/core-it-suite/src/test/resources/mng-3671/src/main/java/testing/App.java
+++ b/core-it-suite/src/test/resources/mng-3671/src/main/java/testing/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package testing;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3671/src/test/java/testing/AppTest.java b/core-it-suite/src/test/resources/mng-3671/src/test/java/testing/AppTest.java
index d9c8ff0..8d45fed 100644
--- a/core-it-suite/src/test/resources/mng-3671/src/test/java/testing/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3671/src/test/java/testing/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testing;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3679/pom.xml b/core-it-suite/src/test/resources/mng-3679/pom.xml
index e386a84..ec44adb 100644
--- a/core-it-suite/src/test/resources/mng-3679/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3679/pom.xml
@@ -4,11 +4,15 @@
 
   <groupId>org.apache.maven.its.mng3679</groupId>
   <artifactId>test</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
-  <name/>
-  <description/>
+  <name />
+  <description />
+
+  <properties>
+    <myExecId>test-id</myExecId>
+  </properties>
 
   <build>
     <plugins>
@@ -19,10 +23,10 @@
         <executions>
           <execution>
             <id>${myExecId}</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/check.txt</logFile>
               <string>${myExecId}</string>
@@ -32,8 +36,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <properties>
-    <myExecId>test-id</myExecId>
-  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3680/pom.xml b/core-it-suite/src/test/resources/mng-3680/pom.xml
index 49d8764..369651d 100644
--- a/core-it-suite/src/test/resources/mng-3680/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3680/pom.xml
@@ -1,16 +1,14 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3680</groupId>
   <artifactId>test</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3680</name>
-  <description>
-    Verify that dependencies with invalid POMs can still be used without failing the build.
-  </description>
+  <description>Verify that dependencies with invalid POMs can still be used without failing the build.</description>
 
   <dependencies>
     <dependency>
@@ -30,13 +28,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <testArtifacts>target/artifacts.txt</testArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
index 1bf8c97..7dd02ff 100644
--- a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3684</groupId>
   <artifactId>mavenit-mng3684-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
   <name>maven-mng3684-plugin Maven Mojo</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyMojo.java b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyMojo.java
index 5a5977a..75c7e91 100644
--- a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package plugin;
 
 /*
@@ -30,9 +48,7 @@
 /**
  * @goal check
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * @parameter default-value="${project.build}"
      * @required
@@ -47,76 +63,84 @@
      */
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         Build projectBuild = project.getBuild();
 
         Map failedComparisons = new HashMap();
 
-        check( "project.build.directory", projectBuild.getDirectory(), build.getDirectory(), failedComparisons );
+        check("project.build.directory", projectBuild.getDirectory(), build.getDirectory(), failedComparisons);
 
-        check( "project.build.outputDirectory", projectBuild.getOutputDirectory(), build.getOutputDirectory(),
-               failedComparisons );
+        check(
+                "project.build.outputDirectory",
+                projectBuild.getOutputDirectory(),
+                build.getOutputDirectory(),
+                failedComparisons);
 
-        check( "project.build.sourceDirectory", projectBuild.getSourceDirectory(), build.getSourceDirectory(),
-               failedComparisons );
+        check(
+                "project.build.sourceDirectory",
+                projectBuild.getSourceDirectory(),
+                build.getSourceDirectory(),
+                failedComparisons);
 
-        check( "project.build.testSourceDirectory", projectBuild.getTestSourceDirectory(),
-               build.getTestSourceDirectory(), failedComparisons );
+        check(
+                "project.build.testSourceDirectory",
+                projectBuild.getTestSourceDirectory(),
+                build.getTestSourceDirectory(),
+                failedComparisons);
 
-        check( "project.build.scriptSourceDirectory", projectBuild.getScriptSourceDirectory(),
-               build.getScriptSourceDirectory(), failedComparisons );
+        check(
+                "project.build.scriptSourceDirectory",
+                projectBuild.getScriptSourceDirectory(),
+                build.getScriptSourceDirectory(),
+                failedComparisons);
 
         List projectResources = projectBuild.getResources();
         List buildResources = build.getResources();
 
-        if ( projectResources != null )
-        {
-            for ( int i = 0; i < projectResources.size(); i++ )
-            {
-                Resource projectRes = (Resource) projectResources.get( i );
-                Resource buildRes = (Resource) buildResources.get( i );
+        if (projectResources != null) {
+            for (int i = 0; i < projectResources.size(); i++) {
+                Resource projectRes = (Resource) projectResources.get(i);
+                Resource buildRes = (Resource) buildResources.get(i);
 
-                check( "project.build.resources[" + i + "].directory", projectRes.getDirectory(),
-                       buildRes.getDirectory(), failedComparisons );
+                check(
+                        "project.build.resources[" + i + "].directory",
+                        projectRes.getDirectory(),
+                        buildRes.getDirectory(),
+                        failedComparisons);
 
-                check( "project.build.resources[" + i + "].targetPath", projectRes.getTargetPath(),
-                       buildRes.getTargetPath(), failedComparisons );
+                check(
+                        "project.build.resources[" + i + "].targetPath",
+                        projectRes.getTargetPath(),
+                        buildRes.getTargetPath(),
+                        failedComparisons);
             }
         }
 
-        if ( !failedComparisons.isEmpty() )
-        {
+        if (!failedComparisons.isEmpty()) {
             StringBuffer buffer = new StringBuffer();
 
-            buffer.append( "One or more build-section values were not interpolated correctly"
-                + "\nbefore the build instance was injected as a plugin parameter:\n" );
+            buffer.append("One or more build-section values were not interpolated correctly"
+                    + "\nbefore the build instance was injected as a plugin parameter:\n");
 
-            for ( Iterator it = failedComparisons.entrySet().iterator(); it.hasNext(); )
-            {
+            for (Iterator it = failedComparisons.entrySet().iterator(); it.hasNext(); ) {
                 Map.Entry entry = (Map.Entry) it.next();
                 String key = (String) entry.getKey();
                 String[] value = (String[]) entry.getValue();
 
-                buffer.append( "\n- " ).append( key );
-                buffer.append( "\n\tShould be: \'" ).append( value[0] );
-                buffer.append( "\'\n\t Was: \'" ).append( value[1] ).append( "\'\n" );
+                buffer.append("\n- ").append(key);
+                buffer.append("\n\tShould be: \'").append(value[0]);
+                buffer.append("\'\n\t Was: \'").append(value[1]).append("\'\n");
             }
 
-            throw new MojoExecutionException( buffer.toString() );
+            throw new MojoExecutionException(buffer.toString());
         }
     }
 
-    private void check( String description, String projectValue, String buildValue, Map failedComparisons )
-    {
-        if ( projectValue == null && buildValue != null )
-        {
-            failedComparisons.put( description, new String[] { projectValue, buildValue } );
-        }
-        else if ( projectValue != null && !projectValue.equals( buildValue ) )
-        {
-            failedComparisons.put( description, new String[] { projectValue, buildValue } );
+    private void check(String description, String projectValue, String buildValue, Map failedComparisons) {
+        if (projectValue == null && buildValue != null) {
+            failedComparisons.put(description, new String[] {projectValue, buildValue});
+        } else if (projectValue != null && !projectValue.equals(buildValue)) {
+            failedComparisons.put(description, new String[] {projectValue, buildValue});
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyReport.java b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyReport.java
index ea6ccf1..e92803e 100644
--- a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyReport.java
+++ b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/src/main/java/plugin/MyReport.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package plugin;
 
 /*
@@ -32,9 +50,7 @@
 /**
  * @goal check-report
  */
-public class MyReport
-    extends AbstractMavenReport
-{
+public class MyReport extends AbstractMavenReport {
     /**
      * @parameter default-value="${project.build}"
      * @required
@@ -49,112 +65,112 @@
      */
     private MavenProject project;
 
-    private void runChecks()
-        throws MavenReportException
-    {
+    private void runChecks() throws MavenReportException {
         Build projectBuild = project.getBuild();
 
         Map failedComparisons = new HashMap();
 
-        check( "project.build.directory", projectBuild.getDirectory(), build.getDirectory(), failedComparisons );
+        check("project.build.directory", projectBuild.getDirectory(), build.getDirectory(), failedComparisons);
 
-        check( "project.build.outputDirectory", projectBuild.getOutputDirectory(), build.getOutputDirectory(),
-               failedComparisons );
+        check(
+                "project.build.outputDirectory",
+                projectBuild.getOutputDirectory(),
+                build.getOutputDirectory(),
+                failedComparisons);
 
-        check( "project.build.sourceDirectory", projectBuild.getSourceDirectory(), build.getSourceDirectory(),
-               failedComparisons );
+        check(
+                "project.build.sourceDirectory",
+                projectBuild.getSourceDirectory(),
+                build.getSourceDirectory(),
+                failedComparisons);
 
-        check( "project.build.testSourceDirectory", projectBuild.getTestSourceDirectory(),
-               build.getTestSourceDirectory(), failedComparisons );
+        check(
+                "project.build.testSourceDirectory",
+                projectBuild.getTestSourceDirectory(),
+                build.getTestSourceDirectory(),
+                failedComparisons);
 
-        check( "project.build.scriptSourceDirectory", projectBuild.getScriptSourceDirectory(),
-               build.getScriptSourceDirectory(), failedComparisons );
+        check(
+                "project.build.scriptSourceDirectory",
+                projectBuild.getScriptSourceDirectory(),
+                build.getScriptSourceDirectory(),
+                failedComparisons);
 
         List projectResources = projectBuild.getResources();
         List buildResources = build.getResources();
 
-        if ( projectResources != null )
-        {
-            for ( int i = 0; i < projectResources.size(); i++ )
-            {
-                Resource projectRes = (Resource) projectResources.get( i );
-                Resource buildRes = (Resource) buildResources.get( i );
+        if (projectResources != null) {
+            for (int i = 0; i < projectResources.size(); i++) {
+                Resource projectRes = (Resource) projectResources.get(i);
+                Resource buildRes = (Resource) buildResources.get(i);
 
-                check( "project.build.resources[" + i + "].directory", projectRes.getDirectory(),
-                       buildRes.getDirectory(), failedComparisons );
+                check(
+                        "project.build.resources[" + i + "].directory",
+                        projectRes.getDirectory(),
+                        buildRes.getDirectory(),
+                        failedComparisons);
 
-                check( "project.build.resources[" + i + "].targetPath", projectRes.getTargetPath(),
-                       buildRes.getTargetPath(), failedComparisons );
+                check(
+                        "project.build.resources[" + i + "].targetPath",
+                        projectRes.getTargetPath(),
+                        buildRes.getTargetPath(),
+                        failedComparisons);
             }
         }
 
-        if ( !failedComparisons.isEmpty() )
-        {
+        if (!failedComparisons.isEmpty()) {
             StringBuffer buffer = new StringBuffer();
 
-            buffer.append( "One or more build-section values were not interpolated correctly"
-                + "\nbefore the build instance was injected as a plugin parameter:\n" );
+            buffer.append("One or more build-section values were not interpolated correctly"
+                    + "\nbefore the build instance was injected as a plugin parameter:\n");
 
-            for ( Iterator it = failedComparisons.entrySet().iterator(); it.hasNext(); )
-            {
+            for (Iterator it = failedComparisons.entrySet().iterator(); it.hasNext(); ) {
                 Map.Entry entry = (Map.Entry) it.next();
                 String key = (String) entry.getKey();
                 String[] value = (String[]) entry.getValue();
 
-                buffer.append( "\n- " ).append( key );
-                buffer.append( "\n\tShould be: \'" ).append( value[0] );
-                buffer.append( "\'\n\t Was: \'" ).append( value[1] ).append( "\'\n" );
+                buffer.append("\n- ").append(key);
+                buffer.append("\n\tShould be: \'").append(value[0]);
+                buffer.append("\'\n\t Was: \'").append(value[1]).append("\'\n");
             }
 
-            throw new MavenReportException( buffer.toString() );
+            throw new MavenReportException(buffer.toString());
         }
     }
 
-    private void check( String description, String projectValue, String buildValue, Map failedComparisons )
-    {
-        if ( projectValue == null && buildValue != null )
-        {
-            failedComparisons.put( description, new String[] { projectValue, buildValue } );
-        }
-        else if ( projectValue != null && !projectValue.equals( buildValue ) )
-        {
-            failedComparisons.put( description, new String[] { projectValue, buildValue } );
+    private void check(String description, String projectValue, String buildValue, Map failedComparisons) {
+        if (projectValue == null && buildValue != null) {
+            failedComparisons.put(description, new String[] {projectValue, buildValue});
+        } else if (projectValue != null && !projectValue.equals(buildValue)) {
+            failedComparisons.put(description, new String[] {projectValue, buildValue});
         }
     }
 
-    protected void executeReport( Locale locale )
-        throws MavenReportException
-    {
+    protected void executeReport(Locale locale) throws MavenReportException {
         runChecks();
     }
 
-    protected String getOutputDirectory()
-    {
+    protected String getOutputDirectory() {
         return project.getReporting().getOutputDirectory();
     }
 
-    protected MavenProject getProject()
-    {
+    protected MavenProject getProject() {
         return project;
     }
 
-    protected Renderer getSiteRenderer()
-    {
+    protected Renderer getSiteRenderer() {
         return null;
     }
 
-    public String getDescription( Locale locale )
-    {
+    public String getDescription(Locale locale) {
         return "test";
     }
 
-    public String getName( Locale locale )
-    {
+    public String getName(Locale locale) {
         return "test";
     }
 
-    public String getOutputName()
-    {
+    public String getOutputName() {
         return "test";
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3684/project/pom.xml b/core-it-suite/src/test/resources/mng-3684/project/pom.xml
index da5fa03..00d490c 100644
--- a/core-it-suite/src/test/resources/mng-3684/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3684/project/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3684</groupId>
   <artifactId>mng3684-project</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <build>
     <pluginManagement>
@@ -23,10 +23,10 @@
         <executions>
           <execution>
             <id>check</id>
-            <phase>validate</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
index 573f388..d56f289 100644
--- a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3693</groupId>
   <artifactId>mavenit-mng3693-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
   <name>maven-mng3693-plugin Maven Mojo</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/src/main/java/plugin/MyMojo.java b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/src/main/java/plugin/MyMojo.java
index 4ddca61..c5ce0c9 100644
--- a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/src/main/java/plugin/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/src/main/java/plugin/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package plugin;
 
 /*
@@ -28,32 +46,25 @@
  * @goal move-pom
  * @phase package
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * @parameter expression="${project}"
      * @required
      */
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File pomFile = project.getFile();
 
-        File movedPomFile = new File( project.getBuild().getDirectory(), "pom.xml" );
+        File movedPomFile = new File(project.getBuild().getDirectory(), "pom.xml");
         movedPomFile.getParentFile().mkdirs();
 
-        try
-        {
-            FileUtils.copyFile( pomFile, movedPomFile );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to copy pom file: " + pomFile + " to: " + movedPomFile, e );
+        try {
+            FileUtils.copyFile(pomFile, movedPomFile);
+        } catch (IOException e) {
+            throw new MojoExecutionException("Failed to copy pom file: " + pomFile + " to: " + movedPomFile, e);
         }
 
-        project.setFile( movedPomFile );
+        project.setFile(movedPomFile);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3693/projects/app/pom.xml b/core-it-suite/src/test/resources/mng-3693/projects/app/pom.xml
index 45d38c6..0e78972 100644
--- a/core-it-suite/src/test/resources/mng-3693/projects/app/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3693/projects/app/pom.xml
@@ -1,14 +1,15 @@
-<?xml version="1.0"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng3693</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3693</groupId>
   <artifactId>app</artifactId>
-  <name>app</name>
   <version>1</version>
+  <name>app</name>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3693/projects/app/src/main/java/tests/app/App.java b/core-it-suite/src/test/resources/mng-3693/projects/app/src/main/java/tests/app/App.java
index 292f49b..245dffc 100644
--- a/core-it-suite/src/test/resources/mng-3693/projects/app/src/main/java/tests/app/App.java
+++ b/core-it-suite/src/test/resources/mng-3693/projects/app/src/main/java/tests/app/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package tests.app;
 
 import tests.dep.Dep;
@@ -6,11 +24,9 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
+public class App {
+    public static void main(String[] args) {
         new Dep();
-        System.out.println( "Hello World!" );
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3693/projects/dep/pom.xml b/core-it-suite/src/test/resources/mng-3693/projects/dep/pom.xml
index c9fc72f..256e957 100644
--- a/core-it-suite/src/test/resources/mng-3693/projects/dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3693/projects/dep/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.maven.its.mng3693</groupId>
+    <artifactId>parent</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3693</groupId>
   <artifactId>dep</artifactId>
   <version>1</version>
@@ -19,13 +20,13 @@
         <executions>
           <execution>
             <id>move-pom</id>
-            <phase>package</phase>
             <goals>
               <goal>move-pom</goal>
             </goals>
+            <phase>package</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3693/projects/dep/src/main/java/tests/dep/Dep.java b/core-it-suite/src/test/resources/mng-3693/projects/dep/src/main/java/tests/dep/Dep.java
index 94baa54..832e2c9 100644
--- a/core-it-suite/src/test/resources/mng-3693/projects/dep/src/main/java/tests/dep/Dep.java
+++ b/core-it-suite/src/test/resources/mng-3693/projects/dep/src/main/java/tests/dep/Dep.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package tests.dep;
 
 /**
  * Hello world!
  *
  */
-public class Dep
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class Dep {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3693/projects/pom.xml b/core-it-suite/src/test/resources/mng-3693/projects/pom.xml
index 5ad6768..fc41cf2 100644
--- a/core-it-suite/src/test/resources/mng-3693/projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3693/projects/pom.xml
@@ -9,4 +9,4 @@
     <module>dep</module>
     <module>app</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
index f70725e..ba8825b 100644
--- a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3694</groupId>
   <artifactId>mavenit-mng3694-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
   <name>maven-mng3694-plugin Maven Mojo</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/src/main/java/plugin/MyMojo.java b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/src/main/java/plugin/MyMojo.java
index 25fc70e..3f4e3c5 100644
--- a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/src/main/java/plugin/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/src/main/java/plugin/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package plugin;
 
 /*
@@ -27,9 +45,7 @@
  * @goal check
  * @phase validate
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
 
     /**
      * Not used, just an offset to place reactorProjects in the middle.
@@ -49,24 +65,21 @@
      */
     private String outputDirectory2;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
-        {
+    public void execute() throws MojoExecutionException {
+        for (Iterator it = reactorProjects.iterator(); it.hasNext(); ) {
             MavenProject project = (MavenProject) it.next();
 
             String basedir = project.getBasedir().getAbsolutePath();
             List compileSourceRoots = project.getCompileSourceRoots();
 
-            System.out.println( " Compile-source roots for project: " + project + " are: " + project.getCompileSourceRoots() );
-            for ( Iterator srcIt = compileSourceRoots.iterator(); srcIt.hasNext(); )
-            {
+            System.out.println(
+                    " Compile-source roots for project: " + project + " are: " + project.getCompileSourceRoots());
+            for (Iterator srcIt = compileSourceRoots.iterator(); srcIt.hasNext(); ) {
                 String srcRoot = (String) srcIt.next();
 
-                if ( !srcRoot.startsWith( basedir ) )
-                {
-                    throw new MojoExecutionException( "Source root: " + srcRoot + " doesn't begin with project basedir: " + basedir );
+                if (!srcRoot.startsWith(basedir)) {
+                    throw new MojoExecutionException(
+                            "Source root: " + srcRoot + " doesn't begin with project basedir: " + basedir);
                 }
             }
         }
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/not-used/pom.xml b/core-it-suite/src/test/resources/mng-3694/projects/not-used/pom.xml
index 721c738..9730108 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/not-used/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3694/projects/not-used/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3694</groupId>
   <artifactId>not-used</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/main/java/tests/App.java b/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/main/java/tests/App.java
index b25f5c2..10c3cb0 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/main/java/tests/App.java
+++ b/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/main/java/tests/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package tests;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/test/java/tests/AppTest.java b/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/test/java/tests/AppTest.java
index 7bf277a..5abee27 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/test/java/tests/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3694/projects/not-used/src/test/java/tests/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package tests;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/pom.xml b/core-it-suite/src/test/resources/mng-3694/projects/pom.xml
index 8bba052..61962fb 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3694/projects/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3694</groupId>
   <artifactId>projects</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>not-used</module>
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/project/pom.xml b/core-it-suite/src/test/resources/mng-3694/projects/project/pom.xml
index 3966468..4d1449f 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3694/projects/project/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3694</groupId>
   <artifactId>project</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <dependencies>
     <dependency>
@@ -24,10 +24,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/project/src/main/java/tests/App.java b/core-it-suite/src/test/resources/mng-3694/projects/project/src/main/java/tests/App.java
index b25f5c2..10c3cb0 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/project/src/main/java/tests/App.java
+++ b/core-it-suite/src/test/resources/mng-3694/projects/project/src/main/java/tests/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package tests;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3694/projects/project/src/test/java/tests/AppTest.java b/core-it-suite/src/test/resources/mng-3694/projects/project/src/test/java/tests/AppTest.java
index 7bf277a..5abee27 100644
--- a/core-it-suite/src/test/resources/mng-3694/projects/project/src/test/java/tests/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-3694/projects/project/src/test/java/tests/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package tests;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3701/pom.xml b/core-it-suite/src/test/resources/mng-3701/pom.xml
index d8dad0f..9ae478d 100644
--- a/core-it-suite/src/test/resources/mng-3701/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3701/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3701</name>
-  <description>
-    Verify that profiles without explicit id get a default id and in particular don't cause NPEs when
-    they are active by default.
-  </description>
+  <description>Verify that profiles without explicit id get a default id and in particular don't cause NPEs when
+    they are active by default.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
index 604dde4..a508c3b 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
@@ -3,9 +3,9 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3703</groupId>
   <artifactId>mavenit-mng3703-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>maven-mng3703-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/AbstractCheckMojo.java b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/AbstractCheckMojo.java
index e2b9a86..4878641 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/AbstractCheckMojo.java
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/AbstractCheckMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -25,9 +43,7 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
 
-public abstract class AbstractCheckMojo
-    extends AbstractMojo
-{
+public abstract class AbstractCheckMojo extends AbstractMojo {
 
     protected static boolean forkHasRun = false;
 
@@ -45,54 +61,52 @@
      */
     private MavenProject executionProject;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        if ( getMainProject().getBasedir() == null )
-        {
-            throw new MojoExecutionException( "Basedir is null on the main project instance." );
+    public void execute() throws MojoExecutionException {
+        if (getMainProject().getBasedir() == null) {
+            throw new MojoExecutionException("Basedir is null on the main project instance.");
         }
 
-        if ( getTestProject().getBasedir() == null )
-        {
-            throw new MojoExecutionException( "Basedir is null on the " + getTestProjectLabel() + " instance (during mojo execution)." );
+        if (getTestProject().getBasedir() == null) {
+            throw new MojoExecutionException(
+                    "Basedir is null on the " + getTestProjectLabel() + " instance (during mojo execution).");
         }
 
         String executionBasedir = getTestProject().getBasedir().getAbsolutePath();
 
         Map failedPaths = new LinkedHashMap();
 
-        checkListOfPaths( getTestProject().getCompileSourceRoots(), executionBasedir, "compileSourceRoots", failedPaths );
-        checkListOfPaths( getTestProject().getTestCompileSourceRoots(), executionBasedir, "testCompileSourceRoots", failedPaths );
+        checkListOfPaths(getTestProject().getCompileSourceRoots(), executionBasedir, "compileSourceRoots", failedPaths);
+        checkListOfPaths(
+                getTestProject().getTestCompileSourceRoots(), executionBasedir, "testCompileSourceRoots", failedPaths);
 
         // MNG-3741: Don't worry about relative paths in scriptSourceRoots.
-        // checkListOfPaths( getTestProject().getScriptSourceRoots(), executionBasedir, "scriptSourceRoots", failedPaths );
+        // checkListOfPaths( getTestProject().getScriptSourceRoots(), executionBasedir, "scriptSourceRoots", failedPaths
+        // );
 
-
-        if ( !failedPaths.isEmpty() )
-        {
+        if (!failedPaths.isEmpty()) {
             StringBuffer buffer = new StringBuffer();
-            buffer.append( "The following paths were relative (should have been absolute):" );
-            for ( Iterator it = failedPaths.entrySet().iterator(); it.hasNext(); )
-            {
+            buffer.append("The following paths were relative (should have been absolute):");
+            for (Iterator it = failedPaths.entrySet().iterator(); it.hasNext(); ) {
                 Map.Entry entry = (Map.Entry) it.next();
 
-                buffer.append( "\n-  " ).append( entry.getKey() ).append( ": '" ).append( entry.getValue() ).append( "'" );
+                buffer.append("\n-  ")
+                        .append(entry.getKey())
+                        .append(": '")
+                        .append(entry.getValue())
+                        .append("'");
             }
 
-            throw new MojoExecutionException( buffer.toString() );
+            throw new MojoExecutionException(buffer.toString());
         }
 
         forkHasRun = true;
     }
 
-    protected MavenProject getMainProject()
-    {
+    protected MavenProject getMainProject() {
         return project;
     }
 
-    protected MavenProject getExecutionProject()
-    {
+    protected MavenProject getExecutionProject() {
         return executionProject;
     }
 
@@ -100,16 +114,12 @@
 
     protected abstract String getTestProjectLabel();
 
-    private void checkListOfPaths( List paths, String base, String label, Map failedPaths )
-    {
-        if ( paths != null && !paths.isEmpty() )
-        {
-            for ( int i = 0; i < paths.size(); i++ )
-            {
-                String root = (String) paths.get( i );
-                if ( !root.startsWith( base ) )
-                {
-                    failedPaths.put( label + "[" + i + "]", root );
+    private void checkListOfPaths(List paths, String base, String label, Map failedPaths) {
+        if (paths != null && !paths.isEmpty()) {
+            for (int i = 0; i < paths.size(); i++) {
+                String root = (String) paths.get(i);
+                if (!root.startsWith(base)) {
+                    failedPaths.put(label + "[" + i + "]", root);
                 }
             }
         }
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckMojo.java b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckMojo.java
index 9db0c2b..7580818 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckMojo.java
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -22,17 +40,13 @@
  * @goal check
  * @execute phase="compile"
  */
-public class CheckMojo
-    extends AbstractCheckMojo
-{
+public class CheckMojo extends AbstractCheckMojo {
 
-    protected MavenProject getTestProject()
-    {
+    protected MavenProject getTestProject() {
         return getExecutionProject();
     }
 
-    protected String getTestProjectLabel()
-    {
+    protected String getTestProjectLabel() {
         return "forked project";
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckReport.java b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckReport.java
index 301008a..21b213e 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckReport.java
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/CheckReport.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -25,7 +43,6 @@
 import org.apache.maven.doxia.siterenderer.DefaultSiteRenderer;
 import org.apache.maven.doxia.siterenderer.Renderer;
 import org.apache.maven.project.MavenProject;
-
 import org.apache.maven.reporting.AbstractMavenReport;
 import org.apache.maven.reporting.MavenReportException;
 
@@ -33,9 +50,7 @@
  * @goal check-report
  * @execute phase="compile"
  */
-public class CheckReport
-    extends AbstractMavenReport
-{
+public class CheckReport extends AbstractMavenReport {
 
     /**
      * @parameter default-value="${project}"
@@ -57,98 +72,84 @@
      */
     private String outputDirectory;
 
-    protected void executeReport( Locale locale )
-        throws MavenReportException
-    {
-        if ( getMainProject().getBasedir() == null )
-        {
-            throw new MavenReportException( "Basedir is null on the main project instance." );
+    protected void executeReport(Locale locale) throws MavenReportException {
+        if (getMainProject().getBasedir() == null) {
+            throw new MavenReportException("Basedir is null on the main project instance.");
         }
 
-        if ( executionProject.getBasedir() == null )
-        {
-            throw new MavenReportException( "Basedir is null on the forked project instance (during report execution)." );
+        if (executionProject.getBasedir() == null) {
+            throw new MavenReportException("Basedir is null on the forked project instance (during report execution).");
         }
 
         String executionBasedir = executionProject.getBasedir().getAbsolutePath();
 
         Map failedPaths = new LinkedHashMap();
 
-        checkListOfPaths( executionProject.getCompileSourceRoots(), executionBasedir, "compileSourceRoots", failedPaths );
-        checkListOfPaths( executionProject.getTestCompileSourceRoots(), executionBasedir, "testCompileSourceRoots",
-                          failedPaths );
+        checkListOfPaths(executionProject.getCompileSourceRoots(), executionBasedir, "compileSourceRoots", failedPaths);
+        checkListOfPaths(
+                executionProject.getTestCompileSourceRoots(), executionBasedir, "testCompileSourceRoots", failedPaths);
 
         // MNG-3741: Don't worry about relative paths in scriptSourceRoots.
-        // checkListOfPaths( executionProject.getScriptSourceRoots(), executionBasedir, "scriptSourceRoots", failedPaths );
+        // checkListOfPaths( executionProject.getScriptSourceRoots(), executionBasedir, "scriptSourceRoots", failedPaths
+        // );
 
-        if ( !failedPaths.isEmpty() )
-        {
+        if (!failedPaths.isEmpty()) {
             StringBuffer buffer = new StringBuffer();
-            buffer.append( "The following paths were relative (should have been absolute):" );
-            for ( Iterator it = failedPaths.entrySet().iterator(); it.hasNext(); )
-            {
+            buffer.append("The following paths were relative (should have been absolute):");
+            for (Iterator it = failedPaths.entrySet().iterator(); it.hasNext(); ) {
                 Map.Entry entry = (Map.Entry) it.next();
 
-                buffer.append( "\n-  " ).append( entry.getKey() ).append( ": '" ).append( entry.getValue() ).append(
-                                                                                                                     "'" );
+                buffer.append("\n-  ")
+                        .append(entry.getKey())
+                        .append(": '")
+                        .append(entry.getValue())
+                        .append("'");
             }
 
-            throw new MavenReportException( buffer.toString() );
+            throw new MavenReportException(buffer.toString());
         }
     }
 
-    protected MavenProject getMainProject()
-    {
+    protected MavenProject getMainProject() {
         return project;
     }
 
-    protected MavenProject getExecutionProject()
-    {
+    protected MavenProject getExecutionProject() {
         return executionProject;
     }
 
-    private void checkListOfPaths( List paths, String base, String label, Map failedPaths )
-    {
-        if ( paths != null && !paths.isEmpty() )
-        {
-            for ( int i = 0; i < paths.size(); i++ )
-            {
-                String root = (String) paths.get( i );
-                if ( !root.startsWith( base ) )
-                {
-                    failedPaths.put( label + "[" + i + "]", root );
+    private void checkListOfPaths(List paths, String base, String label, Map failedPaths) {
+        if (paths != null && !paths.isEmpty()) {
+            for (int i = 0; i < paths.size(); i++) {
+                String root = (String) paths.get(i);
+                if (!root.startsWith(base)) {
+                    failedPaths.put(label + "[" + i + "]", root);
                 }
             }
         }
     }
 
-    protected String getOutputDirectory()
-    {
+    protected String getOutputDirectory() {
         return outputDirectory;
     }
 
-    protected MavenProject getProject()
-    {
+    protected MavenProject getProject() {
         return project;
     }
 
-    protected Renderer getSiteRenderer()
-    {
+    protected Renderer getSiteRenderer() {
         return new DefaultSiteRenderer();
     }
 
-    public String getDescription( Locale locale )
-    {
+    public String getDescription(Locale locale) {
         return getOutputName();
     }
 
-    public String getName( Locale locale )
-    {
+    public String getName(Locale locale) {
         return getOutputName();
     }
 
-    public String getOutputName()
-    {
+    public String getOutputName() {
         return "check-report";
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/RunMojo.java b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/RunMojo.java
index 180f0eb..8a47483 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/RunMojo.java
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/src/main/java/jar/RunMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -23,31 +41,22 @@
  * @goal run
  * @phase validate
  */
-public class RunMojo
-    extends AbstractCheckMojo
-{
+public class RunMojo extends AbstractCheckMojo {
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        if ( forkHasRun )
-        {
-            getLog().info( "Not running inside a forked execution; skipping this mojo's execution." );
+    public void execute() throws MojoExecutionException {
+        if (forkHasRun) {
+            getLog().info("Not running inside a forked execution; skipping this mojo's execution.");
             return;
         }
 
         super.execute();
     }
 
-    protected MavenProject getTestProject()
-    {
+    protected MavenProject getTestProject() {
         return getMainProject();
     }
 
-    protected String getTestProjectLabel()
-    {
+    protected String getTestProjectLabel() {
         return "main-project";
     }
-
-
 }
diff --git a/core-it-suite/src/test/resources/mng-3703/project/pom.xml b/core-it-suite/src/test/resources/mng-3703/project/pom.xml
index 9cdd076..1825e64 100644
--- a/core-it-suite/src/test/resources/mng-3703/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3703/project/pom.xml
@@ -1,9 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3703</groupId>
   <artifactId>project</artifactId>
-  <name>project</name>
   <version>1</version>
+  <name>project</name>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -31,10 +32,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>package</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>package</phase>
           </execution>
         </executions>
       </plugin>
@@ -58,4 +59,4 @@
       </plugin>
     </plugins>
   </reporting>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3703/project/src/main/java/jar/App.java b/core-it-suite/src/test/resources/mng-3703/project/src/main/java/jar/App.java
index ab568ab..37d811a 100644
--- a/core-it-suite/src/test/resources/mng-3703/project/src/main/java/jar/App.java
+++ b/core-it-suite/src/test/resources/mng-3703/project/src/main/java/jar/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package jar;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
index fb7664e..bffc7d4 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
@@ -1,9 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3710</groupId>
   <artifactId>mavenit-mng3710-directInvoke-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
@@ -18,4 +19,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/src/main/java/jar/MyMojo.java
index 9053853..9007fc3 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -22,12 +40,8 @@
 /**
  * @goal run
  */
-public class MyMojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-        getLog().info( "Direct-invoke mojo executed." );
+public class MyMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {
+        getLog().info("Direct-invoke mojo executed.");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
index 42288dc..e28acb4 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
@@ -1,9 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3710</groupId>
   <artifactId>mavenit-mng3710-originalModel-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/src/main/java/jar/MyMojo.java
index 001da3b..9beecec 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -28,9 +46,7 @@
 /**
  * @goal check
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * @parameter default-value="${project}"
      * @required
@@ -38,24 +54,23 @@
      */
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         Model originalModel = project.getOriginalModel();
         Build originalBuild = originalModel.getBuild();
 
         Map originalPluginMap = originalBuild.getPluginsAsMap();
 
-        if ( originalPluginMap.containsKey( Plugin.constructKey( "org.apache.maven.its.mng3710", "maven-mng3710-directInvoke-plugin" ) ) )
-        {
-            throw new MojoExecutionException( "Project's original model has been polluted by an entry for a plugin that was invoked directly from the command line." );
+        if (originalPluginMap.containsKey(
+                Plugin.constructKey("org.apache.maven.its.mng3710", "maven-mng3710-directInvoke-plugin"))) {
+            throw new MojoExecutionException(
+                    "Project's original model has been polluted by an entry for a plugin that was invoked directly from the command line.");
         }
 
-        if ( originalPluginMap.containsKey( Plugin.constructKey( "org.apache.maven.plugins", "maven-compiler-plugin" ) ) )
-        {
-            throw new MojoExecutionException( "Project's original model has been polluted by an entry for a plugin that is specified in the lifecycle mapping for this project's packaging." );
+        if (originalPluginMap.containsKey(Plugin.constructKey("org.apache.maven.plugins", "maven-compiler-plugin"))) {
+            throw new MojoExecutionException(
+                    "Project's original model has been polluted by an entry for a plugin that is specified in the lifecycle mapping for this project's packaging.");
         }
 
-        getLog().info( "Original-model verification completed successfully." );
+        getLog().info("Original-model verification completed successfully.");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/pom.xml
index 53e5f8a..062c007 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/pom.xml
@@ -10,4 +10,4 @@
     <module>maven-mng3710-directInvoke-plugin</module>
     <module>maven-mng3710-originalModel-plugin</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/project/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/project/pom.xml
index e15682c..5b4bd6d 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/project/pom.xml
@@ -17,13 +17,13 @@
         <executions>
           <execution>
             <id>check</id>
-            <phase>package</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>package</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
index 338f54e..acf650e 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
@@ -1,9 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3710</groupId>
   <artifactId>mavenit-mng3710-pomInheritance-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
@@ -18,4 +19,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/src/main/java/jar/MyMojo.java
index 842ac81..03c346a 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -16,13 +34,13 @@
  * limitations under the License.
  */
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
 /**
  * Goal which touches a timestamp file.
  *
@@ -30,9 +48,7 @@
  *
  * @phase process-sources
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * Location of the file.
      * @parameter expression="${project.build.directory}/touch.txt"
@@ -40,37 +56,25 @@
      */
     private File touchFile;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File dir = touchFile.getParentFile();
 
-        if ( dir != null && !dir.exists() )
-        {
+        if (dir != null && !dir.exists()) {
             dir.mkdirs();
         }
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touchFile );
+        try {
+            w = new FileWriter(touchFile);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touchFile, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touchFile, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/child/pom.xml b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/child/pom.xml
index 642e3a1..9d0f008 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/child/pom.xml
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>middle</artifactId>
     <groupId>org.apache.maven.its.mng3710</groupId>
+    <artifactId>middle</artifactId>
     <version>1</version>
   </parent>
   <groupId>org.apache.maven.its.mng3710</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/pom.xml b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/pom.xml
index d908073..63baf09 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/middle/pom.xml
@@ -2,10 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-        <artifactId>projects</artifactId>
-        <groupId>org.apache.maven.its.mng3710</groupId>
-        <version>1</version>
-    </parent>
+    <groupId>org.apache.maven.its.mng3710</groupId>
+    <artifactId>projects</artifactId>
+    <version>1</version>
+  </parent>
   <groupId>org.apache.maven.its.mng3710</groupId>
   <artifactId>middle</artifactId>
   <version>1</version>
@@ -24,10 +24,10 @@
           <executions>
             <execution>
               <id>touch</id>
-              <phase>validate</phase>
               <goals>
                 <goal>touch</goal>
               </goals>
+              <phase>validate</phase>
             </execution>
           </executions>
         </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/pom.xml b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/pom.xml
index 59de7a4..5f53cde 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/projects/pom.xml
@@ -19,4 +19,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3714/pom.xml b/core-it-suite/src/test/resources/mng-3714/pom.xml
index 1907930..2394927 100644
--- a/core-it-suite/src/test/resources/mng-3714/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3714/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -38,10 +36,10 @@
         <executions>
           <execution>
             <id>select-toolchain</id>
-            <phase>validate</phase>
             <goals>
               <goal>toolchain</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/toolchains.properties</outputFile>
               <type>jdk</type>
@@ -51,10 +49,10 @@
           </execution>
           <execution>
             <id>find-tool</id>
-            <phase>initialize</phase>
             <goals>
               <goal>find-tool</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/tool.properties</outputFile>
               <type>jdk</type>
diff --git a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
index 890a121..8fd9c3b 100644
--- a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3716</groupId>
   <artifactId>mavenit-mng3716-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>maven-mng3716-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -19,4 +20,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/src/main/java/jar/MyMojo.java
index 241fbc0..7d6afc4 100644
--- a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -24,12 +42,8 @@
  * @aggregator
  * @execute phase="package"
  */
-public class MyMojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-        getLog().info( "Aggregator mojo executed." );
+public class MyMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {
+        getLog().info("Aggregator mojo executed.");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3716/projects/child1/pom.xml b/core-it-suite/src/test/resources/mng-3716/projects/child1/pom.xml
index 2d72319..7334099 100644
--- a/core-it-suite/src/test/resources/mng-3716/projects/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3716/projects/child1/pom.xml
@@ -1,14 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>projects</artifactId>
     <groupId>org.apache.maven.its.mng3716</groupId>
+    <artifactId>projects</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3716</groupId>
   <artifactId>child1</artifactId>
-  <name>child1</name>
   <version>1</version>
+  <name>child1</name>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -18,4 +19,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3716/projects/child1/src/main/java/jar/App.java b/core-it-suite/src/test/resources/mng-3716/projects/child1/src/main/java/jar/App.java
index ab568ab..37d811a 100644
--- a/core-it-suite/src/test/resources/mng-3716/projects/child1/src/main/java/jar/App.java
+++ b/core-it-suite/src/test/resources/mng-3716/projects/child1/src/main/java/jar/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package jar;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3716/projects/child2/pom.xml b/core-it-suite/src/test/resources/mng-3716/projects/child2/pom.xml
index f035407..c590406 100644
--- a/core-it-suite/src/test/resources/mng-3716/projects/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3716/projects/child2/pom.xml
@@ -1,14 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>projects</artifactId>
     <groupId>org.apache.maven.its.mng3716</groupId>
+    <artifactId>projects</artifactId>
     <version>1</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3716</groupId>
   <artifactId>child2</artifactId>
-  <name>child2</name>
   <version>1</version>
+  <name>child2</name>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -18,4 +19,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3716/projects/child2/src/main/java/jar/App.java b/core-it-suite/src/test/resources/mng-3716/projects/child2/src/main/java/jar/App.java
index ab568ab..37d811a 100644
--- a/core-it-suite/src/test/resources/mng-3716/projects/child2/src/main/java/jar/App.java
+++ b/core-it-suite/src/test/resources/mng-3716/projects/child2/src/main/java/jar/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package jar;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3719/pom.xml b/core-it-suite/src/test/resources/mng-3719/pom.xml
index 6ee9fdc..ddd2c73 100644
--- a/core-it-suite/src/test/resources/mng-3719/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3719/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3719</name>
-  <description>
-    Test the plugins are executed in the order given in the POM.
-  </description>
+  <description>Test the plugins are executed in the order given in the POM.</description>
 
   <properties>
     <foo>bar</foo>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>step 1</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/step-1.properties</logFile>
             </configuration>
@@ -62,10 +58,10 @@
         <executions>
           <execution>
             <id>step 2</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/step-2.properties</outputFile>
               <expressions>
@@ -82,10 +78,10 @@
         <executions>
           <execution>
             <id>step 3</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/step-3.properties</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
index 16ba243..f14331c 100644
--- a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3723</groupId>
   <artifactId>mavenit-mng3723-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>maven-mng3723-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/src/main/java/jar/MyMojo.java
index 01f58cd..28b8461 100644
--- a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -23,9 +41,7 @@
 /**
  * @goal run
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * Location of the file.
      * @parameter expression="${project}"
@@ -34,16 +50,13 @@
      */
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         String parentBuildDir = project.getParent().getBuild().getDirectory();
 
-        getLog().info( "parent build dir is: " + parentBuildDir );
+        getLog().info("parent build dir is: " + parentBuildDir);
 
-        if ( parentBuildDir.indexOf( "${" ) > -1 )
-        {
-            throw new MojoExecutionException( "Parent-project's build dir is not interpolated." );
+        if (parentBuildDir.indexOf("${") > -1) {
+            throw new MojoExecutionException("Parent-project's build dir is not interpolated.");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3723/projects/child/pom.xml b/core-it-suite/src/test/resources/mng-3723/projects/child/pom.xml
index 88028b5..5faf365 100644
--- a/core-it-suite/src/test/resources/mng-3723/projects/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3723/projects/child/pom.xml
@@ -2,10 +2,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-        <artifactId>projects</artifactId>
-        <groupId>org.apache.maven.its.mng3723</groupId>
-        <version>1</version>
-    </parent>
+    <groupId>org.apache.maven.its.mng3723</groupId>
+    <artifactId>projects</artifactId>
+    <version>1</version>
+  </parent>
   <groupId>org.apache.maven.its.mng3723</groupId>
   <artifactId>child</artifactId>
   <version>1</version>
@@ -20,10 +20,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>run</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
index bd63a72..c7f2357 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3724</groupId>
   <artifactId>mavenit-mng3724-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>maven-mng3724-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/AbstractMng2734Mojo.java b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/AbstractMng2734Mojo.java
index 8953c40..72f41fa 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/AbstractMng2734Mojo.java
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/AbstractMng2734Mojo.java
@@ -1,12 +1,28 @@
+/*
+ * 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.
+ */
 package jar;
 
 import java.io.File;
 
 import org.apache.maven.plugin.AbstractMojo;
 
-public abstract class AbstractMng2734Mojo
-    extends AbstractMojo
-{
+public abstract class AbstractMng2734Mojo extends AbstractMojo {
 
     /**
      * Location of the file.
@@ -15,9 +31,7 @@
      */
     private File generatorTargetDir;
 
-    protected final File getGeneratorTargetDir()
-    {
+    protected final File getGeneratorTargetDir() {
         return generatorTargetDir;
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase1ForkingMojo.java b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase1ForkingMojo.java
index 29c3d68..ff8ddb8 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase1ForkingMojo.java
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase1ForkingMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -23,11 +41,6 @@
  * @goal phase1
  * @execute phase="validate"
  */
-public class Phase1ForkingMojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-    }
+public class Phase1ForkingMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase2GeneratorMojo.java b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase2GeneratorMojo.java
index 7334b66..9bb73b3 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase2GeneratorMojo.java
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase2GeneratorMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -26,9 +44,7 @@
 /**
  * @goal phase2
  */
-public class Phase2GeneratorMojo
-    extends AbstractMng2734Mojo
-{
+public class Phase2GeneratorMojo extends AbstractMng2734Mojo {
     /**
      * @parameter default-value="${project}"
      * @required
@@ -36,41 +52,29 @@
      */
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File generatorTargetDir = getGeneratorTargetDir();
 
-        project.addCompileSourceRoot( generatorTargetDir.getAbsolutePath() );
+        project.addCompileSourceRoot(generatorTargetDir.getAbsolutePath());
 
-        if ( !generatorTargetDir.exists() )
-        {
+        if (!generatorTargetDir.exists()) {
             generatorTargetDir.mkdirs();
         }
 
-        File touch = new File( generatorTargetDir, "touch.txt" );
+        File touch = new File(generatorTargetDir, "touch.txt");
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touch );
+        try {
+            w = new FileWriter(touch);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touch, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touch, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase3ForkVerifierMojo.java b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase3ForkVerifierMojo.java
index 639135a..9569d6c 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase3ForkVerifierMojo.java
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/src/main/java/jar/Phase3ForkVerifierMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -26,36 +44,30 @@
  * @goal phase3
  * @execute phase="validate"
  */
-public class Phase3ForkVerifierMojo
-    extends AbstractMng2734Mojo
-{
+public class Phase3ForkVerifierMojo extends AbstractMng2734Mojo {
     /**
      * @parameter expression="${executedProject}"
      * @required
      */
     private MavenProject executedProject;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         List sourceRoots = executedProject.getCompileSourceRoots();
 
         String generatedDir = getGeneratorTargetDir().getAbsolutePath();
 
         boolean foundGeneratedDir = false;
-        for ( Iterator it = sourceRoots.iterator(); it.hasNext(); )
-        {
+        for (Iterator it = sourceRoots.iterator(); it.hasNext(); ) {
             String dir = (String) it.next();
-            if ( generatedDir.equals( dir ) )
-            {
+            if (generatedDir.equals(dir)) {
                 foundGeneratedDir = true;
                 break;
             }
         }
 
-        if ( !foundGeneratedDir )
-        {
-            throw new MojoExecutionException( "Generated-source target directory not found in compile source roots of the execution project!" );
+        if (!foundGeneratedDir) {
+            throw new MojoExecutionException(
+                    "Generated-source target directory not found in compile source roots of the execution project!");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3724/project/pom.xml b/core-it-suite/src/test/resources/mng-3724/project/pom.xml
index 0714578..5c37826 100644
--- a/core-it-suite/src/test/resources/mng-3724/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3724/project/pom.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3724</groupId>
   <artifactId>project</artifactId>
@@ -15,27 +16,27 @@
         <executions>
           <execution>
             <id>use-execution-project</id>
-            <phase>validate</phase>
             <goals>
               <goal>phase1</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>add-compile-source-to-main-project</id>
-            <phase>generate-sources</phase>
             <goals>
               <goal>phase2</goal>
             </goals>
+            <phase>generate-sources</phase>
           </execution>
           <execution>
             <id>verify-compile-sources-in-execution-project</id>
-            <phase>package</phase>
             <goals>
               <goal>phase3</goal>
             </goals>
+            <phase>package</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
index e63d188..d1ab6d7 100644
--- a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3729</groupId>
   <artifactId>mavenit-mng3729-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>maven-mng3729-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -19,4 +20,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork1Mojo.java b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork1Mojo.java
index 421b8c9..cd5aa96 100644
--- a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork1Mojo.java
+++ b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork1Mojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -24,11 +42,6 @@
  * @aggregator
  * @execute phase="compile"
  */
-public class Fork1Mojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-    }
+public class Fork1Mojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork2Mojo.java b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork2Mojo.java
index 243e133..fbfdd2d 100644
--- a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork2Mojo.java
+++ b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Fork2Mojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -24,11 +42,6 @@
  * @aggregator
  * @execute phase="compile"
  */
-public class Fork2Mojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-    }
+public class Fork2Mojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Plain1Mojo.java b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Plain1Mojo.java
index d4ddaac..d6329a2 100644
--- a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Plain1Mojo.java
+++ b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/src/main/java/jar/Plain1Mojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -23,11 +41,6 @@
  * @goal plain1
  * @requiresDependencyResolution compile
  */
-public class Plain1Mojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException
-    {
-    }
+public class Plain1Mojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-3729/projects/child1/pom.xml b/core-it-suite/src/test/resources/mng-3729/projects/child1/pom.xml
index 100f5ae..dec18bb 100644
--- a/core-it-suite/src/test/resources/mng-3729/projects/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3729/projects/child1/pom.xml
@@ -2,8 +2,8 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>projects</artifactId>
     <groupId>org.apache.maven.its.mng3729</groupId>
+    <artifactId>projects</artifactId>
     <version>1</version>
   </parent>
   <groupId>org.apache.maven.its.mng3729</groupId>
@@ -20,10 +20,10 @@
         <executions>
           <execution>
             <id>plain-goal</id>
-            <phase>compile</phase>
             <goals>
               <goal>plain1</goal>
             </goals>
+            <phase>compile</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3729/projects/pom.xml b/core-it-suite/src/test/resources/mng-3729/projects/pom.xml
index 856a3dc..274d6f3 100644
--- a/core-it-suite/src/test/resources/mng-3729/projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3729/projects/pom.xml
@@ -17,29 +17,29 @@
         <version>1</version>
         <executions>
           <execution>
-            <inherited>false</inherited>
             <id>fork1</id>
-            <phase>initialize</phase>
             <goals>
               <goal>fork1</goal>
             </goals>
+            <phase>initialize</phase>
+            <inherited>false</inherited>
           </execution>
           <execution>
             <id>fork2</id>
-            <phase>initialize</phase>
             <goals>
               <goal>fork2</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
           <execution>
             <id>plain-goal</id>
-            <phase>compile</phase>
             <goals>
               <goal>plain1</goal>
             </goals>
+            <phase>compile</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3732/pom.xml b/core-it-suite/src/test/resources/mng-3732/pom.xml
index 72687d0..7f36907 100644
--- a/core-it-suite/src/test/resources/mng-3732/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3732/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3732</name>
-  <description>
-    Verify that MavenProject.getActiveProfiles() includes profiles from all sources.
-  </description>
+  <description>Verify that MavenProject.getActiveProfiles() includes profiles from all sources.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
index d77c44d..ee78a22 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng3740</groupId>
@@ -7,8 +8,8 @@
   </parent>
   <groupId>org.apache.maven.its.mng3740</groupId>
   <artifactId>mavenit-mng3740-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>1</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
@@ -17,4 +18,4 @@
       <version>3.8.6</version>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
index 5b11922..010f10c 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -16,13 +34,13 @@
  * limitations under the License.
  */
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
 /**
  * Goal which touches a timestamp file.
  *
@@ -30,9 +48,7 @@
  *
  * @phase process-sources
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * Location of the file.
      * @parameter expression="${project.build.directory}"
@@ -40,39 +56,27 @@
      */
     private File outputDirectory;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File f = outputDirectory;
 
-        if ( !f.exists() )
-        {
+        if (!f.exists()) {
             f.mkdirs();
         }
 
-        File touch = new File( f, "touch.txt" );
+        File touch = new File(f, "touch.txt");
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touch );
+        try {
+            w = new FileWriter(touch);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touch, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touch, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v1/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v1/pom.xml
index f096667..5cb2f20 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v1/pom.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3740</groupId>
   <artifactId>projects</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>maven-mng3740-plugin</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
index 497274c..8a21ff7 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng3740</groupId>
@@ -7,8 +8,8 @@
   </parent>
   <groupId>org.apache.maven.its.mng3740</groupId>
   <artifactId>mavenit-mng3740-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
   <version>2</version>
+  <packaging>maven-plugin</packaging>
 
   <dependencies>
     <dependency>
@@ -17,4 +18,4 @@
       <version>3.8.6</version>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
index 5b11922..010f10c 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -16,13 +34,13 @@
  * limitations under the License.
  */
 
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
 /**
  * Goal which touches a timestamp file.
  *
@@ -30,9 +48,7 @@
  *
  * @phase process-sources
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * Location of the file.
      * @parameter expression="${project.build.directory}"
@@ -40,39 +56,27 @@
      */
     private File outputDirectory;
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File f = outputDirectory;
 
-        if ( !f.exists() )
-        {
+        if (!f.exists()) {
             f.mkdirs();
         }
 
-        File touch = new File( f, "touch.txt" );
+        File touch = new File(f, "touch.txt");
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touch );
+        try {
+            w = new FileWriter(touch);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touch, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touch, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v2/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v2/pom.xml
index 1b27cb3..0d687f0 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v2/pom.xml
@@ -1,9 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3740</groupId>
   <artifactId>projects</artifactId>
-  <packaging>pom</packaging>
   <version>2</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>maven-mng3740-plugin</module>
@@ -18,13 +19,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>install</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>install</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
index 50d0a3b..1d02148 100644
--- a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3746</groupId>
   <artifactId>mavenit-mng3746-plugin</artifactId>
+  <version>1</version>
   <packaging>maven-plugin</packaging>
   <name>mavenit-mng3746-plugin Maven Mojo</name>
-  <version>1</version>
   <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
@@ -19,4 +20,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/src/main/java/jar/MyMojo.java b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/src/main/java/jar/MyMojo.java
index 3929bc4..df38cbc 100644
--- a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/src/main/java/jar/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/src/main/java/jar/MyMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package jar;
 
 /*
@@ -24,9 +42,7 @@
 /**
  * @goal test
  */
-public class MyMojo
-    extends AbstractMojo
-{
+public class MyMojo extends AbstractMojo {
     /**
      * @parameter
      * @required
@@ -49,37 +65,33 @@
      */
     private Properties properties;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        String sysProp = System.getProperty( "java.version" );
-        String pomProp = properties.getProperty( "java.version" );
+    public void execute() throws MojoExecutionException {
+        String sysProp = System.getProperty("java.version");
+        String pomProp = properties.getProperty("java.version");
 
         boolean fail = false;
 
-        if ( !usingCliValue )
-        {
-            if ( check.equals( sysProp ) )
-            {
-                getLog().error( "Check value is the same as the system property; interpolation failed! (value: " + check + ")" );
+        if (!usingCliValue) {
+            if (check.equals(sysProp)) {
+                getLog().error("Check value is the same as the system property; interpolation failed! (value: " + check
+                        + ")");
                 fail = true;
             }
 
-            if ( !check.equals( pomProp ) )
-            {
-                getLog().error( "Check value is NOT the same as the POM property; interpolation failed! (value: " + check + ")" );
+            if (!check.equals(pomProp)) {
+                getLog().error("Check value is NOT the same as the POM property; interpolation failed! (value: " + check
+                        + ")");
                 fail = true;
             }
-        }
-        else if ( !check.equals( verification ) )
-        {
-            getLog().error( "Check value is NOT the same as the verification value; interpolation failed! (value: " + check + "; verification value: " + verification + ")" );
+        } else if (!check.equals(verification)) {
+            getLog().error("Check value is NOT the same as the verification value; interpolation failed! (value: "
+                    + check + "; verification value: " + verification + ")");
             fail = true;
         }
 
-        if ( fail )
-        {
-            throw new MojoExecutionException( "Failed to verify interpolation with POM override of a system property. See console output for more information." );
+        if (fail) {
+            throw new MojoExecutionException(
+                    "Failed to verify interpolation with POM override of a system property. See console output for more information.");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-3746/project/pom.xml b/core-it-suite/src/test/resources/mng-3746/project/pom.xml
index 189a99b..6ac135c 100644
--- a/core-it-suite/src/test/resources/mng-3746/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3746/project/pom.xml
@@ -19,10 +19,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <check>${java.version}</check>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-3747/pom.xml b/core-it-suite/src/test/resources/mng-3747/pom.xml
index 4632ed8..37964e3 100644
--- a/core-it-suite/src/test/resources/mng-3747/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3747/pom.xml
@@ -8,10 +8,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3747</name>
-  <description>
-    Test that expressions prefixed with "project.|pom." that reference build paths which are given as relative paths
-    in the POM are still interpolated with absolute paths when used in String-type plugin parameters.
-  </description>
+  <description>Test that expressions prefixed with "project.|pom." that reference build paths which are given as relative paths
+    in the POM are still interpolated with absolute paths when used in String-type plugin parameters.</description>
 
   <build>
     <!-- NOTE: Intentionally a relative path! -->
@@ -24,10 +22,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
               <stringParam>path is: ${project.build.directory}/somepath</stringParam>
diff --git a/core-it-suite/src/test/resources/mng-3748/pom.xml b/core-it-suite/src/test/resources/mng-3748/pom.xml
index f875e32..b638a8e 100644
--- a/core-it-suite/src/test/resources/mng-3748/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3748/pom.xml
@@ -1,14 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3748</groupId>
   <artifactId>mng-3748</artifactId>
-  <packaging>pom</packaging>
   <version>1</version>
+  <packaging>pom</packaging>
 
   <name>Integration Test Project for MNG-3748</name>
-  <description>
-    This project verifies that MNG-3748 is fixed. It is controlled by a JUnit test called org.apache.maven.integrationtests.MNG3748Test
-  </description>
+  <description>This project verifies that MNG-3748 is fixed. It is controlled by a JUnit test called org.apache.maven.integrationtests.MNG3748Test</description>
 
   <url>https://issues.apache.org/jira/browse/MNG-3748</url>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3766/pom.xml b/core-it-suite/src/test/resources/mng-3766/pom.xml
index cf1686c..9ce4afc 100644
--- a/core-it-suite/src/test/resources/mng-3766/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3766/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,18 +25,9 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3766</name>
-  <description>
-    Test toolchain discovery from build extensions.
-  </description>
+  <description>Test toolchain discovery from build extensions.</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-toolchain</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -47,10 +36,10 @@
         <executions>
           <execution>
             <id>select-toolchain</id>
-            <phase>validate</phase>
             <goals>
               <goal>toolchain</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/toolchains.properties</outputFile>
               <type>coreit</type>
@@ -59,10 +48,10 @@
           </execution>
           <execution>
             <id>find-tool</id>
-            <phase>initialize</phase>
             <goals>
               <goal>find-tool</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/tool.properties</outputFile>
               <type>coreit</type>
@@ -72,5 +61,12 @@
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-toolchain</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3769/pom.xml b/core-it-suite/src/test/resources/mng-3769/pom.xml
index a42e2ac..d6c6124 100644
--- a/core-it-suite/src/test/resources/mng-3769/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3769/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3769</name>
-  <description>
-    Verify that dependency resolution considers dependency management also for relocated artifacts.
-  </description>
+  <description>Verify that dependency resolution considers dependency management also for relocated artifacts.</description>
 
   <dependencies>
     <dependency>
@@ -54,15 +50,15 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
               <testClassPath>target/test.txt</testClassPath>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-abc/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-abc/pom.xml
index bb4aaeb..4430f83 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-abc/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-abc/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-acb/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-acb/pom.xml
index bff9970..0c5dc33 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-acb/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-acb/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-bac/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-bac/pom.xml
index b9e20f4..30ae6f5 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-bac/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-bac/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-bca/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-bca/pom.xml
index 44bc361..9dd352e 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-bca/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-bca/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-cab/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-cab/pom.xml
index 66ce189..9b8a43e 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-cab/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-cab/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3775/test-cba/pom.xml b/core-it-suite/src/test/resources/mng-3775/test-cba/pom.xml
index ce28f4c..58d264b 100644
--- a/core-it-suite/src/test/resources/mng-3775/test-cba/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3775/test-cba/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3775</name>
-  <description>
-    Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
+  <description>Verify that conflict resolution doesn't select nodes which are children of eventually disabled nodes.
     In other words, when a subtree gets disabled, all previously selected winners among the children need to
-    be revised.
-  </description>
+    be revised.</description>
 
   <dependencies>
     <!--
@@ -86,11 +82,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3796/pom.xml b/core-it-suite/src/test/resources/mng-3796/pom.xml
index 3740a52..b0de716 100644
--- a/core-it-suite/src/test/resources/mng-3796/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3796/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3796</name>
-  <description>
-    Verify that classes shared with the Maven core realm are properly imported into the plugin realm.
-  </description>
+  <description>Verify that classes shared with the Maven core realm are properly imported into the plugin realm.</description>
 
   <build>
     <plugins>
@@ -40,15 +36,15 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.codehaus.plexus.util.xml.Xpp3Dom</classNames>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3805/pom.xml b/core-it-suite/src/test/resources/mng-3805/pom.xml
index 68c6f95..414fa7c 100644
--- a/core-it-suite/src/test/resources/mng-3805/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3805/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,12 +25,33 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3805</name>
-  <description>
-    Verify that the extension manager respects the ordering of the extension's dependencies when setting up the
-    class realm.
-  </description>
+  <description>Verify that the extension manager respects the ordering of the extension's dependencies when setting up the
+    class realm.</description>
 
   <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-uses-wagon</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <id>load-resource</id>
+            <goals>
+              <goal>load-resource</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <wagonProtocol>coreit</wagonProtocol>
+              <resourcePaths>
+                <resourcePath>org/apache/maven/its/mng3805/a.properties</resourcePath>
+              </resourcePaths>
+              <wagonClassLoaderOutput>target/wcl.properties</wagonClassLoaderOutput>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
     <extensions>
       <!--
       Both the extension artifact and each of its four dependencies contain the same resource. The IT plugin will
@@ -44,28 +63,5 @@
         <version>0.1</version>
       </extension>
     </extensions>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-uses-wagon</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>load-resource</id>
-            <phase>validate</phase>
-            <configuration>
-              <wagonProtocol>coreit</wagonProtocol>
-              <resourcePaths>
-                <resourcePath>org/apache/maven/its/mng3805/a.properties</resourcePath>
-              </resourcePaths>
-              <wagonClassLoaderOutput>target/wcl.properties</wagonClassLoaderOutput>
-            </configuration>
-            <goals>
-              <goal>load-resource</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3807/pom.xml b/core-it-suite/src/test/resources/mng-3807/pom.xml
index 9b34b5d..288eae5 100644
--- a/core-it-suite/src/test/resources/mng-3807/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3807/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3807</name>
-  <description>
-    Verify that plugin configurations are subject to the parameter expression evaluator, in particular composite
-    parameter types.
-  </description>
+  <description>Verify that plugin configurations are subject to the parameter expression evaluator, in particular composite
+    parameter types.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-3808/child/pom.xml b/core-it-suite/src/test/resources/mng-3808/child/pom.xml
index 9810e49..46e627a 100644
--- a/core-it-suite/src/test/resources/mng-3808/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3808/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3808/pom.xml b/core-it-suite/src/test/resources/mng-3808/pom.xml
index bed65b6..104127a 100644
--- a/core-it-suite/src/test/resources/mng-3808/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3808/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,11 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3808</name>
-  <description>
-    Test the reports are executed in the order given in the POM.
-  </description>
+  <description>Test the reports are executed in the order given in the POM.</description>
+
+  <modules>
+    <module>child</module>
+  </modules>
 
   <build>
     <plugins>
@@ -40,10 +40,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/model.properties</outputFile>
               <expressions>
@@ -72,8 +72,4 @@
       </plugin>
     </plugins>
   </reporting>
-
-  <modules>
-    <module>child</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3810/property/pom.xml b/core-it-suite/src/test/resources/mng-3810/property/pom.xml
index 4d1284b..13d95b4 100644
--- a/core-it-suite/src/test/resources/mng-3810/property/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3810/property/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3810</name>
-  <description>
-    Test profiles that are malformed in the POM get a decent error message.
-  </description>
+  <description>Test profiles that are malformed in the POM get a decent error message.</description>
 
   <build>
     <plugins>
@@ -39,10 +35,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
@@ -59,8 +55,7 @@
     <profile>
       <id>mng-3810-pom</id>
       <activation>
-        <property>
-        </property>
+        <property />
       </activation>
       <properties>
         <pomProperty>INJECTED</pomProperty>
diff --git a/core-it-suite/src/test/resources/mng-3811/child/pom.xml b/core-it-suite/src/test/resources/mng-3811/child/pom.xml
index b3cbb9f..3cff9c1 100644
--- a/core-it-suite/src/test/resources/mng-3811/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3811/child/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-  <!--
+<!--
     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.
@@ -15,15 +14,13 @@
     License for the specific language governing permissions and
     limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-<parent>
-  <groupId>org.apache.maven.its.mng3811</groupId>
-  <artifactId>test-parent</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <parent>
+    <groupId>org.apache.maven.its.mng3811</groupId>
+    <artifactId>test-parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
   </parent>
   <artifactId>test-child</artifactId>
 
@@ -44,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3811/pom.xml b/core-it-suite/src/test/resources/mng-3811/pom.xml
index fdb455a..352a76c 100644
--- a/core-it-suite/src/test/resources/mng-3811/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3811/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-  <!--
+<!--
     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.
@@ -15,9 +14,7 @@
     License for the specific language governing permissions and
     limitations under the License.
   -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng3811</groupId>
@@ -48,4 +45,3 @@
     </plugins>
   </reporting>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-3813/pom.xml b/core-it-suite/src/test/resources/mng-3813/pom.xml
index 6223e53..c6559fa 100644
--- a/core-it-suite/src/test/resources/mng-3813/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3813/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3813</name>
-  <description>
-    Verify that the ordering of the plugin class path matches the ordering of the dependencies as given in the POM.
-  </description>
+  <description>Verify that the ordering of the plugin class path matches the ordering of the dependencies as given in the POM.</description>
 
   <build>
     <plugins>
@@ -78,15 +74,15 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.mng3813.SomeClass</classNames>
               <resourcePaths>org/apache/maven/its/mng3813/SomeClass.class</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3814/plugin-a/pom.xml b/core-it-suite/src/test/resources/mng-3814/plugin-a/pom.xml
index df396ec..e6d9a79 100644
--- a/core-it-suite/src/test/resources/mng-3814/plugin-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3814/plugin-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3814/plugin-b/pom.xml b/core-it-suite/src/test/resources/mng-3814/plugin-b/pom.xml
index 110d10c..07051c6 100644
--- a/core-it-suite/src/test/resources/mng-3814/plugin-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3814/plugin-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3814/pom.xml b/core-it-suite/src/test/resources/mng-3814/pom.xml
index c719166..4a26005 100644
--- a/core-it-suite/src/test/resources/mng-3814/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3814/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3814</name>
-  <description>
-    Verify that the reactor's project sorter considers artifact versions when checking for cycles.
-  </description>
+  <description>Verify that the reactor's project sorter considers artifact versions when checking for cycles.</description>
 
   <modules>
     <module>plugin-a</module>
diff --git a/core-it-suite/src/test/resources/mng-3821/pom.xml b/core-it-suite/src/test/resources/mng-3821/pom.xml
index edda3c1..67da9f0 100644
--- a/core-it-suite/src/test/resources/mng-3821/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3821/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3821</name>
-  <description>
-    Verify that using the same id for executions/reportsets of different plugins doesn't blow up the project builder.
-  </description>
+  <description>Verify that using the same id for executions/reportsets of different plugins doesn't blow up the project builder.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-3822/pom.xml b/core-it-suite/src/test/resources/mng-3822/pom.xml
index 3889310..aabc4fa 100644
--- a/core-it-suite/src/test/resources/mng-3822/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3822/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3822</name>
-  <description>
-    Verify that POM interpolation uses basedir-aligned build directories.
-  </description>
+  <description>Verify that POM interpolation uses basedir-aligned build directories.</description>
 
   <properties>
     <!-- this is where we collect all the interpolated values for the POM dump -->
@@ -43,6 +39,7 @@
   </properties>
 
   <build>
+    <directory>target</directory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -50,10 +47,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/interpolated.properties</outputFile>
               <expressions>
@@ -68,9 +65,8 @@
     NOTE: Deliberately set all build directories to relative paths to ensure they really need basedir alignment.
     -->
     <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
     <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
-    <directory>target</directory>
+    <testSourceDirectory>src/test/java</testSourceDirectory>
     <outputDirectory>target/classes</outputDirectory>
     <testOutputDirectory>target/test-classes</testOutputDirectory>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-3827/pom.xml b/core-it-suite/src/test/resources/mng-3827/pom.xml
index dcb538b..a876032 100644
--- a/core-it-suite/src/test/resources/mng-3827/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3827/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3827</name>
-  <description>
-    Verify that plain plugin configuration works correctly.
-  </description>
+  <description>Verify that plain plugin configuration works correctly.</description>
 
   <build>
     <pluginManagement>
@@ -105,10 +101,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3831/child/pom.xml b/core-it-suite/src/test/resources/mng-3831/child/pom.xml
index 0fc8f7a..38d54c0 100644
--- a/core-it-suite/src/test/resources/mng-3831/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3831/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-     <groupId>org.apache.maven.its.mng3831</groupId>
-     <artifactId>parent</artifactId>
-     <version>1.0</version>
+    <groupId>org.apache.maven.its.mng3831</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
   </parent>
 
   <groupId>org.apache.maven.its.mng3831.child</groupId>
@@ -94,7 +92,6 @@
   </properties>
 
   <build>
-    <outputDirectory>target/bin</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -102,10 +99,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <outputFile>target/interpolated.properties</outputFile>
               <expressions>
@@ -116,6 +113,7 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>target/bin</outputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/mng-3831/pom.xml b/core-it-suite/src/test/resources/mng-3831/pom.xml
index 768a5e9..5e7b195 100644
--- a/core-it-suite/src/test/resources/mng-3831/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3831/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3833/pom.xml b/core-it-suite/src/test/resources/mng-3833/pom.xml
index 8d8edee..5de0f91 100644
--- a/core-it-suite/src/test/resources/mng-3833/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3833/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3833</name>
-  <description>
-    Test that POM interpolation fully interpolates all properties in data flow chain, i.e. where property
-    A depends on property B, and property B depends on property C and so on.
-  </description>
+  <description>Test that POM interpolation fully interpolates all properties in data flow chain, i.e. where property
+    A depends on property B, and property B depends on property C and so on.</description>
 
   <properties>
     <!--
@@ -72,10 +68,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/interpolated.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3836/child/pom.xml b/core-it-suite/src/test/resources/mng-3836/child/pom.xml
index 547d608..d985629 100644
--- a/core-it-suite/src/test/resources/mng-3836/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3836/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +31,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3836</name>
-  <description>
-    Verify that children can *override* inherited plugin configuration.
-  </description>
+  <description>Verify that children can *override* inherited plugin configuration.</description>
 
   <build>
     <plugins>
@@ -70,10 +66,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3836/pom.xml b/core-it-suite/src/test/resources/mng-3836/pom.xml
index f263953..71342b1 100644
--- a/core-it-suite/src/test/resources/mng-3836/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3836/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3836</name>
-  <description>
-    Verify that children can *override* inherited plugin configuration.
-  </description>
+  <description>Verify that children can *override* inherited plugin configuration.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3838/pom.xml b/core-it-suite/src/test/resources/mng-3838/pom.xml
index b8c96c8..83bcc68 100644
--- a/core-it-suite/src/test/resources/mng-3838/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3838/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-3838</name>
-  <description>
-    Verify that using the same dependency for different plugins doesn't blow up the project builder.
-  </description>
+  <description>Verify that using the same dependency for different plugins doesn't blow up the project builder.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-3839/pom.xml b/core-it-suite/src/test/resources/mng-3839/pom.xml
index 76bd458..dcc2f67 100644
--- a/core-it-suite/src/test/resources/mng-3839/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3839/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3839</name>
-  <description>
-    Test that POM parsing properly coalesces text data.
-  </description>
+  <description>Test that POM parsing properly coalesces text data.</description>
 
   <properties>
     <!--
@@ -573,10 +569,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/xml.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3843/pom.xml b/core-it-suite/src/test/resources/mng-3843/pom.xml
index 266b7d7..455df12 100644
--- a/core-it-suite/src/test/resources/mng-3843/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3843</name>
-  <description>
-    Test various inheritance scenarios.
-  </description>
+  <description>Test various inheritance scenarios.</description>
 
   <modules>
     <module>test-1</module>
diff --git a/core-it-suite/src/test/resources/mng-3843/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-1/pom.xml
index a0462dd..33b354a 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -40,10 +38,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3843/test-2/child-1/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-2/child-1/pom.xml
index ae74902..1d32d6a 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-2/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-2/child-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3843/test-2/child-2/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-2/child-2/pom.xml
index 6894f55..3a6e162 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-2/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-2/child-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -75,9 +73,9 @@
   </prerequisites>
 
   <scm>
-    <url>http://child.url/trunk</url>
     <connection>http://child.url/scm</connection>
     <developerConnection>https://child.url/scm</developerConnection>
+    <url>http://child.url/trunk</url>
   </scm>
   <issueManagement>
     <url>http://child.url/issues</url>
@@ -87,21 +85,21 @@
   </ciManagement>
   <distributionManagement>
     <repository>
-      <url>http://child.url/dist</url>
       <id>child.distros</id>
+      <url>http://child.url/dist</url>
     </repository>
     <snapshotRepository>
-      <url>http://child.url/snaps</url>
       <id>child.snaps</id>
+      <url>http://child.url/snaps</url>
     </snapshotRepository>
     <site>
-      <url>http://child.url/site</url>
       <id>child.site</id>
+      <url>http://child.url/site</url>
     </site>
-    <downloadUrl>http://child.url/download</downloadUrl>
     <relocation>
       <message>child-reloc-msg</message>
     </relocation>
+    <downloadUrl>http://child.url/download</downloadUrl>
   </distributionManagement>
 
   <properties>
@@ -156,11 +154,6 @@
   <build>
     <defaultGoal>validate</defaultGoal>
     <directory>build</directory>
-    <sourceDirectory>sources/main</sourceDirectory>
-    <scriptSourceDirectory>sources/scripts</scriptSourceDirectory>
-    <testSourceDirectory>sources/test</testSourceDirectory>
-    <outputDirectory>build/main</outputDirectory>
-    <testOutputDirectory>build/test</testOutputDirectory>
     <finalName>coreit</finalName>
     <resources>
       <resource>
@@ -179,10 +172,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
@@ -193,10 +186,15 @@
         </executions>
       </plugin>
     </plugins>
+    <sourceDirectory>sources/main</sourceDirectory>
+    <scriptSourceDirectory>sources/scripts</scriptSourceDirectory>
+    <testSourceDirectory>sources/test</testSourceDirectory>
+    <outputDirectory>build/main</outputDirectory>
+    <testOutputDirectory>build/test</testOutputDirectory>
   </build>
 
   <reporting>
-    <excludeDefaults>false</excludeDefaults>
     <outputDirectory>docs</outputDirectory>
+    <excludeDefaults>false</excludeDefaults>
   </reporting>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3843/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-2/pom.xml
index f96a940..7881219 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -74,9 +72,9 @@
   </modules>
 
   <scm>
-    <url>http://parent.url/trunk</url>
     <connection>http://parent.url/scm</connection>
     <developerConnection>https://parent.url/scm</developerConnection>
+    <url>http://parent.url/trunk</url>
   </scm>
   <issueManagement>
     <url>http://parent.url/issues</url>
@@ -86,21 +84,21 @@
   </ciManagement>
   <distributionManagement>
     <repository>
-      <url>http://parent.url/dist</url>
       <id>parent.distros</id>
+      <url>http://parent.url/dist</url>
     </repository>
     <snapshotRepository>
-      <url>http://parent.url/snaps</url>
       <id>parent.snaps</id>
+      <url>http://parent.url/snaps</url>
     </snapshotRepository>
     <site>
-      <url>http://parent.url/site</url>
       <id>parent.site</id>
+      <url>http://parent.url/site</url>
     </site>
-    <downloadUrl>http://parent.url/download</downloadUrl>
     <relocation>
       <message>parent-reloc-msg</message>
     </relocation>
+    <downloadUrl>http://parent.url/download</downloadUrl>
   </distributionManagement>
 
   <properties>
@@ -137,11 +135,6 @@
   <build>
     <defaultGoal>initialize</defaultGoal>
     <directory>out</directory>
-    <sourceDirectory>src/main</sourceDirectory>
-    <scriptSourceDirectory>src/scripts</scriptSourceDirectory>
-    <testSourceDirectory>src/test</testSourceDirectory>
-    <outputDirectory>out/main</outputDirectory>
-    <testOutputDirectory>out/test</testOutputDirectory>
     <resources>
       <resource>
         <directory>res/main</directory>
@@ -159,10 +152,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
@@ -173,11 +166,16 @@
         </executions>
       </plugin>
     </plugins>
+    <sourceDirectory>src/main</sourceDirectory>
+    <scriptSourceDirectory>src/scripts</scriptSourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
+    <outputDirectory>out/main</outputDirectory>
+    <testOutputDirectory>out/test</testOutputDirectory>
   </build>
 
   <reporting>
-    <excludeDefaults>true</excludeDefaults>
     <outputDirectory>site</outputDirectory>
+    <excludeDefaults>true</excludeDefaults>
   </reporting>
 
   <profiles>
diff --git a/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/child-a/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/child-a/pom.xml
index f4b98ec..ced435a 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/child-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/child-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -44,10 +42,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/pom.xml
index 5d42746..a9dc1c6 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-3/sub-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3843/test-3/top-parent/pom.xml b/core-it-suite/src/test/resources/mng-3843/test-3/top-parent/pom.xml
index b147f6b..ad462a6 100644
--- a/core-it-suite/src/test/resources/mng-3843/test-3/top-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3843/test-3/top-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3845/child/pom.xml b/core-it-suite/src/test/resources/mng-3845/child/pom.xml
index f47bd04..b672935 100644
--- a/core-it-suite/src/test/resources/mng-3845/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3845/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -67,10 +65,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3845/pom.xml b/core-it-suite/src/test/resources/mng-3845/pom.xml
index 6337afc..a131ce4 100644
--- a/core-it-suite/src/test/resources/mng-3845/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3845/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3845</name>
-  <description>
-    Test that inheritance is all-or-nothing for certain subtrees of the POM.
-  </description>
+  <description>Test that inheritance is all-or-nothing for certain subtrees of the POM.</description>
 
   <organization>
     <name>parent-org</name>
@@ -38,10 +34,10 @@
   </organization>
 
   <scm>
-    <url>http://parent.url/viewvc</url>
     <connection>http://parent.url/scm</connection>
     <developerConnection>https://parent.url/scm</developerConnection>
     <tag>parent-tag</tag>
+    <url>http://parent.url/viewvc</url>
   </scm>
   <issueManagement>
     <system>parent-issues</system>
@@ -65,17 +61,17 @@
   </ciManagement>
   <distributionManagement>
     <repository>
+      <uniqueVersion>false</uniqueVersion>
       <id>parent-distros</id>
       <name>parent-distros</name>
       <url>ssh://parent.url/distros</url>
-      <uniqueVersion>false</uniqueVersion>
       <layout>legacy</layout>
     </repository>
     <snapshotRepository>
+      <uniqueVersion>false</uniqueVersion>
       <id>parent-snaps</id>
       <name>parent-snaps</name>
       <url>ssh://parent.url/snaps</url>
-      <uniqueVersion>false</uniqueVersion>
       <layout>legacy</layout>
     </snapshotRepository>
     <site>
diff --git a/core-it-suite/src/test/resources/mng-3846/another-parent/pom.xml b/core-it-suite/src/test/resources/mng-3846/another-parent/pom.xml
index 463772f..0474052 100644
--- a/core-it-suite/src/test/resources/mng-3846/another-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3846/another-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-3846/another-parent/sub/pom.xml b/core-it-suite/src/test/resources/mng-3846/another-parent/sub/pom.xml
index 5b9e305..9599dd3 100644
--- a/core-it-suite/src/test/resources/mng-3846/another-parent/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3846/another-parent/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -41,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3846/pom.xml b/core-it-suite/src/test/resources/mng-3846/pom.xml
index b532543..c0bda36 100644
--- a/core-it-suite/src/test/resources/mng-3846/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3846/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3846</name>
-  <description>
-    Test that inheritance of certain URLs automatically appends the child's artifact id.
-  </description>
+  <description>Test that inheritance of certain URLs automatically appends the child's artifact id.</description>
 
   <url>http://parent.url</url>
   <organization>
@@ -46,9 +42,9 @@
   </licenses>
 
   <scm>
-    <url>http://parent.url/viewvc</url>
     <connection>http://parent.url/scm</connection>
     <developerConnection>https://parent.url/scm</developerConnection>
+    <url>http://parent.url/viewvc</url>
   </scm>
   <issueManagement>
     <url>http://parent.url/issues</url>
@@ -58,16 +54,16 @@
   </ciManagement>
   <distributionManagement>
     <repository>
-      <url>http://parent.url/dist</url>
       <id>parent.distros</id>
+      <url>http://parent.url/dist</url>
     </repository>
     <snapshotRepository>
-      <url>http://parent.url/snaps</url>
       <id>parent.snaps</id>
+      <url>http://parent.url/snaps</url>
     </snapshotRepository>
     <site>
-      <url>http://parent.url/site</url>
       <id>parent.site</id>
+      <url>http://parent.url/site</url>
     </site>
     <downloadUrl>http://parent.url/download</downloadUrl>
   </distributionManagement>
diff --git a/core-it-suite/src/test/resources/mng-3846/sub/pom.xml b/core-it-suite/src/test/resources/mng-3846/sub/pom.xml
index 23af275..509c52f 100644
--- a/core-it-suite/src/test/resources/mng-3846/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3846/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -41,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3852/pom.xml b/core-it-suite/src/test/resources/mng-3852/pom.xml
index 6c82d01..f5a5a13 100644
--- a/core-it-suite/src/test/resources/mng-3852/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3852/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3852</name>
-  <description>
-    Verify that list-valued plugin parameters respect the ordering of their elements as given in the POM, even
-    if these elements have different names.
-  </description>
+  <description>Verify that list-valued plugin parameters respect the ordering of their elements as given in the POM, even
+    if these elements have different names.</description>
 
   <build>
     <plugins>
@@ -44,17 +40,17 @@
             <listParam>one</listParam>
             <listParam>two</listParam>
             <!-- That this element has a different name than the others is the important point of this test! -->
-            <bean/>
+            <bean />
             <listParam>three</listParam>
             <listParam>four</listParam>
           </listParam>
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3853/pom.xml b/core-it-suite/src/test/resources/mng-3853/pom.xml
index 016772b..f2dd5a9 100644
--- a/core-it-suite/src/test/resources/mng-3853/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3853/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,13 +25,11 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3853</name>
-  <description>
-    Verify that distribution management repos injected by profiles are recognized by the MavenProject instance and
+  <description>Verify that distribution management repos injected by profiles are recognized by the MavenProject instance and
     that the resulting artifact repositories are available to plugins via the corresponding expressions. Note that
     this issue is not primarily about the effective model (which was correct for the original issue, i.e. reflected
     the injected distributionManagement section) but whether the MavenProject wrapper around the model is in sync
-    with the model.
-  </description>
+    with the model.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/dist.properties</propertiesFile>
               <listParam>
diff --git a/core-it-suite/src/test/resources/mng-3863/pom.xml b/core-it-suite/src/test/resources/mng-3863/pom.xml
index b5e73a6..7320301 100644
--- a/core-it-suite/src/test/resources/mng-3863/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3863/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3863</name>
-  <description>
-    Verify that the group id "org.apache.maven.plugins" is *not* automatically assumed for dependencies.
-  </description>
+  <description>Verify that the group id "org.apache.maven.plugins" is *not* automatically assumed for dependencies.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-3864/pom.xml b/core-it-suite/src/test/resources/mng-3864/pom.xml
index 8f33c01..1590648 100644
--- a/core-it-suite/src/test/resources/mng-3864/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3864/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3864</name>
-  <description>
-    Verify that plain per-execution plugin configuration works correctly.
-  </description>
+  <description>Verify that plain per-execution plugin configuration works correctly.</description>
 
   <build>
     <pluginManagement>
@@ -50,10 +46,10 @@
         <artifactId>maven-it-plugin-configuration</artifactId>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/plugin-config.properties</propertiesFile>
               <booleanParam>true</booleanParam>
diff --git a/core-it-suite/src/test/resources/mng-3866/pom.xml b/core-it-suite/src/test/resources/mng-3866/pom.xml
index 1f91450..d1b70e7 100644
--- a/core-it-suite/src/test/resources/mng-3866/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3866/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3866</name>
-  <description>
-    Verify that inheritance merges plugin definitions based on groupId:artifactId, i.e. plugin version is
-    irrelevant for merging.
-  </description>
+  <description>Verify that inheritance merges plugin definitions based on groupId:artifactId, i.e. plugin version is
+    irrelevant for merging.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-3866/sub/pom.xml b/core-it-suite/src/test/resources/mng-3866/sub/pom.xml
index 63f7db2..e23e1e0 100644
--- a/core-it-suite/src/test/resources/mng-3866/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3866/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-3866</name>
-  <description>
-    Verify that inheritance merges plugin definitions based on groupId:artifactId, i.e. plugin version is
-    irrelevant for merging.
-  </description>
+  <description>Verify that inheritance merges plugin definitions based on groupId:artifactId, i.e. plugin version is
+    irrelevant for merging.</description>
 
   <build>
     <plugins>
@@ -50,10 +46,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3872/pom.xml b/core-it-suite/src/test/resources/mng-3872/pom.xml
index e6b0965..3424bc4 100644
--- a/core-it-suite/src/test/resources/mng-3872/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3872/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3872</name>
-  <description>
-    Verify that profiles are activated in relocated POMs.
-  </description>
+  <description>Verify that profiles are activated in relocated POMs.</description>
 
   <dependencies>
     <dependency>
@@ -48,14 +44,14 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileClassPath>target/compile.txt</compileClassPath>
               <significantPathLevels>1</significantPathLevels>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3873/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3873/test-1/pom.xml
index 8dfd174..af285af 100644
--- a/core-it-suite/src/test/resources/mng-3873/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3873/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3873</name>
-  <description>
-    Test that all goals from a plugin execution are actually executed and not only one.
-  </description>
+  <description>Test that all goals from a plugin execution are actually executed and not only one.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/it.log</logFile>
               <string>test</string>
diff --git a/core-it-suite/src/test/resources/mng-3873/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3873/test-2/pom.xml
index c783b11..9778839 100644
--- a/core-it-suite/src/test/resources/mng-3873/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3873/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3873</name>
-  <description>
-    Test that all goals from a plugin execution are actually executed and not only one.
-  </description>
+  <description>Test that all goals from a plugin execution are actually executed and not only one.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -51,11 +47,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/it.log</logFile>
               <string>test</string>
diff --git a/core-it-suite/src/test/resources/mng-3877/pom.xml b/core-it-suite/src/test/resources/mng-3877/pom.xml
index d7607fc..b42ffa1 100644
--- a/core-it-suite/src/test/resources/mng-3877/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3877/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,18 +26,13 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3877</name>
-  <description>
-    Verify that project directories are basedir aligned when inspected by plugins.
-  </description>
+  <description>Verify that project directories are basedir aligned when inspected by plugins.</description>
 
   <build>
-    <!--
-    NOTE: Deliberately re-specify default paths to decouple from super POM and interpolation. Proper handling of
-    *relative* paths is the whole point of this test.
-    -->
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
-    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+    <directory>target</directory>
+    <filters>
+      <filter>src/main/filters/it.properties</filter>
+    </filters>
     <resources>
       <resource>
         <directory>src/main/resources</directory>
@@ -50,12 +43,6 @@
         <directory>src/test/resources</directory>
       </testResource>
     </testResources>
-    <directory>target</directory>
-    <outputDirectory>target/classes</outputDirectory>
-    <testOutputDirectory>target/test-classes</testOutputDirectory>
-    <filters>
-      <filter>src/main/filters/it.properties</filter>
-    </filters>
 
     <plugins>
       <plugin>
@@ -83,14 +70,23 @@
         <executions>
           <execution>
             <id>effective-model</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <!--
+    NOTE: Deliberately re-specify default paths to decouple from super POM and interpolation. Proper handling of
+    *relative* paths is the whole point of this test.
+    -->
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+    <testSourceDirectory>src/test/java</testSourceDirectory>
+    <outputDirectory>target/classes</outputDirectory>
+    <testOutputDirectory>target/test-classes</testOutputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/mng-3886/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3886/test-1/pom.xml
index 8f8979f..085763f 100644
--- a/core-it-suite/src/test/resources/mng-3886/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3886/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3886</name>
-  <description>
-    Test that the goals from a plugin execution are executed in the order given by the POM.
-  </description>
+  <description>Test that the goals from a plugin execution are executed in the order given by the POM.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -42,13 +38,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
               <goal>reset</goal>
               <goal>log-string</goal>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/it.log</logFile>
               <string>test</string>
diff --git a/core-it-suite/src/test/resources/mng-3886/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3886/test-2/pom.xml
index cb5705a..97e546d 100644
--- a/core-it-suite/src/test/resources/mng-3886/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3886/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3886</name>
-  <description>
-    Test that the goals from a plugin execution are executed in the order given by the POM.
-  </description>
+  <description>Test that the goals from a plugin execution are executed in the order given by the POM.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -51,13 +47,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
               <goal>reset</goal>
               <goal>log-string</goal>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/it.log</logFile>
               <string>test</string>
diff --git a/core-it-suite/src/test/resources/mng-3887/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3887/test-1/pom.xml
index e93de31..52d657c 100644
--- a/core-it-suite/src/test/resources/mng-3887/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3887/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3887</name>
-  <description>
-    Test that multiple plugin executions bound to the same phase are executed in the order given by the POM.
-  </description>
+  <description>Test that multiple plugin executions bound to the same phase are executed in the order given by the POM.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -47,31 +43,31 @@
         <executions>
           <execution>
             <id>test-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-3</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-4</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3887/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3887/test-2/pom.xml
index c453b8b..58cecc2 100644
--- a/core-it-suite/src/test/resources/mng-3887/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3887/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3886</name>
-  <description>
-    Test that multiple plugin executions bound to the same phase are executed in the order given by the POM.
-  </description>
+  <description>Test that multiple plugin executions bound to the same phase are executed in the order given by the POM.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -56,31 +52,31 @@
         <executions>
           <execution>
             <id>test-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-3</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>test-4</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3890/pom.xml b/core-it-suite/src/test/resources/mng-3890/pom.xml
index 587828e..69f91c0 100644
--- a/core-it-suite/src/test/resources/mng-3890/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3890/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,12 +25,10 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-3890</name>
-  <description>
-    Test that transitive dependencies whose scope has been updated from "compile" to "provided" by a consumer
-    remain in "provided" scope when depending on this consumer with scope "compile".
-  </description>
+  <description>Test that transitive dependencies whose scope has been updated from "compile" to "provided" by a consumer
+    remain in "provided" scope when depending on this consumer with scope "compile".</description>
 
-<!-- Below are the dependency trees for the artifacts of this test with Maven 2.0.9:
+  <!-- Below are the dependency trees for the artifacts of this test with Maven 2.0.9:
 [INFO] ========================================================================
 [INFO] [dependency:tree]
 [INFO] org.apache.maven.its.mng3890:b:jar:0.1
@@ -69,13 +65,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <testArtifacts>target/artifacts.txt</testArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3892/pom.xml b/core-it-suite/src/test/resources/mng-3892/pom.xml
index 61ff40c..b82d026 100644
--- a/core-it-suite/src/test/resources/mng-3892/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3892/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,16 +27,14 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3892</name>
-  <description>
-    Test that a bunch of release artifacts can be deployed without the deployer erroneously complaining about
-    already deployed artifacts.
-  </description>
+  <description>Test that a bunch of release artifacts can be deployed without the deployer erroneously complaining about
+    already deployed artifacts.</description>
 
   <distributionManagement>
     <repository>
+      <uniqueVersion>true</uniqueVersion>
       <id>maven-core-it</id>
       <url>file:///${basedir}/repo</url>
-      <uniqueVersion>true</uniqueVersion>
     </repository>
   </distributionManagement>
 
@@ -51,13 +47,6 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
-            <configuration>
-              <mainFile>jars/main.jar</mainFile>
-              <attachedFile>jars/attached.jar</attachedFile>
-              <artifactType>jar</artifactType>
-              <artifactClassifier>it</artifactClassifier>
-            </configuration>
             <goals>
               <goal>set</goal>
               <goal>attach</goal>
@@ -66,6 +55,13 @@
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
+            <configuration>
+              <mainFile>jars/main.jar</mainFile>
+              <attachedFile>jars/attached.jar</attachedFile>
+              <artifactType>jar</artifactType>
+              <artifactClassifier>it</artifactClassifier>
+            </configuration>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3899/pom.xml b/core-it-suite/src/test/resources/mng-3899/pom.xml
index 262af4f..a2c2b25 100644
--- a/core-it-suite/src/test/resources/mng-3899/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3899/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3899</name>
-  <description>
-    Test that build extensions are properly merged during inheritance.
-  </description>
+  <description>Test that build extensions are properly merged during inheritance.</description>
 
   <build>
     <extensions>
diff --git a/core-it-suite/src/test/resources/mng-3899/sub/pom.xml b/core-it-suite/src/test/resources/mng-3899/sub/pom.xml
index dc8f6f5..8022bc2 100644
--- a/core-it-suite/src/test/resources/mng-3899/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3899/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,11 +29,30 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3899</name>
-  <description>
-    Test that build extensions are properly merged during inheritance.
-  </description>
+  <description>Test that build extensions are properly merged during inheritance.</description>
 
   <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <outputFile>target/extension.properties</outputFile>
+              <expressions>
+                <expression>project/build/extensions</expression>
+              </expressions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
     <!-- project extensions should precede inherited extensions -->
     <extensions>
       <extension>
@@ -50,26 +67,5 @@
         <version>0.2</version>
       </extension>
     </extensions>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-expression</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-            <configuration>
-              <outputFile>target/extension.properties</outputFile>
-              <expressions>
-                <expression>project/build/extensions</expression>
-              </expressions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3900/pom.xml b/core-it-suite/src/test/resources/mng-3900/pom.xml
index e028968..c205e22 100644
--- a/core-it-suite/src/test/resources/mng-3900/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3900/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3900</name>
-  <description>
-    Test that build properties defined via active profiles are used for interpolation.
-  </description>
+  <description>Test that build properties defined via active profiles are used for interpolation.</description>
 
   <!-- These are some POM elements we would like to interpolate with properties from the profile. -->
   <url>http://maven.apache.org/${test}</url>
@@ -47,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3904/pom.xml b/core-it-suite/src/test/resources/mng-3904/pom.xml
index e8fd42b..a9d632d 100644
--- a/core-it-suite/src/test/resources/mng-3904/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3904/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3904</name>
-  <description>
-    Test that properties which refer to build directories which in turn refer to other build directories are
-    properly interpolated.
-  </description>
+  <description>Test that properties which refer to build directories which in turn refer to other build directories are
+    properly interpolated.</description>
 
   <properties>
     <!-- These are the properties of interest -->
@@ -43,10 +39,6 @@
   <build>
     <!-- Test properties which finally refer to ${project.basedir} -->
     <directory>${project.basedir}/target</directory>
-    <outputDirectory>${project.build.directory}/classes</outputDirectory>
-    <!-- Test properties which finally refer to ${basedir} -->
-    <sourceDirectory>${basedir}/src</sourceDirectory>
-    <testSourceDirectory>${project.build.sourceDirectory}/test</testSourceDirectory>
 
     <plugins>
       <plugin>
@@ -55,10 +47,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
@@ -69,6 +61,10 @@
         </executions>
       </plugin>
     </plugins>
+    <!-- Test properties which finally refer to ${basedir} -->
+    <sourceDirectory>${basedir}/src</sourceDirectory>
+    <testSourceDirectory>${project.build.sourceDirectory}/test</testSourceDirectory>
+    <outputDirectory>${project.build.directory}/classes</outputDirectory>
   </build>
 
   <reporting>
diff --git a/core-it-suite/src/test/resources/mng-3906/pom.xml b/core-it-suite/src/test/resources/mng-3906/pom.xml
index 32124c5..8f2cf35 100644
--- a/core-it-suite/src/test/resources/mng-3906/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3906/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3906</name>
-  <description>
-    Test that project-level plugin dependencies are properly merged during inheritance.
-  </description>
+  <description>Test that project-level plugin dependencies are properly merged during inheritance.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3906/sub/pom.xml b/core-it-suite/src/test/resources/mng-3906/sub/pom.xml
index e13262b..b872bb7 100644
--- a/core-it-suite/src/test/resources/mng-3906/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3906/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3906</name>
-  <description>
-    Test that project-level plugin dependencies are properly merged during inheritance.
-  </description>
+  <description>Test that project-level plugin dependencies are properly merged during inheritance.</description>
 
   <build>
     <plugins>
@@ -61,14 +57,14 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <resourcePaths>org/apache/maven/its/mng3906/SomeClass.class</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3916/pom.xml b/core-it-suite/src/test/resources/mng-3916/pom.xml
index 2e8bb04..dfe274d 100644
--- a/core-it-suite/src/test/resources/mng-3916/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3916/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3916</name>
-  <description>
-    Test that plugin executions are properly merged during inheritance, even if the child plugin section has no
-    version.
-  </description>
+  <description>Test that plugin executions are properly merged during inheritance, even if the child plugin section has no
+    version.</description>
 
   <build>
     <plugins>
@@ -42,21 +38,21 @@
         <executions>
           <execution>
             <id>parent-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-1</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3916/sub/pom.xml b/core-it-suite/src/test/resources/mng-3916/sub/pom.xml
index fd42710..d935e67 100644
--- a/core-it-suite/src/test/resources/mng-3916/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3916/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3916</name>
-  <description>
-    Test that plugin executions are properly merged during inheritance, even if the child plugin section has no
-    version.
-  </description>
+  <description>Test that plugin executions are properly merged during inheritance, even if the child plugin section has no
+    version.</description>
 
   <build>
     <plugins>
@@ -45,21 +41,21 @@
         <executions>
           <execution>
             <id>child-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-1</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3924/pom.xml b/core-it-suite/src/test/resources/mng-3924/pom.xml
index ada0651..9219396 100644
--- a/core-it-suite/src/test/resources/mng-3924/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3924/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3924</name>
-  <description>
-    Test that interpolation of properties that resolve to XML markup doesn't crash the project builder.
-  </description>
+  <description>Test that interpolation of properties that resolve to XML markup doesn't crash the project builder.</description>
 
   <properties>
     <!-- That's the property containing escaped XML markup -->
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/xml.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3925/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3925/test-1/pom.xml
index 1d5d49e..41979b1 100644
--- a/core-it-suite/src/test/resources/mng-3925/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3925/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3925</name>
-  <description>
-    Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
-    parent executions.
-  </description>
+  <description>Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
+    parent executions.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>parent-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-1</string>
@@ -54,21 +50,21 @@
           </execution>
           <execution>
             <id>parent-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-2</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3925/test-1/sub/pom.xml b/core-it-suite/src/test/resources/mng-3925/test-1/sub/pom.xml
index e2db6b0..f16d473 100644
--- a/core-it-suite/src/test/resources/mng-3925/test-1/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3925/test-1/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3925</name>
-  <description>
-    Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
-    parent executions.
-  </description>
+  <description>Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
+    parent executions.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>child-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-1</string>
@@ -56,21 +52,21 @@
           </execution>
           <execution>
             <id>child-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-2</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3925/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3925/test-2/pom.xml
index bd1d243..e3099cf 100644
--- a/core-it-suite/src/test/resources/mng-3925/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3925/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3925</name>
-  <description>
-    Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
-    parent executions.
-  </description>
+  <description>Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
+    parent executions.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -44,10 +40,10 @@
           <executions>
             <execution>
               <id>parent-1</id>
-              <phase>validate</phase>
               <goals>
                 <goal>log-string</goal>
               </goals>
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/exec.log</logFile>
                 <string>parent-1</string>
@@ -55,21 +51,21 @@
             </execution>
             <execution>
               <id>parent-2</id>
-              <phase>validate</phase>
               <goals>
                 <goal>log-string</goal>
               </goals>
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/exec.log</logFile>
                 <string>parent-2</string>
               </configuration>
             </execution>
             <execution>
-              <!-- NOTE: <id> deliberately omitted to use default value -->
-              <phase>validate</phase>
               <goals>
                 <goal>log-string</goal>
               </goals>
+              <!-- NOTE: <id> deliberately omitted to use default value -->
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/exec.log</logFile>
                 <string>parent-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3925/test-2/sub/pom.xml b/core-it-suite/src/test/resources/mng-3925/test-2/sub/pom.xml
index e2db6b0..f16d473 100644
--- a/core-it-suite/src/test/resources/mng-3925/test-2/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3925/test-2/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3925</name>
-  <description>
-    Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
-    parent executions.
-  </description>
+  <description>Test that plugin executions (in the same phase) are properly ordered after inheritance/merge with
+    parent executions.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>child-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-1</string>
@@ -56,21 +52,21 @@
           </execution>
           <execution>
             <id>child-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-2</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3927/pom.xml b/core-it-suite/src/test/resources/mng-3927/pom.xml
index 15c3c9b..e0690e6 100644
--- a/core-it-suite/src/test/resources/mng-3927/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3927/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3927</name>
-  <description>
-    Test that the configuration for a plugin execution without an identifier does not pollute the configuration
-    of default plugin executions introduced by the packaging.
-  </description>
+  <description>Test that the configuration for a plugin execution without an identifier does not pollute the configuration
+    of default plugin executions introduced by the packaging.</description>
 
   <build>
     <plugins>
@@ -41,11 +37,11 @@
         <version>0.1-stub-SNAPSHOT</version>
         <executions>
           <execution>
-            <!-- NOTE: <id> element deliberately omitted to trigger issue. -->
-            <phase>verify</phase>
             <goals>
               <goal>resources</goal>
             </goals>
+            <!-- NOTE: <id> element deliberately omitted to trigger issue. -->
+            <phase>verify</phase>
             <configuration>
               <!-- This should not apply to the execution of resources:resources in the process-resources phase -->
               <pathname>target/failed.txt</pathname>
diff --git a/core-it-suite/src/test/resources/mng-3937/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3937/test-1/pom.xml
index d2d4d8e..c991d7a 100644
--- a/core-it-suite/src/test/resources/mng-3937/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3937/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3937</name>
-  <description>
-    Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
-    ordered.
-  </description>
+  <description>Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
+    ordered.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -43,11 +39,11 @@
         <executions>
           <execution>
             <id>merge</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
               <goal>log-separator</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/parent.log</logFile>
               <length>4</length>
diff --git a/core-it-suite/src/test/resources/mng-3937/test-1/sub/pom.xml b/core-it-suite/src/test/resources/mng-3937/test-1/sub/pom.xml
index eafb0bf..3f328c2 100644
--- a/core-it-suite/src/test/resources/mng-3937/test-1/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3937/test-1/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3937</name>
-  <description>
-    Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
-    ordered.
-  </description>
+  <description>Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
+    ordered.</description>
 
   <build>
     <plugins>
@@ -45,11 +41,11 @@
         <executions>
           <execution>
             <id>merge</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child</string>
diff --git a/core-it-suite/src/test/resources/mng-3937/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3937/test-2/pom.xml
index 280c408..5c8cd9c 100644
--- a/core-it-suite/src/test/resources/mng-3937/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3937/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3937</name>
-  <description>
-    Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
-    ordered.
-  </description>
+  <description>Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
+    ordered.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -44,11 +40,11 @@
           <executions>
             <execution>
               <id>merge</id>
-              <phase>validate</phase>
               <goals>
                 <goal>reset</goal>
                 <goal>log-separator</goal>
               </goals>
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/parent.log</logFile>
                 <length>4</length>
diff --git a/core-it-suite/src/test/resources/mng-3937/test-2/sub/pom.xml b/core-it-suite/src/test/resources/mng-3937/test-2/sub/pom.xml
index eafb0bf..3f328c2 100644
--- a/core-it-suite/src/test/resources/mng-3937/test-2/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3937/test-2/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3937</name>
-  <description>
-    Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
-    ordered.
-  </description>
+  <description>Test that during inheritance/merging of a plugin execution the goals specified by child and parent are properly
+    ordered.</description>
 
   <build>
     <plugins>
@@ -45,11 +41,11 @@
         <executions>
           <execution>
             <id>merge</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child</string>
diff --git a/core-it-suite/src/test/resources/mng-3938/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3938/test-1/pom.xml
index 5a1a54b..ee01c19 100644
--- a/core-it-suite/src/test/resources/mng-3938/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3938/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3938</name>
-  <description>
-    Test that plugin executions with the same id are merged during inheritance, especially executions using the
-    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.
-  </description>
+  <description>Test that plugin executions with the same id are merged during inheritance, especially executions using the
+    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.</description>
 
   <build>
     <!-- This project does not use plugin management for the test plugin -->
@@ -42,11 +38,11 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <!-- NOTE: Implicitly reference "default" id here, i.e. omit the <id> element -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: Implicitly reference "default" id here, i.e. omit the <id> element -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/parent.log</logFile>
               <string>parent</string>
@@ -54,10 +50,10 @@
           </execution>
           <execution>
             <id>non-default</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/parent.log</logFile>
               <string>parent</string>
diff --git a/core-it-suite/src/test/resources/mng-3938/test-1/sub/pom.xml b/core-it-suite/src/test/resources/mng-3938/test-1/sub/pom.xml
index c299b13..63a96b2 100644
--- a/core-it-suite/src/test/resources/mng-3938/test-1/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3938/test-1/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3938</name>
-  <description>
-    Test that plugin executions with the same id are merged during inheritance, especially executions using the
-    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.
-  </description>
+  <description>Test that plugin executions with the same id are merged during inheritance, especially executions using the
+    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
           <execution>
             <!-- NOTE: Explicitly reference "default" id here -->
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/default.log</logFile>
               <string>child</string>
@@ -57,10 +53,10 @@
           </execution>
           <execution>
             <id>non-default</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/non-default.log</logFile>
               <string>child</string>
diff --git a/core-it-suite/src/test/resources/mng-3938/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3938/test-2/pom.xml
index 6c4d541..07c6c30 100644
--- a/core-it-suite/src/test/resources/mng-3938/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3938/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3938</name>
-  <description>
-    Test that plugin executions with the same id are merged during inheritance, especially executions using the
-    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.
-  </description>
+  <description>Test that plugin executions with the same id are merged during inheritance, especially executions using the
+    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.</description>
 
   <build>
     <!-- This project uses plugin management for the test plugin -->
@@ -43,11 +39,11 @@
           <version>2.1-SNAPSHOT</version>
           <executions>
             <execution>
-              <!-- NOTE: Implicitly reference "default" id here, i.e. omit the <id> element -->
-              <phase>validate</phase>
               <goals>
                 <goal>log-string</goal>
               </goals>
+              <!-- NOTE: Implicitly reference "default" id here, i.e. omit the <id> element -->
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/parent.log</logFile>
                 <string>parent</string>
@@ -55,10 +51,10 @@
             </execution>
             <execution>
               <id>non-default</id>
-              <phase>validate</phase>
               <goals>
                 <goal>log-string</goal>
               </goals>
+              <phase>validate</phase>
               <configuration>
                 <logFile>target/parent.log</logFile>
                 <string>parent</string>
diff --git a/core-it-suite/src/test/resources/mng-3938/test-2/sub/pom.xml b/core-it-suite/src/test/resources/mng-3938/test-2/sub/pom.xml
index c299b13..63a96b2 100644
--- a/core-it-suite/src/test/resources/mng-3938/test-2/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3938/test-2/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3938</name>
-  <description>
-    Test that plugin executions with the same id are merged during inheritance, especially executions using the
-    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.
-  </description>
+  <description>Test that plugin executions with the same id are merged during inheritance, especially executions using the
+    default id, regardless whether the id is given explicitly by the user or implicitly assumed from defaults.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
           <execution>
             <!-- NOTE: Explicitly reference "default" id here -->
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/default.log</logFile>
               <string>child</string>
@@ -57,10 +53,10 @@
           </execution>
           <execution>
             <id>non-default</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/non-default.log</logFile>
               <string>child</string>
diff --git a/core-it-suite/src/test/resources/mng-3940/pom.xml b/core-it-suite/src/test/resources/mng-3940/pom.xml
index cc43f39..9ad0998 100644
--- a/core-it-suite/src/test/resources/mng-3940/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3940/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3940</name>
-  <description>
-    Test that interpolation of environment variables respects the casing rules of the underlying OS (especially
-    Windows).
-  </description>
+  <description>Test that interpolation of environment variables respects the casing rules of the underlying OS (especially
+    Windows).</description>
 
   <properties>
     <envTest>${env.MAVEN_MNG_3940}</envTest>
@@ -45,10 +41,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/${env.MAVEN_MNG_3940}.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-3941/pom.xml b/core-it-suite/src/test/resources/mng-3941/pom.xml
index 1aa67e4..8277d57 100644
--- a/core-it-suite/src/test/resources/mng-3941/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3941/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3941</name>
-  <description>
-    Test that the execution project from a forked lifecycle does not leak into mojos that run after the mojo
+  <description>Test that the execution project from a forked lifecycle does not leak into mojos that run after the mojo
     that forked the lifecycle. While this is rather irrelevant for Maven's core itself, this enforces proper
-    mojo programming, i.e. a mojo should not access the execution project unless it forked the lifecycle.
-  </description>
+    mojo programming, i.e. a mojo should not access the execution project unless it forked the lifecycle.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>fork</id>
-            <phase>validate</phase>
             <goals>
               <goal>fork-goal</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -67,10 +63,10 @@
         <executions>
           <execution>
             <id>after-fork</id>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3943/pom.xml b/core-it-suite/src/test/resources/mng-3943/pom.xml
index b2f4f13..479e408 100644
--- a/core-it-suite/src/test/resources/mng-3943/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3943/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3943</name>
-  <description>
-    Test that plugin executions are properly merged during inheritance, even if the child uses a different
-    plugin version than the parent.
-  </description>
+  <description>Test that plugin executions are properly merged during inheritance, even if the child uses a different
+    plugin version than the parent.</description>
 
   <build>
     <plugins>
@@ -43,21 +39,21 @@
         <executions>
           <execution>
             <id>parent-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-1</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>parent-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3943/sub/pom.xml b/core-it-suite/src/test/resources/mng-3943/sub/pom.xml
index f5713c8..82b1e9d 100644
--- a/core-it-suite/src/test/resources/mng-3943/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3943/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,10 +29,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3943</name>
-  <description>
-    Test that plugin executions are properly merged during inheritance, even if the child uses a different
-    plugin version than the parent.
-  </description>
+  <description>Test that plugin executions are properly merged during inheritance, even if the child uses a different
+    plugin version than the parent.</description>
 
   <build>
     <plugins>
@@ -46,21 +42,21 @@
         <executions>
           <execution>
             <id>child-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-1</string>
             </configuration>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted to use default value -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted to use default value -->
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>child-default</string>
diff --git a/core-it-suite/src/test/resources/mng-3947/pom.xml b/core-it-suite/src/test/resources/mng-3947/pom.xml
index 8af06a9..5647c57 100644
--- a/core-it-suite/src/test/resources/mng-3947/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3947/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3947</name>
-  <description>
-    Test that the configuration for a plugin execution with the identifier "default" does not pollute the
-    configuration of standalone plugin executions from the CLI.
-  </description>
+  <description>Test that the configuration for a plugin execution with the identifier "default" does not pollute the
+    configuration of standalone plugin executions from the CLI.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>verify</phase>
             <goals>
               <goal>resources</goal>
             </goals>
+            <phase>verify</phase>
             <configuration>
               <!-- This should not apply to the standalone execution of resources:resources from the CLI -->
               <pathname>target/failed.txt</pathname>
diff --git a/core-it-suite/src/test/resources/mng-3948/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3948/test-1/pom.xml
index 906d1b8..2a60bee 100644
--- a/core-it-suite/src/test/resources/mng-3948/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3948/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,7 +29,5 @@
   <artifactId>test</artifactId>
 
   <name>Maven Integration Test :: MNG-3948</name>
-  <description>
-    Test that parent POMs can be resolved from remote repositories defined by (active) profiles in profiles.xml.
-  </description>
+  <description>Test that parent POMs can be resolved from remote repositories defined by (active) profiles in profiles.xml.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3948/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3948/test-2/pom.xml
index c55ba23..c96446d 100644
--- a/core-it-suite/src/test/resources/mng-3948/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3948/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>test</artifactId>
 
   <name>Maven Integration Test :: MNG-3948</name>
-  <description>
-    Test that parent POMs can be resolved from remote repositories defined by (active) profiles in the POM.
-  </description>
+  <description>Test that parent POMs can be resolved from remote repositories defined by (active) profiles in the POM.</description>
 
   <profiles>
     <profile>
@@ -43,14 +39,14 @@
       </activation>
       <repositories>
         <repository>
-          <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
           <releases>
             <checksumPolicy>ignore</checksumPolicy>
           </releases>
           <snapshots>
             <checksumPolicy>ignore</checksumPolicy>
           </snapshots>
+          <id>maven-core-it</id>
+          <url>@baseurl@/repo</url>
         </repository>
       </repositories>
     </profile>
diff --git a/core-it-suite/src/test/resources/mng-3951/pom.xml b/core-it-suite/src/test/resources/mng-3951/pom.xml
index 2a0e5d7..648fbe9 100644
--- a/core-it-suite/src/test/resources/mng-3951/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3951/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3951</name>
-  <description>
-    Test that the paths retrieved from the core are always absolute, in particular the drive-relative paths on
-    Windows must be properly resolved.
-  </description>
+  <description>Test that the paths retrieved from the core are always absolute, in particular the drive-relative paths on
+    Windows must be properly resolved.</description>
 
   <build>
     <plugins>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3953/release/pom.xml b/core-it-suite/src/test/resources/mng-3953/release/pom.xml
index d1dcb8e..c5da87d 100644
--- a/core-it-suite/src/test/resources/mng-3953/release/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3953/release/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3953</name>
-  <description>
-    Test that deployment (of a release) to a repository that requires authentification works.
-  </description>
+  <description>Test that deployment (of a release) to a repository that requires authentification works.</description>
 
   <distributionManagement>
     <repository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3953/snapshot/pom.xml b/core-it-suite/src/test/resources/mng-3953/snapshot/pom.xml
index b90b188..e7a86f3 100644
--- a/core-it-suite/src/test/resources/mng-3953/snapshot/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3953/snapshot/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3953</name>
-  <description>
-    Test that deployment (of a snapshot) to a repository that requires authentification works.
-  </description>
+  <description>Test that deployment (of a snapshot) to a repository that requires authentification works.</description>
 
   <distributionManagement>
     <repository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3955/pom.xml b/core-it-suite/src/test/resources/mng-3955/pom.xml
index 3e0b14f..22b5029 100644
--- a/core-it-suite/src/test/resources/mng-3955/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3955/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3955</name>
-  <description>
-    Test that plugin parameter expressions referring to the settings reflect the actual core state, especially
-    if settings have been overridden by CLI parameters.
-  </description>
+  <description>Test that plugin parameter expressions referring to the settings reflect the actual core state, especially
+    if settings have been overridden by CLI parameters.</description>
 
   <build>
     <plugins>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3970/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3970/test-1/pom.xml
index ba42c8d..ab74aa9 100644
--- a/core-it-suite/src/test/resources/mng-3970/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3970/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3970</name>
-  <description>
-    Test that dependencies can be resolved from remote repositories defined by (active) profiles in profiles.xml.
-  </description>
+  <description>Test that dependencies can be resolved from remote repositories defined by (active) profiles in profiles.xml.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3970/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3970/test-2/pom.xml
index 6c66616..cc1115e 100644
--- a/core-it-suite/src/test/resources/mng-3970/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3970/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.2</version>
 
   <name>Maven Integration Test :: MNG-3970</name>
-  <description>
-    Test that dependencies can be resolved from remote repositories defined by (active) profiles in the POM.
-  </description>
+  <description>Test that dependencies can be resolved from remote repositories defined by (active) profiles in the POM.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -66,14 +62,14 @@
       </activation>
       <repositories>
         <repository>
-          <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
           <releases>
             <checksumPolicy>ignore</checksumPolicy>
           </releases>
           <snapshots>
             <enabled>false</enabled>
           </snapshots>
+          <id>maven-core-it</id>
+          <url>@baseurl@/repo</url>
         </repository>
       </repositories>
     </profile>
diff --git a/core-it-suite/src/test/resources/mng-3970/test-3/pom.xml b/core-it-suite/src/test/resources/mng-3970/test-3/pom.xml
index 2a5f70a..6ab3133 100644
--- a/core-it-suite/src/test/resources/mng-3970/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3970/test-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.3</version>
 
   <name>Maven Integration Test :: MNG-3970</name>
-  <description>
-    Test that dependencies can be resolved from remote repositories defined by (active) profiles in settings.xml.
-  </description>
+  <description>Test that dependencies can be resolved from remote repositories defined by (active) profiles in settings.xml.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3974/pom.xml b/core-it-suite/src/test/resources/mng-3974/pom.xml
index b186688..5aff1f8 100644
--- a/core-it-suite/src/test/resources/mng-3974/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3974/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3974</name>
-  <description>
-    Test that mirror definitions are properly evaluated. In particular, the first matching mirror definition
-    from the settings should win, i.e. ordering of mirror definitions matters.
-  </description>
+  <description>Test that mirror definitions are properly evaluated. In particular, the first matching mirror definition
+    from the settings should win, i.e. ordering of mirror definitions matters.</description>
 
   <dependencies>
     <dependency>
@@ -56,10 +52,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3979/pom.xml b/core-it-suite/src/test/resources/mng-3979/pom.xml
index 0137ba8..cbece35 100644
--- a/core-it-suite/src/test/resources/mng-3979/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3979/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-3979</name>
-  <description>
-    Test that during inheritance the merging/joining of subtrees with equal identifier doesn't crash if the parent
-    POM has a non-empty element and the child POM has an empty element to join.
-  </description>
+  <description>Test that during inheritance the merging/joining of subtrees with equal identifier doesn't crash if the parent
+    POM has a non-empty element and the child POM has an empty element to join.</description>
 
   <properties>
     <prop0>test</prop0>
@@ -39,14 +35,14 @@
 
   <repositories>
     <repository>
-      <id>equal-repo-id</id>
-      <url>http://maven.apache.org/null</url>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
       <releases>
         <checksumPolicy>ignore</checksumPolicy>
       </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <id>equal-repo-id</id>
+      <url>http://maven.apache.org/null</url>
     </repository>
   </repositories>
 
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>equal-build-exec-id</id>
-            <phase>initialize</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>test</string>
diff --git a/core-it-suite/src/test/resources/mng-3979/sub/pom.xml b/core-it-suite/src/test/resources/mng-3979/sub/pom.xml
index 501a6b4..d8d3e67 100644
--- a/core-it-suite/src/test/resources/mng-3979/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3979/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,21 +29,19 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-3979</name>
-  <description>
-    Test that during inheritance the merging/joining of subtrees with equal identifier doesn't crash if the parent
-    POM has a non-empty element and the child POM has an empty element to join.
-  </description>
+  <description>Test that during inheritance the merging/joining of subtrees with equal identifier doesn't crash if the parent
+    POM has a non-empty element and the child POM has an empty element to join.</description>
 
   <!-- NOTE: All those empty elements below are the essential part of the test! -->
 
-  <properties/>
+  <properties />
 
   <repositories>
     <repository>
+      <releases />
+      <snapshots />
       <id>equal-repo-id</id>
       <url>file:///${basedir}/null</url>
-      <snapshots/>
-      <releases/>
     </repository>
   </repositories>
 
@@ -58,9 +54,9 @@
         <executions>
           <execution>
             <id>equal-build-exec-id</id>
+            <goals />
             <phase>initialize</phase>
-            <goals/>
-            <configuration/>
+            <configuration />
           </execution>
         </executions>
       </plugin>
@@ -76,8 +72,8 @@
         <reportSets>
           <reportSet>
             <id>equal-report-exec-id</id>
-            <reports/>
-            <configuration/>
+            <reports />
+            <configuration />
           </reportSet>
         </reportSets>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3983/test-1/pom.xml b/core-it-suite/src/test/resources/mng-3983/test-1/pom.xml
index 743a612..877088f 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3983/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3983</name>
-  <description>
-    Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in the POM.
-  </description>
+  <description>Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in the POM.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -58,14 +54,14 @@
       </activation>
       <pluginRepositories>
         <pluginRepository>
-          <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
           <releases>
             <checksumPolicy>ignore</checksumPolicy>
           </releases>
           <snapshots>
             <enabled>false</enabled>
           </snapshots>
+          <id>maven-core-it</id>
+          <url>@baseurl@/repo</url>
         </pluginRepository>
       </pluginRepositories>
     </profile>
diff --git a/core-it-suite/src/test/resources/mng-3983/test-2/pom.xml b/core-it-suite/src/test/resources/mng-3983/test-2/pom.xml
index 3af19be..9a77d58 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3983/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.2</version>
 
   <name>Maven Integration Test :: MNG-3983</name>
-  <description>
-    Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in profiles.xml.
-  </description>
+  <description>Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in profiles.xml.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3983/test-3/pom.xml b/core-it-suite/src/test/resources/mng-3983/test-3/pom.xml
index 759300e..e18e34a 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3983/test-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.3</version>
 
   <name>Maven Integration Test :: MNG-3983</name>
-  <description>
-    Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in settings.xml.
-  </description>
+  <description>Test that plugins can be resolved from remote plugin repositories defined by (active) profiles in settings.xml.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-3991/pom.xml b/core-it-suite/src/test/resources/mng-3991/pom.xml
index 7421052..792ea76 100644
--- a/core-it-suite/src/test/resources/mng-3991/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3991/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-3991</name>
-  <description>
-    Test that invalid dependency scopes cause a validation error during building.
-  </description>
+  <description>Test that invalid dependency scopes cause a validation error during building.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-3998/pom.xml b/core-it-suite/src/test/resources/mng-3998/pom.xml
index ffb5f31..9234b84 100644
--- a/core-it-suite/src/test/resources/mng-3998/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3998/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-3998</name>
-  <description>
-    Test that multiple plugin executions do not lose their configuration when plugin management is used.
-  </description>
+  <description>Test that multiple plugin executions do not lose their configuration when plugin management is used.</description>
 
   <build>
     <pluginManagement>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>exec-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>exec-1</string>
@@ -59,10 +55,10 @@
           </execution>
           <execution>
             <id>exec-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/exec.log</logFile>
               <string>exec-2</string>
diff --git a/core-it-suite/src/test/resources/mng-4000/test-1/pom.xml b/core-it-suite/src/test/resources/mng-4000/test-1/pom.xml
index 7910084..cef3ed7 100644
--- a/core-it-suite/src/test/resources/mng-4000/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4000/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4000</name>
-  <description>
-    Test that plugin executions without id are not lost among other plugin executions.
-  </description>
+  <description>Test that plugin executions without id are not lost among other plugin executions.</description>
 
   <build>
     <!-- NOTE: This test does not use plugin management for the IT plugin. -->
@@ -45,17 +41,17 @@
         <executions>
           <execution>
             <id>exec-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted here! -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted here! -->
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4000/test-2/pom.xml b/core-it-suite/src/test/resources/mng-4000/test-2/pom.xml
index fbae181..998ac86 100644
--- a/core-it-suite/src/test/resources/mng-4000/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4000/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4000</name>
-  <description>
-    Test that plugin executions without id are not lost among other plugin executions.
-  </description>
+  <description>Test that plugin executions without id are not lost among other plugin executions.</description>
 
   <build>
     <!-- NOTE: This test uses plugin management for the IT plugin. -->
@@ -53,17 +49,17 @@
         <executions>
           <execution>
             <id>exec-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
-            <!-- NOTE: <id> deliberately omitted here! -->
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: <id> deliberately omitted here! -->
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4005/dep/pom.xml b/core-it-suite/src/test/resources/mng-4005/dep/pom.xml
index c2e4a5e..13c25d2 100644
--- a/core-it-suite/src/test/resources/mng-4005/dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4005/dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4005</name>
-  <description>
-    Test that duplicate dependency declarations cause a validation error during building.
-  </description>
+  <description>Test that duplicate dependency declarations cause a validation error during building.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4005/man-dep/pom.xml b/core-it-suite/src/test/resources/mng-4005/man-dep/pom.xml
index 083c11c..92c5d8d 100644
--- a/core-it-suite/src/test/resources/mng-4005/man-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4005/man-dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4005</name>
-  <description>
-    Test that duplicate managed dependency declarations cause a validation error during building.
-  </description>
+  <description>Test that duplicate managed dependency declarations cause a validation error during building.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4005/profile-dep/pom.xml b/core-it-suite/src/test/resources/mng-4005/profile-dep/pom.xml
index c69ff43..aa9588c 100644
--- a/core-it-suite/src/test/resources/mng-4005/profile-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4005/profile-dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4005</name>
-  <description>
-    Test that duplicate dependency declarations in profiles cause a validation error during building.
-  </description>
+  <description>Test that duplicate dependency declarations in profiles cause a validation error during building.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-4005/profile-man-dep/pom.xml b/core-it-suite/src/test/resources/mng-4005/profile-man-dep/pom.xml
index 7212ea6..d5ad79b 100644
--- a/core-it-suite/src/test/resources/mng-4005/profile-man-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4005/profile-man-dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4005</name>
-  <description>
-    Test that duplicate managed dependency declarations in profiles cause a validation error during building.
-  </description>
+  <description>Test that duplicate managed dependency declarations in profiles cause a validation error during building.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-4007/pom.xml b/core-it-suite/src/test/resources/mng-4007/pom.xml
index 8eff462..f661f83 100644
--- a/core-it-suite/src/test/resources/mng-4007/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4007/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4007</name>
-  <description>
-    Verify that paths to project directories use the platform-specific file separator.
-  </description>
+  <description>Verify that paths to project directories use the platform-specific file separator.</description>
 
   <build>
     <filters>
@@ -63,10 +59,10 @@
         <executions>
           <execution>
             <id>effective-model</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4008/pom.xml b/core-it-suite/src/test/resources/mng-4008/pom.xml
index 6f4df9a..f24dfde 100644
--- a/core-it-suite/src/test/resources/mng-4008/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4008/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4008</name>
-  <description>
-    Verify that filter definitions are properly merged.
-  </description>
+  <description>Verify that filter definitions are properly merged.</description>
 
   <build>
     <filters>
diff --git a/core-it-suite/src/test/resources/mng-4008/sub/pom.xml b/core-it-suite/src/test/resources/mng-4008/sub/pom.xml
index 12310c5..40f1494 100644
--- a/core-it-suite/src/test/resources/mng-4008/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4008/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4008</name>
-  <description>
-    Verify that filter definitions are properly merged.
-  </description>
+  <description>Verify that filter definitions are properly merged.</description>
 
   <build>
     <filters>
@@ -60,10 +56,10 @@
         <executions>
           <execution>
             <id>effective-model</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4009/pom.xml b/core-it-suite/src/test/resources/mng-4009/pom.xml
index a68d8af..d00ed69 100644
--- a/core-it-suite/src/test/resources/mng-4009/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4009/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4009</name>
-  <description>
-    Verify that the effects of profiles on a parent are inherited by children.
-  </description>
+  <description>Verify that the effects of profiles on a parent are inherited by children.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-4009/sub/pom.xml b/core-it-suite/src/test/resources/mng-4009/sub/pom.xml
index 33ccd85..6ef0d53 100644
--- a/core-it-suite/src/test/resources/mng-4009/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4009/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4009</name>
-  <description>
-    Verify that the effects of profiles on a parent are inherited by children.
-  </description>
+  <description>Verify that the effects of profiles on a parent are inherited by children.</description>
 
   <build>
     <plugins>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>effective-model</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4016/pom.xml b/core-it-suite/src/test/resources/mng-4016/pom.xml
index 8bcb27d..bb11fbd 100644
--- a/core-it-suite/src/test/resources/mng-4016/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4016/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4016</name>
-  <description>
-    Test that expressions with the special prefixes "project.", "pom." and "env." can be interpolated from
-    properties that include the prefix.
-  </description>
+  <description>Test that expressions with the special prefixes "project.", "pom." and "env." can be interpolated from
+    properties that include the prefix.</description>
 
   <properties>
     <!-- source properties for the expressions to evaluate -->
@@ -52,10 +48,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/model.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-4022/pom.xml b/core-it-suite/src/test/resources/mng-4022/pom.xml
index e604556..1488a75 100644
--- a/core-it-suite/src/test/resources/mng-4022/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4022/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-4022</name>
-  <description>
-    Test that merging of equal plugin configuration is idempotent. This is especially interesting for lists with
-    empty elements.
-  </description>
+  <description>Test that merging of equal plugin configuration is idempotent. This is especially interesting for lists with
+    empty elements.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -66,11 +62,11 @@
             <configuration>
               <!-- NOTE: It's crucial to have the first and last list item be empty -->
               <stringParams>
-                <stringParam/>
+                <stringParam />
                 <stringParam>one</stringParam>
-                <stringParam/>
+                <stringParam />
                 <stringParam>two</stringParam>
-                <stringParam/>
+                <stringParam />
               </stringParams>
             </configuration>
           </plugin>
@@ -88,11 +84,11 @@
             <configuration>
               <!-- NOTE: It's crucial to have the first and last list item be empty -->
               <stringParams>
-                <stringParam/>
+                <stringParam />
                 <stringParam>one</stringParam>
-                <stringParam/>
+                <stringParam />
                 <stringParam>two</stringParam>
-                <stringParam/>
+                <stringParam />
               </stringParams>
             </configuration>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4023/pom.xml b/core-it-suite/src/test/resources/mng-4023/pom.xml
index 96b8de4..0255d7d 100644
--- a/core-it-suite/src/test/resources/mng-4023/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4023/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4023</name>
-  <description>
-    Verify that profiles in a parent are only injected once during a reactor build that include the parent
+  <description>Verify that profiles in a parent are only injected once during a reactor build that include the parent
     itself. The parent being part of the reactor makes it subject to project caching and proper use of the
-    cache is crucial here.
-  </description>
+    cache is crucial here.</description>
 
   <modules>
     <module>sub</module>
diff --git a/core-it-suite/src/test/resources/mng-4023/sub/pom.xml b/core-it-suite/src/test/resources/mng-4023/sub/pom.xml
index 01cf120..70409b2 100644
--- a/core-it-suite/src/test/resources/mng-4023/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4023/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,11 +31,9 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4023</name>
-  <description>
-    Verify that profiles in a parent are only injected once during a reactor build that include the parent
+  <description>Verify that profiles in a parent are only injected once during a reactor build that include the parent
     itself. The parent being part of the reactor makes it subject to project caching and proper use of the
-    cache is crucial here.
-  </description>
+    cache is crucial here.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4026/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4026/consumer/pom.xml
index 2c736fd..e202fc7 100644
--- a/core-it-suite/src/test/resources/mng-4026/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4026 :: Consumer</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <dependencies>
     <!-- NOTE: The dependencies are intentionally not in alpha order -->
@@ -63,7 +59,6 @@
   </dependencies>
 
   <build>
-    <outputDirectory>classes</outputDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -72,10 +67,10 @@
         <executions>
           <execution>
             <id>test-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <runtimeClassPath>target/classpath-1.txt</runtimeClassPath>
               <significantPathLevels>2</significantPathLevels>
@@ -87,10 +82,10 @@
             things like. After all, dependency resolution should be reproducible.
             -->
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <runtimeClassPath>target/classpath-2.txt</runtimeClassPath>
               <significantPathLevels>2</significantPathLevels>
@@ -99,5 +94,6 @@
         </executions>
       </plugin>
     </plugins>
+    <outputDirectory>classes</outputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4026/dep-1/pom.xml b/core-it-suite/src/test/resources/mng-4026/dep-1/pom.xml
index 17a4fb9..e601ff5 100644
--- a/core-it-suite/src/test/resources/mng-4026/dep-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/dep-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4026 :: Dependency 1</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <build>
     <plugins>
@@ -50,11 +46,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4026/dep-2/pom.xml b/core-it-suite/src/test/resources/mng-4026/dep-2/pom.xml
index 3e0cafe..76e28e7 100644
--- a/core-it-suite/src/test/resources/mng-4026/dep-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/dep-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4026 :: Dependency 2</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <build>
     <plugins>
@@ -50,11 +46,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4026/dep-3/pom.xml b/core-it-suite/src/test/resources/mng-4026/dep-3/pom.xml
index a2eb64b..55f649e 100644
--- a/core-it-suite/src/test/resources/mng-4026/dep-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/dep-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4026 :: Dependency 3</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <build>
     <plugins>
@@ -50,11 +46,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4026/dep-4/pom.xml b/core-it-suite/src/test/resources/mng-4026/dep-4/pom.xml
index dd9c3cf..5fa3634 100644
--- a/core-it-suite/src/test/resources/mng-4026/dep-4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/dep-4/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4026 :: Dependency 4</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <build>
     <plugins>
@@ -50,11 +46,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4026/pom.xml b/core-it-suite/src/test/resources/mng-4026/pom.xml
index 3245001..a259677 100644
--- a/core-it-suite/src/test/resources/mng-4026/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4026/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4026</name>
-  <description>
-    Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
-    resolved as active project artifacts from the reactor.
-  </description>
+  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
+    resolved as active project artifacts from the reactor.</description>
 
   <modules>
     <module>dep-1</module>
diff --git a/core-it-suite/src/test/resources/mng-4034/pom.xml b/core-it-suite/src/test/resources/mng-4034/pom.xml
index 88c9813..fa501b6 100644
--- a/core-it-suite/src/test/resources/mng-4034/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4034/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4034</name>
-  <description>
-    Verify that dependencies defined in profiles are subject to the dependency management of the parent.
-  </description>
+  <description>Verify that dependencies defined in profiles are subject to the dependency management of the parent.</description>
 
   <modules>
     <module>sub</module>
diff --git a/core-it-suite/src/test/resources/mng-4034/sub/pom.xml b/core-it-suite/src/test/resources/mng-4034/sub/pom.xml
index a77069b..d6a149d 100644
--- a/core-it-suite/src/test/resources/mng-4034/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4034/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +31,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4034</name>
-  <description>
-    Verify that dependencies defined in profiles are subject to the dependency management of the parent.
-  </description>
+  <description>Verify that dependencies defined in profiles are subject to the dependency management of the parent.</description>
 
   <profiles>
     <profile>
@@ -63,11 +59,11 @@
             <executions>
               <execution>
                 <id>test</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>compile</goal>
                   <goal>runtime</goal>
                 </goals>
+                <phase>validate</phase>
               </execution>
             </executions>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4036/default/pom.xml b/core-it-suite/src/test/resources/mng-4036/default/pom.xml
index b9a2693..4e8ad71 100644
--- a/core-it-suite/src/test/resources/mng-4036/default/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4036/default/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,8 +30,6 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4036</name>
-  <description>
-    Verify that a parent POM is successfully downloaded from a default-style remote repository defined in the
-    settings.
-  </description>
+  <description>Verify that a parent POM is successfully downloaded from a default-style remote repository defined in the
+    settings.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4036/legacy/pom.xml b/core-it-suite/src/test/resources/mng-4036/legacy/pom.xml
index c75e7f9..832a913 100644
--- a/core-it-suite/src/test/resources/mng-4036/legacy/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4036/legacy/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,8 +30,6 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4036</name>
-  <description>
-    Verify that a parent POM is successfully downloaded from a legacy-style remote repository defined in the
-    settings.
-  </description>
+  <description>Verify that a parent POM is successfully downloaded from a legacy-style remote repository defined in the
+    settings.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4040/pom.xml b/core-it-suite/src/test/resources/mng-4040/pom.xml
index 116bc6f..ef5a18f 100644
--- a/core-it-suite/src/test/resources/mng-4040/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4040/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4040</name>
-  <description>
-    Verify that modules inside profiles are not accidentally inherited by the children.
-  </description>
+  <description>Verify that modules inside profiles are not accidentally inherited by the children.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-4040/sub/pom.xml b/core-it-suite/src/test/resources/mng-4040/sub/pom.xml
index acfdd2b..987f988 100644
--- a/core-it-suite/src/test/resources/mng-4040/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4040/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,7 +31,5 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4040</name>
-  <description>
-    Verify that modules inside profiles are not accidentally inherited by the children.
-  </description>
+  <description>Verify that modules inside profiles are not accidentally inherited by the children.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4048/pom.xml b/core-it-suite/src/test/resources/mng-4048/pom.xml
index da2f676..3a8170b 100644
--- a/core-it-suite/src/test/resources/mng-4048/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4048/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4048</name>
-  <description>
-    Verify that dependencies using version ranges can be resolved from the reactor.
-  </description>
+  <description>Verify that dependencies using version ranges can be resolved from the reactor.</description>
 
   <modules>
     <module>sub-1</module>
diff --git a/core-it-suite/src/test/resources/mng-4048/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-4048/sub-1/pom.xml
index 10ebaf2..60c479c 100644
--- a/core-it-suite/src/test/resources/mng-4048/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4048/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +31,7 @@
   <version>1.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4048</name>
-  <description>
-    Verify that dependencies using version ranges can be resolved from the reactor.
-  </description>
+  <description>Verify that dependencies using version ranges can be resolved from the reactor.</description>
 
   <build>
     <plugins>
@@ -46,13 +42,13 @@
         <executions>
           <execution>
             <id>package</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4048/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-4048/sub-2/pom.xml
index 29e3e22..ecb22ac 100644
--- a/core-it-suite/src/test/resources/mng-4048/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4048/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +31,7 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4048</name>
-  <description>
-    Verify that dependencies using version ranges can be resolved from the reactor.
-  </description>
+  <description>Verify that dependencies using version ranges can be resolved from the reactor.</description>
 
   <dependencies>
     <dependency>
@@ -54,13 +50,13 @@
         <executions>
           <execution>
             <id>package</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/compile.txt</compileArtifacts>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4052/imported-pom/pom.xml b/core-it-suite/src/test/resources/mng-4052/imported-pom/pom.xml
index 35d9a9c..6c72db0 100644
--- a/core-it-suite/src/test/resources/mng-4052/imported-pom/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4052/imported-pom/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4052 :: Imported POM</name>
-  <description>
-    Test that the project builder properly detects and handles inter-model dependencies within a reactor
+  <description>Test that the project builder properly detects and handles inter-model dependencies within a reactor
     like a POM that imports another POM. To clarify, this is not about the kind of dependency where one
     project needs another project's output for compilation/testing but about the case where one project's
-    effective model requires another project's model for its construction.
-  </description>
+    effective model requires another project's model for its construction.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4052/importing-pom/pom.xml b/core-it-suite/src/test/resources/mng-4052/importing-pom/pom.xml
index 5266b43..fc68fff 100644
--- a/core-it-suite/src/test/resources/mng-4052/importing-pom/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4052/importing-pom/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4052 :: Importing POM</name>
-  <description>
-    Test that the project builder properly detects and handles inter-model dependencies within a reactor
+  <description>Test that the project builder properly detects and handles inter-model dependencies within a reactor
     like a POM that imports another POM. To clarify, this is not about the kind of dependency where one
     project needs another project's output for compilation/testing but about the case where one project's
-    effective model requires another project's model for its construction.
-  </description>
+    effective model requires another project's model for its construction.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4052/pom.xml b/core-it-suite/src/test/resources/mng-4052/pom.xml
index 001709a..c4d50c0 100644
--- a/core-it-suite/src/test/resources/mng-4052/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4052/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4052</name>
-  <description>
-    Test that the project builder properly detects and handles inter-model dependencies within a reactor
+  <description>Test that the project builder properly detects and handles inter-model dependencies within a reactor
     like a POM that imports another POM. To clarify, this is not about the kind of dependency where one
     project needs another project's output for compilation/testing but about the case where one project's
-    effective model requires another project's model for its construction.
-  </description>
+    effective model requires another project's model for its construction.</description>
 
   <modules>
     <!--
diff --git a/core-it-suite/src/test/resources/mng-4053/test-1/pom.xml b/core-it-suite/src/test/resources/mng-4053/test-1/pom.xml
index 373a66d..b2f20cc 100644
--- a/core-it-suite/src/test/resources/mng-4053/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4053/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4053</name>
-  <description>
-    Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
-    no plugin management is used.
-  </description>
+  <description>Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
+    no plugin management is used.</description>
 
   <build>
     <!-- NOTE: This test does not use plugin management for the IT plugin -->
@@ -41,15 +37,15 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
               <domParam>
-                <copy todir="src" overwrite="true">
-                  <fileset dir="target"/>
+                <copy overwrite="true" todir="src">
+                  <fileset dir="target" />
                 </copy>
               </domParam>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4053/test-2/pom.xml b/core-it-suite/src/test/resources/mng-4053/test-2/pom.xml
index a16f60d..8679f4f 100644
--- a/core-it-suite/src/test/resources/mng-4053/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4053/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4053</name>
-  <description>
-    Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
-    plugin management is used.
-  </description>
+  <description>Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
+    plugin management is used.</description>
 
   <build>
     <!-- NOTE: This test used plugin management for the IT plugin -->
@@ -50,15 +46,15 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config.properties</propertiesFile>
               <domParam>
-                <copy todir="src" overwrite="true">
-                  <fileset dir="target"/>
+                <copy overwrite="true" todir="src">
+                  <fileset dir="target" />
                 </copy>
               </domParam>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4053/test-3/pom.xml b/core-it-suite/src/test/resources/mng-4053/test-3/pom.xml
index 0d957aa..22d4536 100644
--- a/core-it-suite/src/test/resources/mng-4053/test-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4053/test-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4053</name>
-  <description>
-    Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
-    plugin management and a profile are used.
-  </description>
+  <description>Verify that attributes in plugin configuration elements are not erroneously duplicated to other elements when
+    plugin management and a profile are used.</description>
 
   <build>
     <!-- NOTE: This test used plugin management for the IT plugin -->
@@ -60,15 +56,15 @@
             <version>2.1-SNAPSHOT</version>
             <executions>
               <execution>
-                <phase>validate</phase>
                 <goals>
                   <goal>config</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <propertiesFile>target/config.properties</propertiesFile>
                   <domParam>
-                    <copy todir="src" overwrite="true">
-                      <fileset dir="target"/>
+                    <copy overwrite="true" todir="src">
+                      <fileset dir="target" />
                     </copy>
                   </domParam>
                 </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4056/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4056/consumer/pom.xml
index 974efbc..65a9a97 100644
--- a/core-it-suite/src/test/resources/mng-4056/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4056/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,10 +30,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4056 :: Dependency Consumer</name>
-  <description>
-    Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
-    in the consumer module does not use the proper artifact type but merely specifies the classifier.
-  </description>
+  <description>Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
+    in the consumer module does not use the proper artifact type but merely specifies the classifier.</description>
 
   <dependencies>
     <!--
@@ -46,29 +42,29 @@
       <groupId>org.apache.maven.its.mng4056</groupId>
       <artifactId>producer</artifactId>
       <version>0.1</version>
-      <type>jar</type>
       <classifier>tests</classifier>
+      <type>jar</type>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng4056</groupId>
       <artifactId>producer</artifactId>
       <version>0.1</version>
-      <type>jar</type>
       <classifier>sources</classifier>
+      <type>jar</type>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng4056</groupId>
       <artifactId>producer</artifactId>
       <version>0.1</version>
-      <type>jar</type>
       <classifier>javadoc</classifier>
+      <type>jar</type>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng4056</groupId>
       <artifactId>producer</artifactId>
       <version>0.1</version>
-      <type>jar</type>
       <classifier>client</classifier>
+      <type>jar</type>
     </dependency>
   </dependencies>
 
@@ -81,10 +77,10 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
               <compileClassPath>target/compile.txt</compileClassPath>
diff --git a/core-it-suite/src/test/resources/mng-4056/pom.xml b/core-it-suite/src/test/resources/mng-4056/pom.xml
index e9d819c..6475085 100644
--- a/core-it-suite/src/test/resources/mng-4056/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4056/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4056</name>
-  <description>
-    Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
-    in the consumer module does not use the proper artifact type but merely specifies the classifier.
-  </description>
+  <description>Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
+    in the consumer module does not use the proper artifact type but merely specifies the classifier.</description>
 
   <modules>
     <module>producer</module>
diff --git a/core-it-suite/src/test/resources/mng-4056/producer/pom.xml b/core-it-suite/src/test/resources/mng-4056/producer/pom.xml
index c1050da..6a1cc64 100644
--- a/core-it-suite/src/test/resources/mng-4056/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4056/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,10 +30,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4056 :: Dependency Producer</name>
-  <description>
-    Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
-    in the consumer module does not use the proper artifact type but merely specifies the classifier.
-  </description>
+  <description>Test that attached artifacts can be resolved from the reactor cache even if the dependency declaration
+    in the consumer module does not use the proper artifact type but merely specifies the classifier.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
@@ -57,10 +53,10 @@
           <!-- NOTE: It is essential part of this test to attach the artifacts using the dedicated artifact type -->
           <execution>
             <id>package-tests</id>
-            <phase>validate</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- mimic maven-jar-plugin:2.2:test-jar -->
               <attachedFile>test.jar</attachedFile>
@@ -70,10 +66,10 @@
           </execution>
           <execution>
             <id>package-sources</id>
-            <phase>validate</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- mimic maven-source-plugin:2.0.4:jar -->
               <attachedFile>source.jar</attachedFile>
@@ -83,10 +79,10 @@
           </execution>
           <execution>
             <id>package-javadocs</id>
-            <phase>validate</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- mimic maven-javadoc-plugin:2.5:jar -->
               <attachedFile>javadoc.jar</attachedFile>
@@ -96,10 +92,10 @@
           </execution>
           <execution>
             <id>package-client</id>
-            <phase>validate</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- mimic maven-ejb-plugin:2.1:ejb -->
               <attachedFile>client.jar</attachedFile>
diff --git a/core-it-suite/src/test/resources/mng-4068/pom.xml b/core-it-suite/src/test/resources/mng-4068/pom.xml
index 6b49621..212284a 100644
--- a/core-it-suite/src/test/resources/mng-4068/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4068/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4068</name>
-  <description>
-    Test that downloading of release/snapshot artifacts from an authenticated mirror works. This basically
-    boils down to using the proper id for the mirrored repository when looking up the credentials.
-  </description>
+  <description>Test that downloading of release/snapshot artifacts from an authenticated mirror works. This basically
+    boils down to using the proper id for the mirrored repository when looking up the credentials.</description>
 
   <dependencies>
     <dependency>
@@ -60,10 +56,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4070/pom.xml b/core-it-suite/src/test/resources/mng-4070/pom.xml
index 433dd52..241eaa9 100644
--- a/core-it-suite/src/test/resources/mng-4070/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4070/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,26 +17,15 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <!-- NOTE: The ugly formatting is essential part of this test! -->
-  <groupId>
-    org.apache.maven.its.mng4070
-  </groupId>
-  <artifactId>
-    parent
-  </artifactId>
-  <version>
-    1.0
-  </version>
-  <packaging>
-    pom
-  </packaging>
+  <groupId>org.apache.maven.its.mng4070</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4070</name>
-  <description>
-    Test that whitespace around artifact coordinates does not change artifact identity.
-  </description>
+  <description>Test that whitespace around artifact coordinates does not change artifact identity.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4070/sub/pom.xml b/core-it-suite/src/test/resources/mng-4070/sub/pom.xml
index 1a5cc83..5f2d9ff 100644
--- a/core-it-suite/src/test/resources/mng-4070/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4070/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,15 +17,14 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <!-- NOTE: The ugly formatting is essential part of this test! -->
   <parent>
-    <groupId>   org.apache.maven.its.mng4070   </groupId>
-    <artifactId>  parent  </artifactId>
-    <version>  1.0  </version>
+    <groupId>org.apache.maven.its.mng4070</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
   </parent>
 
   <artifactId>subproject</artifactId>
@@ -34,16 +32,14 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4070 :: Child</name>
-  <description>
-    Test that whitespace around artifact coordinates does not change artifact identity.
-  </description>
+  <description>Test that whitespace around artifact coordinates does not change artifact identity.</description>
 
   <dependencies>
     <dependency>
       <!-- NOTE: The ugly formatting is essential part of this test! -->
-      <groupId>   org.apache.maven.its.mng4070   </groupId>
-      <artifactId>  a  </artifactId>
-      <version>  0.1  </version>
+      <groupId>org.apache.maven.its.mng4070</groupId>
+      <artifactId>a</artifactId>
+      <version>0.1</version>
     </dependency>
   </dependencies>
 
@@ -59,10 +55,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4091/invalid/pom.xml b/core-it-suite/src/test/resources/mng-4091/invalid/pom.xml
index b14337a..1a07d17 100644
--- a/core-it-suite/src/test/resources/mng-4091/invalid/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4091/invalid/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -38,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4091/plugin-dependency/pom.xml b/core-it-suite/src/test/resources/mng-4091/plugin-dependency/pom.xml
index b2f555d..fc66525 100644
--- a/core-it-suite/src/test/resources/mng-4091/plugin-dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4091/plugin-dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -38,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <file>target/plugin-dependency.properties</file>
             </configuration>
@@ -51,4 +49,3 @@
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-4102/active-profile/pom.xml b/core-it-suite/src/test/resources/mng-4102/active-profile/pom.xml
index fec0b92..b463b0a 100644
--- a/core-it-suite/src/test/resources/mng-4102/active-profile/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4102/active-profile/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4102</name>
-  <description>
-    Verify that the effective value of an inherited property reflects the values of any nested property
+  <description>Verify that the effective value of an inherited property reflects the values of any nested property
     as defined by the child. This boils down to the order of inheritance and (parent) interpolation.
     This variation of the test has active profiles in parent and child (which should make no difference
-    to the result).
-  </description>
+    to the result).</description>
 
   <properties>
     <overridden>PARENT</overridden>
diff --git a/core-it-suite/src/test/resources/mng-4102/active-profile/sub/pom.xml b/core-it-suite/src/test/resources/mng-4102/active-profile/sub/pom.xml
index db8d28c..63abbc9 100644
--- a/core-it-suite/src/test/resources/mng-4102/active-profile/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4102/active-profile/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,26 +32,15 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4102 :: Child</name>
-  <description>
-    Verify that the effective value of an inherited property reflects the values of any nested property
+  <description>Verify that the effective value of an inherited property reflects the values of any nested property
     as defined by the child. This boils down to the order of inheritance and (parent) interpolation.
     This variation of the test has active profiles in parent and child (which should make no difference
-    to the result).
-  </description>
+    to the result).</description>
 
   <properties>
     <overridden>CHILD</overridden>
   </properties>
 
-  <profiles>
-    <profile>
-      <id>it-child</id>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-      </activation>
-    </profile>
-  </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -62,10 +49,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
@@ -77,4 +64,13 @@
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <id>it-child</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+    </profile>
+  </profiles>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4102/no-profile/pom.xml b/core-it-suite/src/test/resources/mng-4102/no-profile/pom.xml
index 3e11a6d..ff52037 100644
--- a/core-it-suite/src/test/resources/mng-4102/no-profile/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4102/no-profile/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4102</name>
-  <description>
-    Verify that the effective value of an inherited property reflects the values of any nested property
-    as defined by the child. This boils down to the order of inheritance and (parent) interpolation.
-  </description>
+  <description>Verify that the effective value of an inherited property reflects the values of any nested property
+    as defined by the child. This boils down to the order of inheritance and (parent) interpolation.</description>
 
   <properties>
     <overridden>PARENT</overridden>
diff --git a/core-it-suite/src/test/resources/mng-4102/no-profile/sub/pom.xml b/core-it-suite/src/test/resources/mng-4102/no-profile/sub/pom.xml
index ec58b65..375f607 100644
--- a/core-it-suite/src/test/resources/mng-4102/no-profile/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4102/no-profile/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4102 :: Child</name>
-  <description>
-    Verify that the effective value of an inherited property reflects the values of any nested property
-    as defined by the child. This boils down to the order of inheritance and (parent) interpolation.
-  </description>
+  <description>Verify that the effective value of an inherited property reflects the values of any nested property
+    as defined by the child. This boils down to the order of inheritance and (parent) interpolation.</description>
 
   <properties>
     <overridden>CHILD</overridden>
@@ -51,10 +47,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-4106/pom.xml b/core-it-suite/src/test/resources/mng-4106/pom.xml
index b48bfe6..1ce1f97 100644
--- a/core-it-suite/src/test/resources/mng-4106/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4106/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4106</name>
-  <description>
-    Test that interpolation uses the property values from the dominant (i.e. last) profile among a group
+  <description>Test that interpolation uses the property values from the dominant (i.e. last) profile among a group
     of active profiles that define the same properties. This boils down to the proper order of profile
-    injection and interpolation, i.e. interpolate after all profiles are injected.
-  </description>
+    injection and interpolation, i.e. interpolate after all profiles are injected.</description>
 
   <properties>
     <!-- collect the effective property values as derived by interpolation -->
@@ -41,6 +37,30 @@
     <settings>${settingsProperty}</settings>
   </properties>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <outputFile>target/pom.properties</outputFile>
+              <expressions>
+                <expression>project/properties</expression>
+              </expressions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
   <profiles>
     <profile>
       <id>pom-a</id>
@@ -61,28 +81,4 @@
       </properties>
     </profile>
   </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-expression</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-            <configuration>
-              <outputFile>target/pom.properties</outputFile>
-              <expressions>
-                <expression>project/properties</expression>
-              </expressions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4107/pom.xml b/core-it-suite/src/test/resources/mng-4107/pom.xml
index 9ef6b6c..8629b1f 100644
--- a/core-it-suite/src/test/resources/mng-4107/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4107/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4107</name>
-  <description>
-    Test that POM interpolation uses the property values from the dominant profile source (POM vs. profiles.xml
+  <description>Test that POM interpolation uses the property values from the dominant profile source (POM vs. profiles.xml
     vs. settings.xml). This boils down to the proper order of profile injection and interpolation, i.e.
-    interpolate after profiles from all sources are injected.
-  </description>
+    interpolate after profiles from all sources are injected.</description>
 
   <properties>
     <!-- collect the effective property values as derived by interpolation -->
@@ -41,6 +37,30 @@
     <profilesVsSettingsInterpolated>${profilesVsSettings}</profilesVsSettingsInterpolated>
   </properties>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <outputFile>target/pom.properties</outputFile>
+              <expressions>
+                <expression>project/properties</expression>
+              </expressions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
   <profiles>
     <profile>
       <id>pom</id>
@@ -54,28 +74,4 @@
       </properties>
     </profile>
   </profiles>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-expression</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-            <configuration>
-              <outputFile>target/pom.properties</outputFile>
-              <expressions>
-                <expression>project/properties</expression>
-              </expressions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4112/pom.xml b/core-it-suite/src/test/resources/mng-4112/pom.xml
index c2f794d..ac4b644 100644
--- a/core-it-suite/src/test/resources/mng-4112/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4112/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mgn4112</groupId>
   <artifactId>test</artifactId>
-  <packaging>pom</packaging>
   <version>1.0</version>
+  <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4112</name>
-  <description>
-    Test for ${maven.version} and ${maven.build.version} property
-  </description>
+  <description>Test for ${maven.version} and ${maven.build.version} property</description>
 
   <properties>
     <simpleVersion>${maven.version}</simpleVersion>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4116/pom.xml b/core-it-suite/src/test/resources/mng-4116/pom.xml
index 03ac3a1..361848c 100644
--- a/core-it-suite/src/test/resources/mng-4116/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4116/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4116</name>
-  <description>
-    Test that the project builder does not decode URLs (which must be done by the transport layer instead).
-  </description>
+  <description>Test that the project builder does not decode URLs (which must be done by the transport layer instead).</description>
 
   <!-- some URLs using percent-encoded characters -->
   <url>http://maven.apache.org/spacy%20path</url>
@@ -70,10 +66,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-4129/child-1/pom.xml b/core-it-suite/src/test/resources/mng-4129/child-1/pom.xml
index f60cfd5..6906e6d 100644
--- a/core-it-suite/src/test/resources/mng-4129/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4129/child-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>child-1</artifactId>
 
   <name>Maven Integration Test :: MNG-4129 :: Child-1</name>
-  <description>
-    Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.
-  </description>
+  <description>Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4129/child-2/pom.xml b/core-it-suite/src/test/resources/mng-4129/child-2/pom.xml
index 23cfc0c..a3b10a4 100644
--- a/core-it-suite/src/test/resources/mng-4129/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4129/child-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>child-2</artifactId>
 
   <name>Maven Integration Test :: MNG-4129 :: Child-2</name>
-  <description>
-    Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.
-  </description>
+  <description>Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4129/pom.xml b/core-it-suite/src/test/resources/mng-4129/pom.xml
index 2b534d7..0bec43a 100644
--- a/core-it-suite/src/test/resources/mng-4129/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4129/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4129</name>
-  <description>
-    Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.
-  </description>
+  <description>Verify that plugin executions defined in the parent with inherited=false are not executed in child modules.</description>
 
   <modules>
     <module>child-1</module>
@@ -46,11 +42,11 @@
         <executions>
           <execution>
             <id>inherited-execution</id>
-            <inherited>true</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
+            <inherited>true</inherited>
             <configuration>
               <logFile>target/executions.txt</logFile>
               <string>inherited-execution</string>
@@ -58,11 +54,11 @@
           </execution>
           <execution>
             <id>non-inherited-execution</id>
-            <inherited>false</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
+            <inherited>false</inherited>
             <configuration>
               <logFile>target/executions.txt</logFile>
               <string>non-inherited-execution</string>
diff --git a/core-it-suite/src/test/resources/mng-4150/pom.xml b/core-it-suite/src/test/resources/mng-4150/pom.xml
index a5a6afb..354832c 100644
--- a/core-it-suite/src/test/resources/mng-4150/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4150/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4150</name>
-  <description>
-    Test version range support.
-  </description>
+  <description>Test version range support.</description>
 
   <dependencies>
     <dependency>
@@ -69,10 +65,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4162/pom.xml b/core-it-suite/src/test/resources/mng-4162/pom.xml
index c3383ac..0925f2c 100644
--- a/core-it-suite/src/test/resources/mng-4162/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4162/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4162</name>
-  <description>
-    Verify that the legacy reporting section is automatically converted into ordinary plugin configuration of the
-    Maven Site Plugin to ease migration.
-  </description>
+  <description>Verify that the legacy reporting section is automatically converted into ordinary plugin configuration of the
+    Maven Site Plugin to ease migration.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>site</id>
-            <phase>site</phase>
             <goals>
               <goal>site</goal>
             </goals>
+            <phase>site</phase>
           </execution>
         </executions>
       </plugin>
@@ -62,10 +58,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -91,12 +87,12 @@
           </reportSet>
           <reportSet>
             <id>set-b</id>
-            <configuration>
-              <skipTests>false</skipTests>
-            </configuration>
             <reports>
               <report>report-only</report>
             </reports>
+            <configuration>
+              <skipTests>false</skipTests>
+            </configuration>
           </reportSet>
         </reportSets>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4166/pom.xml b/core-it-suite/src/test/resources/mng-4166/pom.xml
index 7f4b6be..145f1a1 100644
--- a/core-it-suite/src/test/resources/mng-4166/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4166/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4166</name>
-  <description>
-    Verify that plugins can use their own version of commons-cli and are not bound to the version bundled in the core.
-  </description>
+  <description>Verify that plugins can use their own version of commons-cli and are not bound to the version bundled in the core.</description>
 
   <build>
     <plugins>
@@ -47,14 +43,14 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>org.apache.maven.its.mng4166.CoreIt</classNames>
               <pluginClassLoaderOutput>target/class.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4172/pom.xml b/core-it-suite/src/test/resources/mng-4172/pom.xml
index f4f8c50..845b2b8 100644
--- a/core-it-suite/src/test/resources/mng-4172/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4172/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4172</name>
-  <description>
-    Test that a project without dependencies is really constructed without dependency artifacts.
-  </description>
+  <description>Test that a project without dependencies is really constructed without dependency artifacts.</description>
 
   <dependencies>
     <!-- NOTE: It's the essential part of this test to declare absolutely no dependencies -->
@@ -44,13 +40,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4180/pom.xml b/core-it-suite/src/test/resources/mng-4180/pom.xml
index 3bdffe5..244606a 100644
--- a/core-it-suite/src/test/resources/mng-4180/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4180/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4172</name>
-  <description>
-    Test that exclusions defined on a dependency only affect the transitive dependencies of this dependency and not
-    other dependencies of the project.
-  </description>
+  <description>Test that exclusions defined on a dependency only affect the transitive dependencies of this dependency and not
+    other dependencies of the project.</description>
 
   <dependencies>
     <dependency>
@@ -64,13 +60,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4189/pom.xml b/core-it-suite/src/test/resources/mng-4189/pom.xml
index 80d07f4..e2cc738 100644
--- a/core-it-suite/src/test/resources/mng-4189/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4189/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,15 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4189</groupId>
   <artifactId>consumer</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
 
   <name>consumer of 1.0-20090608.090416-1</name>
 
@@ -46,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPathChecksums>target/checksum.properties</compileClassPathChecksums>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-4189/src/main/java/org/apache/maven/its/mng4189/App.java b/core-it-suite/src/test/resources/mng-4189/src/main/java/org/apache/maven/its/mng4189/App.java
index edf9506..dc00599 100644
--- a/core-it-suite/src/test/resources/mng-4189/src/main/java/org/apache/maven/its/mng4189/App.java
+++ b/core-it-suite/src/test/resources/mng-4189/src/main/java/org/apache/maven/its/mng4189/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng4189;
 
 /*
@@ -24,13 +42,11 @@
 /**
  * Sample project
  */
-public class App
-{
-    public void testDependency()
-    {
+public class App {
+    public void testDependency() {
         Calculator calculator = new Calculator();
-        int total = calculator.add( 1, 2 );
+        int total = calculator.add(1, 2);
 
-        System.out.println( "Total : " + total );
+        System.out.println("Total : " + total);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-4190/pom.xml b/core-it-suite/src/test/resources/mng-4190/pom.xml
index 78e3963..ea3ab1b 100644
--- a/core-it-suite/src/test/resources/mng-4190/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4190/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,51 +25,9 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4190</name>
-  <description>
-    Test that artifact repositories are merged if they are mirrored by the same repo. If n repos map to one
+  <description>Test that artifact repositories are merged if they are mirrored by the same repo. If n repos map to one
     mirror, there is no point in making n trips to the same mirror. However, the effective/merged repo needs
-    to account for possibly different policies of the original repos.
-  </description>
-
-  <repositories>
-    <repository>
-      <id>repo-4</id>
-      <url>file:///mng-4190/4</url>
-      <releases>
-        <enabled>true</enabled>
-        <checksumPolicy>fail</checksumPolicy>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-        <checksumPolicy>fail</checksumPolicy>
-      </snapshots>
-    </repository>
-    <repository>
-      <id>repo-5</id>
-      <url>file:///mng-4190/5</url>
-      <releases>
-        <enabled>true</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-      </snapshots>
-    </repository>
-    <repository>
-      <id>repo-6</id>
-      <url>file:///mng-4190/6</url>
-      <releases>
-        <enabled>false</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-        <updatePolicy>always</updatePolicy>
-      </snapshots>
-    </repository>
-  </repositories>
+    to account for possibly different policies of the original repos.</description>
 
   <dependencies>
     <dependency>
@@ -86,6 +42,46 @@
     </dependency>
   </dependencies>
 
+  <repositories>
+    <repository>
+      <releases>
+        <enabled>true</enabled>
+        <checksumPolicy>fail</checksumPolicy>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+        <checksumPolicy>fail</checksumPolicy>
+      </snapshots>
+      <id>repo-4</id>
+      <url>file:///mng-4190/4</url>
+    </repository>
+    <repository>
+      <releases>
+        <enabled>true</enabled>
+        <checksumPolicy>ignore</checksumPolicy>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+        <checksumPolicy>ignore</checksumPolicy>
+      </snapshots>
+      <id>repo-5</id>
+      <url>file:///mng-4190/5</url>
+    </repository>
+    <repository>
+      <releases>
+        <enabled>false</enabled>
+        <checksumPolicy>ignore</checksumPolicy>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+        <updatePolicy>always</updatePolicy>
+        <checksumPolicy>ignore</checksumPolicy>
+      </snapshots>
+      <id>repo-6</id>
+      <url>file:///mng-4190/6</url>
+    </repository>
+  </repositories>
+
   <build>
     <plugins>
       <plugin>
@@ -95,13 +91,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
@@ -112,6 +108,9 @@
         <executions>
           <execution>
             <id>dump</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <outputFile>target/repo.properties</outputFile>
@@ -119,9 +118,6 @@
                 <expression>project/remoteArtifactRepositories</expression>
               </expressions>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4193/pom.xml b/core-it-suite/src/test/resources/mng-4193/pom.xml
index 25d5e1e..59ab1b7 100644
--- a/core-it-suite/src/test/resources/mng-4193/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4193/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4193</name>
-  <description>
-    Test that duplicate repository ids cause a validation error during building.
-  </description>
+  <description>Test that duplicate repository ids cause a validation error during building.</description>
 
   <repositories>
     <!-- The duplicate repository id should cause a validation error during a build -->
diff --git a/core-it-suite/src/test/resources/mng-4196/pom.xml b/core-it-suite/src/test/resources/mng-4196/pom.xml
index 8e56727..9ce3bd8 100644
--- a/core-it-suite/src/test/resources/mng-4196/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4196/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4196</name>
-  <description>
-    Verify that exclusions on a project-level plugin dependency are effective.
-  </description>
+  <description>Verify that exclusions on a project-level plugin dependency are effective.</description>
 
   <build>
     <plugins>
@@ -37,21 +33,6 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>load</id>
-            <phase>validate</phase>
-            <configuration>
-              <classNames>org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
-              <resourcePaths>org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
-              <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
-              <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
-            </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <dependency>
             <groupId>org.apache.maven.its.plugins.class-loader</groupId>
@@ -65,6 +46,21 @@
             </exclusions>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <classNames>org.apache.maven.plugin.coreit.ClassA,org.apache.maven.plugin.coreit.ClassB</classNames>
+              <resourcePaths>org/apache/maven/plugin/coreit/a.properties,org/apache/maven/plugin/coreit/b.properties</resourcePaths>
+              <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+              <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4203/pom.xml b/core-it-suite/src/test/resources/mng-4203/pom.xml
index 13f987c..e4ea376 100644
--- a/core-it-suite/src/test/resources/mng-4203/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4203/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4203</name>
-  <description>
-    Test that exclusions defined on a dependency apply to its transitive dependencies as well.
-  </description>
+  <description>Test that exclusions defined on a dependency apply to its transitive dependencies as well.</description>
 
   <dependencies>
     <dependency>
@@ -57,13 +53,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4207/pom.xml b/core-it-suite/src/test/resources/mng-4207/pom.xml
index 1f69a5e..554b428 100644
--- a/core-it-suite/src/test/resources/mng-4207/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4207/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,31 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4207</name>
-  <description>
-    Test that a plugin that depends on log4j and employs the artifact resolver does not die when using
-    commons-http to resolve an artifact.
-  </description>
+  <description>Test that a plugin that depends on log4j and employs the artifact resolver does not die when using
+    commons-http to resolve an artifact.</description>
 
   <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log4j</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <groupId>org.apache.maven.its.mng4207</groupId>
+          <artifactId>it</artifactId>
+          <version>1.0</version>
+        </configuration>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>it</goal>
+            </goals>
+            <phase>initialize</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
     <extensions>
       <extension>
         <groupId>org.apache.maven.wagon</groupId>
@@ -49,26 +66,5 @@
       </extension>
       -->
     </extensions>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-log4j</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <configuration>
-          <groupId>org.apache.maven.its.mng4207</groupId>
-          <artifactId>it</artifactId>
-          <version>1.0</version>
-        </configuration>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>initialize</phase>
-            <goals>
-              <goal>it</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4208/pom.xml b/core-it-suite/src/test/resources/mng-4208/pom.xml
index eea351a..f37ae86 100644
--- a/core-it-suite/src/test/resources/mng-4208/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4208/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4208</name>
-  <description>
-    Test that CLI properties specified by the user override project properties during interpolation.
-  </description>
+  <description>Test that CLI properties specified by the user override project properties during interpolation.</description>
 
   <properties>
     <testProperty>FAILED</testProperty>
@@ -46,6 +42,9 @@
         <executions>
           <execution>
             <id>dump</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
@@ -53,9 +52,6 @@
                 <expression>project/properties</expression>
               </expressions>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4214/pom.xml b/core-it-suite/src/test/resources/mng-4214/pom.xml
index c7a2320..094fbb2 100644
--- a/core-it-suite/src/test/resources/mng-4214/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4214/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-4214</name>
-  <description>
-    Test parent POMs can be resolved from repos with different enabled policies that are matched by a single mirror.
+  <description>Test parent POMs can be resolved from repos with different enabled policies that are matched by a single mirror.
     In other words, check that the one mirror is properly configured with a merged view of the potentially different
-    policies from the original repos.
-  </description>
+    policies from the original repos.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4231/pom.xml b/core-it-suite/src/test/resources/mng-4231/pom.xml
index 0f97d39..23287aa 100644
--- a/core-it-suite/src/test/resources/mng-4231/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4231/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4231</name>
-  <description>
-    Test the update policy for snapshot dependencies is respected.
-  </description>
+  <description>Test the update policy for snapshot dependencies is respected.</description>
 
   <dependencies>
     <dependency>
@@ -47,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPathChecksums>target/checksum.properties</compileClassPathChecksums>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-4233/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4233/consumer/pom.xml
index 6788b18..fe2348f 100644
--- a/core-it-suite/src/test/resources/mng-4233/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4233/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -38,10 +36,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/artifact.properties</propertiesFile>
               <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4233/pom.xml b/core-it-suite/src/test/resources/mng-4233/pom.xml
index a3104ca..b79db44 100644
--- a/core-it-suite/src/test/resources/mng-4233/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4233/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4233</name>
-  <description>
-    Verify that artifact instances created directly by plugins (i.e. via the artifact factory) can be resolved
+  <description>Verify that artifact instances created directly by plugins (i.e. via the artifact factory) can be resolved
     from the reactor. This case is a subtle variation of MNG-2877, namely not using @requiresDependencyResolution
     or artifact instances created by the Maven core. In short, reactor resolution should work for any artifact,
-    regardless whether created by the core or a plugin.
-  </description>
+    regardless whether created by the core or a plugin.</description>
 
   <modules>
     <module>producer</module>
diff --git a/core-it-suite/src/test/resources/mng-4233/producer/pom.xml b/core-it-suite/src/test/resources/mng-4233/producer/pom.xml
index 8d81f98..87ec74b 100644
--- a/core-it-suite/src/test/resources/mng-4233/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4233/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -38,13 +36,13 @@
         <executions>
           <execution>
             <id>package-main</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4238/pom.xml b/core-it-suite/src/test/resources/mng-4238/pom.xml
index eae7722..7c3613a 100644
--- a/core-it-suite/src/test/resources/mng-4238/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4238/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng4238</groupId>
   <artifactId>mng-4238</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-4238/src/main/java/org/apache/maven/it/mng4238/App.java b/core-it-suite/src/test/resources/mng-4238/src/main/java/org/apache/maven/it/mng4238/App.java
index 5490073..d70de81 100644
--- a/core-it-suite/src/test/resources/mng-4238/src/main/java/org/apache/maven/it/mng4238/App.java
+++ b/core-it-suite/src/test/resources/mng-4238/src/main/java/org/apache/maven/it/mng4238/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it.mng4238;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-4262/parent/pom.xml b/core-it-suite/src/test/resources/mng-4262/parent/pom.xml
index 02a2d41..ba912c0 100644
--- a/core-it-suite/src/test/resources/mng-4262/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4262/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4262</name>
-  <description>
-    Test that the make-like reactor mode properly finds projects selected by relative paths with leading
-    dots like "." for the parent itself and "../sub-a" for a child in a sibling directory.
-  </description>
+  <description>Test that the make-like reactor mode properly finds projects selected by relative paths with leading
+    dots like "." for the parent itself and "../sub-a" for a child in a sibling directory.</description>
 
   <modules>
     <module>../sub-a</module>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4262/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-4262/sub-a/pom.xml
index d24359a..6b0ca68 100644
--- a/core-it-suite/src/test/resources/mng-4262/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4262/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-4269/pom.xml b/core-it-suite/src/test/resources/mng-4269/pom.xml
index fa5f3d9..8b4ec42 100644
--- a/core-it-suite/src/test/resources/mng-4269/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4269/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -32,11 +30,9 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-4269</name>
-  <description>
-    Test that dependency resolution from the reactor is not too eager and does not resolve plugin artifacts from
+  <description>Test that dependency resolution from the reactor is not too eager and does not resolve plugin artifacts from
     the build directory of their plugin project when the plugin project hasn't been built yet. The technical
     problem is that the mere existence of a project output directory like target/classes is no sufficient indicator
     that we can use that for artifact resolution. The project's output directory might just be a left over from a
-    previous build and could be in any state, e.g. incomplete.
-  </description>
+    previous build and could be in any state, e.g. incomplete.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4270/pom.xml b/core-it-suite/src/test/resources/mng-4270/pom.xml
index 0a7fcca..664da6c 100644
--- a/core-it-suite/src/test/resources/mng-4270/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4270/pom.xml
@@ -17,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4270</groupId>
@@ -43,6 +41,9 @@
         <artifactId>maven-it-plugin-extension1</artifactId>
         <version>2.1-SNAPSHOT</version>
 
+        <!-- SHOULD load the coreit-1 and coreit lifecycles/artifact-handlers -->
+        <extensions>true</extensions>
+
         <dependencies>
           <dependency>
             <groupId>org.apache.maven.its</groupId>
@@ -50,9 +51,6 @@
             <version>2.1-SNAPSHOT</version>
           </dependency>
         </dependencies>
-
-        <!-- SHOULD load the coreit-1 and coreit lifecycles/artifact-handlers -->
-        <extensions>true</extensions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4270/src/main/java/org/apache/maven/its/mng3506/App.java b/core-it-suite/src/test/resources/mng-4270/src/main/java/org/apache/maven/its/mng3506/App.java
index a713f69..40241be 100644
--- a/core-it-suite/src/test/resources/mng-4270/src/main/java/org/apache/maven/its/mng3506/App.java
+++ b/core-it-suite/src/test/resources/mng-4270/src/main/java/org/apache/maven/its/mng3506/App.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -22,10 +22,8 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-4270/src/test/java/org/apache/maven/its/mng3506/AppTest.java b/core-it-suite/src/test/resources/mng-4270/src/test/java/org/apache/maven/its/mng3506/AppTest.java
index 1c1abf1..901f8d2 100644
--- a/core-it-suite/src/test/resources/mng-4270/src/test/java/org/apache/maven/its/mng3506/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-4270/src/test/java/org/apache/maven/its/mng3506/AppTest.java
@@ -1,20 +1,20 @@
 /*
-  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.
+ * 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.
  */
 package org.apache.maven.its.mng3506;
 
@@ -25,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-4273/pom.xml b/core-it-suite/src/test/resources/mng-4273/pom.xml
index 4851c6d..5d62eb0 100644
--- a/core-it-suite/src/test/resources/mng-4273/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4273/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-4273</name>
-  <description>
-    Verify that internal utility/implementation classes used by the Maven core do not leak into the plugin realm.
+  <description>Verify that internal utility/implementation classes used by the Maven core do not leak into the plugin realm.
     Otherwise, we risk linkage errors when a plugin creates a custom class loader with parent-first delegation on
     top of the plugin realm because the custom class loader will prefer potentially incompatible classes from the
-    core realm over classes from itself.
-  </description>
+    core realm over classes from itself.</description>
 
   <build>
     <plugins>
@@ -57,10 +53,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>load-dependencies</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4274/pom.xml b/core-it-suite/src/test/resources/mng-4274/pom.xml
index d09bc53..28de2a9 100644
--- a/core-it-suite/src/test/resources/mng-4274/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4274/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4274</name>
-  <description>
-    Verify that plugins with an undeclared dependency on plexus-utils that is brought in as a transitive dependency
+  <description>Verify that plugins with an undeclared dependency on plexus-utils that is brought in as a transitive dependency
     of some Maven core artifact get the proper version of plexus-utils. For clarity, the proper version is the
-    version that the original core artifact specified as dependency, not the version shipped with the current core.
-  </description>
+    version that the original core artifact specified as dependency, not the version shipped with the current core.</description>
 
   <build>
     <plugins>
@@ -40,6 +36,11 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <pluginClassLoaderOutput>target/class.properties</pluginClassLoaderOutput>
+          <!-- This class is provided by our plexus-utils stub -->
+          <classNames>org.apache.maven.its.mng4274.CoreIt</classNames>
+        </configuration>
         <dependencies>
           <dependency>
             <!-- NOTE: This has a dependency on our plexus-utils stub version 1.1.4274 -->
@@ -48,18 +49,13 @@
             <version>2.0.4274</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <pluginClassLoaderOutput>target/class.properties</pluginClassLoaderOutput>
-          <!-- This class is provided by our plexus-utils stub -->
-          <classNames>org.apache.maven.its.mng4274.CoreIt</classNames>
-        </configuration>
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>load</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4275/pom.xml b/core-it-suite/src/test/resources/mng-4275/pom.xml
index bceea42..68b5d6c 100644
--- a/core-it-suite/src/test/resources/mng-4275/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4275/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4275</groupId>
   <artifactId>project</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4275</name>
-  <description>
-    Verify that relocations are logged (at warning level).
-  </description>
+  <description>Verify that relocations are logged (at warning level).</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4276/pom.xml b/core-it-suite/src/test/resources/mng-4276/pom.xml
index 38420d0..158855d 100644
--- a/core-it-suite/src/test/resources/mng-4276/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4276/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4276</name>
-  <description>
-    Verify that plugins that have a *transitive* dependency on plexus-utils:x.y get that version and not a random
-    version injected by the core like 1.1.
-  </description>
+  <description>Verify that plugins that have a *transitive* dependency on plexus-utils:x.y get that version and not a random
+    version injected by the core like 1.1.</description>
 
   <build>
     <plugins>
@@ -39,6 +35,11 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <pluginClassLoaderOutput>target/class.properties</pluginClassLoaderOutput>
+          <!-- This class is provided by our plexus-utils stub -->
+          <classNames>org.apache.maven.its.mng4276.CoreIt</classNames>
+        </configuration>
         <dependencies>
           <dependency>
             <!-- NOTE: This has a dependency on our plexus-utils stub version 1.1.4276 -->
@@ -47,18 +48,13 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <pluginClassLoaderOutput>target/class.properties</pluginClassLoaderOutput>
-          <!-- This class is provided by our plexus-utils stub -->
-          <classNames>org.apache.maven.its.mng4276.CoreIt</classNames>
-        </configuration>
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>load</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4281/dependency/pom.xml b/core-it-suite/src/test/resources/mng-4281/dependency/pom.xml
index e13a298..f3a11c7 100644
--- a/core-it-suite/src/test/resources/mng-4281/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4281/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4281 :: Dependency</name>
-  <description>
-    Test that remote snapshots are not preferred over snapshots that have just been locally built.
-  </description>
+  <description>Test that remote snapshots are not preferred over snapshots that have just been locally built.</description>
 
   <distributionManagement>
     <repository>
@@ -48,12 +44,12 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>main.jar</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4281/project/pom.xml b/core-it-suite/src/test/resources/mng-4281/project/pom.xml
index 87bf448..7bf6303 100644
--- a/core-it-suite/src/test/resources/mng-4281/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4281/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4281 :: Project</name>
-  <description>
-    Test that remote snapshots are not preferred over snapshots that have just been locally built.
-  </description>
+  <description>Test that remote snapshots are not preferred over snapshots that have just been locally built.</description>
 
   <dependencies>
     <dependency>
@@ -47,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPathChecksums>target/checksum.properties</compileClassPathChecksums>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-4283/pom.xml b/core-it-suite/src/test/resources/mng-4283/pom.xml
index 1695245..2aa41a2 100644
--- a/core-it-suite/src/test/resources/mng-4283/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4283/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,7 +27,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4283</name>
-  <description>
-    Test that the model builder fails when a parent POM has not "pom" packaging.
-  </description>
+  <description>Test that the model builder fails when a parent POM has not "pom" packaging.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4283/sub/pom.xml b/core-it-suite/src/test/resources/mng-4283/sub/pom.xml
index eca47eb..2e1f00f 100644
--- a/core-it-suite/src/test/resources/mng-4283/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4283/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4283</name>
-  <description>
-    Test that the model builder fails when a parent POM has not "pom" packaging.
-  </description>
+  <description>Test that the model builder fails when a parent POM has not "pom" packaging.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4291/pom.xml b/core-it-suite/src/test/resources/mng-4291/pom.xml
index fd5b791..5948d87 100644
--- a/core-it-suite/src/test/resources/mng-4291/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4291/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4291</name>
-  <description>
-    Test that the mojo annotation @requiresOnline is recognized.
-  </description>
+  <description>Test that the mojo annotation @requiresOnline is recognized.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4292/pom.xml b/core-it-suite/src/test/resources/mng-4292/pom.xml
index e2d2b74..3762b98 100644
--- a/core-it-suite/src/test/resources/mng-4292/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4292/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4292</name>
-  <description>
-    Test that mojo parameters can be configured with enums.
-  </description>
+  <description>Test that mojo parameters can be configured with enums.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4304/pom.xml b/core-it-suite/src/test/resources/mng-4304/pom.xml
index a6dc9fb..236a82b 100644
--- a/core-it-suite/src/test/resources/mng-4304/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4304/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4304</name>
-  <description>
-    Verify that MavenProject.getDependencyArtifacts() is properly populated with the direct artifacts
-    of the project.
-  </description>
+  <description>Verify that MavenProject.getDependencyArtifacts() is properly populated with the direct artifacts
+    of the project.</description>
 
   <dependencies>
     <dependency>
@@ -50,13 +46,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <dependencyArtifacts>target/artifacts.txt</dependencyArtifacts>
             </configuration>
-            <goals>
-              <goal>test</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4305/pom.xml b/core-it-suite/src/test/resources/mng-4305/pom.xml
index 07bcc21..5104dac 100644
--- a/core-it-suite/src/test/resources/mng-4305/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4305/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4305</name>
-  <description>
-    Verify that ${localRepository.basedir} delivers a proper filesystem path.
-  </description>
+  <description>Verify that ${localRepository.basedir} delivers a proper filesystem path.</description>
 
   <build>
     <plugins>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4309/pom.xml b/core-it-suite/src/test/resources/mng-4309/pom.xml
index 3db6c5d..e9fccf8 100644
--- a/core-it-suite/src/test/resources/mng-4309/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4309/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4309</name>
-  <description>
-    Verify that strict checksum verification applies to metadata as well and in particular fails the build
-    during deployment when the previous metadata is corrupt.
-  </description>
+  <description>Verify that strict checksum verification applies to metadata as well and in particular fails the build
+    during deployment when the previous metadata is corrupt.</description>
 
   <distributionManagement>
     <repository>
@@ -52,12 +48,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4312/pom.xml b/core-it-suite/src/test/resources/mng-4312/pom.xml
index 3bc016d..af34c38 100644
--- a/core-it-suite/src/test/resources/mng-4312/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4312/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4312</name>
-  <description>
-    Verify that plugins that use magic parameter expressions like ${plugin} for ordinary system properties
+  <description>Verify that plugins that use magic parameter expressions like ${plugin} for ordinary system properties
     get properly configured and don't crash due to Maven trying to inject a type-incompatible magic value
-    into the String-type mojo parameter.
-  </description>
-
+    into the String-type mojo parameter.</description>
 
   <build>
     <plugins>
@@ -55,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4314/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4314/consumer/pom.xml
index aaaf523..ed8f912 100644
--- a/core-it-suite/src/test/resources/mng-4314/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4314/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4314 :: Consumer</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4314/dependency/pom.xml b/core-it-suite/src/test/resources/mng-4314/dependency/pom.xml
index f330890..d8e0b02 100644
--- a/core-it-suite/src/test/resources/mng-4314/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4314/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4314 :: Dependency</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.</description>
 
   <build>
     <plugins>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4314/pom.xml b/core-it-suite/src/test/resources/mng-4314/pom.xml
index 4254de7..098ed5c 100644
--- a/core-it-suite/src/test/resources/mng-4314/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4314/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4314</name>
-  <description>
-    Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.
-  </description>
+  <description>Verify that aggregator mojos invoked from the CLI run only once, namely at the top-level project.</description>
 
   <modules>
     <module>dependency</module>
diff --git a/core-it-suite/src/test/resources/mng-4317/pom.xml b/core-it-suite/src/test/resources/mng-4317/pom.xml
index e6cfac6..594dd59 100644
--- a/core-it-suite/src/test/resources/mng-4317/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4317/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4317</name>
-  <description>
-    Verify that the g:a level metadata files from different repositories are properly merged when trying to resolve
-    a version for some plugin that was invoked with g:a:goal.
-  </description>
+  <description>Verify that the g:a level metadata files from different repositories are properly merged when trying to resolve
+    a version for some plugin that was invoked with g:a:goal.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4318/pom.xml b/core-it-suite/src/test/resources/mng-4318/pom.xml
index 9ea92b8..cf0aced 100644
--- a/core-it-suite/src/test/resources/mng-4318/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4318/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4318</name>
-  <description>
-    Verify that MavenProject.isExecutionRoot() is properly set within a reactor.
-  </description>
+  <description>Verify that MavenProject.isExecutionRoot() is properly set within a reactor.</description>
 
   <modules>
     <module>sub-1</module>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4318/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-4318/sub-1/pom.xml
index 846ad93..6387ef1 100644
--- a/core-it-suite/src/test/resources/mng-4318/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4318/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4318 :: Sub-1</name>
-  <description>
-    Verify that MavenProject.isExecutionRoot() is properly set within a reactor.
-  </description>
+  <description>Verify that MavenProject.isExecutionRoot() is properly set within a reactor.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4318/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-4318/sub-2/pom.xml
index d0a6136..f9beea4 100644
--- a/core-it-suite/src/test/resources/mng-4318/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4318/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4318 :: Sub-2</name>
-  <description>
-    Verify that MavenProject.isExecutionRoot() is properly set within a reactor.
-  </description>
+  <description>Verify that MavenProject.isExecutionRoot() is properly set within a reactor.</description>
 
   <modules>
     <module>sub-3</module>
diff --git a/core-it-suite/src/test/resources/mng-4318/sub-2/sub-3/pom.xml b/core-it-suite/src/test/resources/mng-4318/sub-2/sub-3/pom.xml
index 6dab498..23dcdad 100644
--- a/core-it-suite/src/test/resources/mng-4318/sub-2/sub-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4318/sub-2/sub-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4318 :: Sub-3</name>
-  <description>
-    Verify that MavenProject.isExecutionRoot() is properly set within a reactor.
-  </description>
+  <description>Verify that MavenProject.isExecutionRoot() is properly set within a reactor.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4319/pom.xml b/core-it-suite/src/test/resources/mng-4319/pom.xml
index 30c764d..9c43dbc 100644
--- a/core-it-suite/src/test/resources/mng-4319/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4319/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4319</name>
-  <description>
-    Test that goals in plugin executions can be interpolated.
-  </description>
+  <description>Test that goals in plugin executions can be interpolated.</description>
 
   <properties>
     <theGoal>reset</theGoal>
@@ -44,11 +40,11 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <!-- Using a property here is the essential part of the test -->
               <goal>${theGoal}</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4320/pom.xml b/core-it-suite/src/test/resources/mng-4320/pom.xml
index 42575f5..dbdd729 100644
--- a/core-it-suite/src/test/resources/mng-4320/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4320/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4320</name>
-  <description>
-    Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
-    of all projects in the reactor are resolved and not only the dependencies of the top-level project.
-  </description>
+  <description>Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
+    of all projects in the reactor are resolved and not only the dependencies of the top-level project.</description>
 
   <modules>
     <module>sub-1</module>
diff --git a/core-it-suite/src/test/resources/mng-4320/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-4320/sub-1/pom.xml
index a16e447..c671e4e 100644
--- a/core-it-suite/src/test/resources/mng-4320/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4320/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4320 :: Sub-1</name>
-  <description>
-    Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
-    of all projects in the reactor are resolved and not only the dependencies of the top-level project.
-  </description>
+  <description>Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
+    of all projects in the reactor are resolved and not only the dependencies of the top-level project.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4320/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-4320/sub-2/pom.xml
index 61548c4..a4968f9 100644
--- a/core-it-suite/src/test/resources/mng-4320/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4320/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4320 :: Sub-2</name>
-  <description>
-    Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
-    of all projects in the reactor are resolved and not only the dependencies of the top-level project.
-  </description>
+  <description>Verify that for aggregator mojos invoked from the CLI that require dependency resolution the dependencies
+    of all projects in the reactor are resolved and not only the dependencies of the top-level project.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4321/pom.xml b/core-it-suite/src/test/resources/mng-4321/pom.xml
index b69646a..f53ce89 100644
--- a/core-it-suite/src/test/resources/mng-4321/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4321/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4321</name>
-  <description>
-    Test that configuration from plugin management also applies to goals that are invoked directly from the
+  <description>Test that configuration from plugin management also applies to goals that are invoked directly from the
     CLI even when the invoked plugin is neither explicitly present in the build/plugins section nor part of
-    the lifecycle mappings for the project's packaging.
-  </description>
+    the lifecycle mappings for the project's packaging.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-4326/dependency/pom.xml b/core-it-suite/src/test/resources/mng-4326/dependency/pom.xml
index adf23c5..f4a6b2a 100644
--- a/core-it-suite/src/test/resources/mng-4326/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4326/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4326</name>
-  <description>
-    Verify that locally built/installed snapshot artifacts suppress remote update checks (as long as the local copy
-    still satisfies the update policy configured for the remote repository).
-  </description>
+  <description>Verify that locally built/installed snapshot artifacts suppress remote update checks (as long as the local copy
+    still satisfies the update policy configured for the remote repository).</description>
 
   <build>
     <plugins>
@@ -45,12 +41,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4326/test/pom.xml b/core-it-suite/src/test/resources/mng-4326/test/pom.xml
index 46ca6bf..15d66b6 100644
--- a/core-it-suite/src/test/resources/mng-4326/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4326/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4326</name>
-  <description>
-    Verify that locally built/installed snapshot artifacts suppress remote update checks (as long as the local copy
-    still satisfies the update policy configured for the remote repository).
-  </description>
+  <description>Verify that locally built/installed snapshot artifacts suppress remote update checks (as long as the local copy
+    still satisfies the update policy configured for the remote repository).</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4327/pom.xml b/core-it-suite/src/test/resources/mng-4327/pom.xml
index 96387e2..51844e8 100644
--- a/core-it-suite/src/test/resources/mng-4327/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4327/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4327</name>
-  <description>
-    Verify that lifecycle forking mojos are excluded from the lifecycles that have directly or indirectly forked
-    by them.
-  </description>
+  <description>Verify that lifecycle forking mojos are excluded from the lifecycles that have directly or indirectly forked
+    by them.</description>
 
   <build>
     <plugins>
@@ -42,7 +38,6 @@
         <executions>
           <execution>
             <id>fork</id>
-            <phase>generate-sources</phase>
             <goals>
               <!--
               This forks the lifecycle up to the phase "generate-sources" and hence encounters this execution again
@@ -50,6 +45,7 @@
               -->
               <goal>fork</goal>
             </goals>
+            <phase>generate-sources</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4328/pom.xml b/core-it-suite/src/test/resources/mng-4328/pom.xml
index 0dfd4b3..afc8e55 100644
--- a/core-it-suite/src/test/resources/mng-4328/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4328/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,9 @@
   <version>1.0-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4328</name>
-  <description>
-    Verify that plugin parameters that are of primitive types like boolean (not java.lang.Boolean) can be populated
+  <description>Verify that plugin parameters that are of primitive types like boolean (not java.lang.Boolean) can be populated
     from expressions. In other words, the subtle difference between the runtime type of the expression value (which
-    will always be a primitive wrapper class due to reflection) and the actual parameter type should not matter.
-  </description>
+    will always be a primitive wrapper class due to reflection) and the actual parameter type should not matter.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test-1</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config1.properties</propertiesFile>
               <primitiveBooleanParam>${settings.offline}</primitiveBooleanParam>
@@ -53,10 +49,10 @@
           </execution>
           <execution>
             <id>test-2</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/config2.properties</propertiesFile>
               <primitiveBooleanParam>${project.executionRoot}</primitiveBooleanParam>
diff --git a/core-it-suite/src/test/resources/mng-4331/pom.xml b/core-it-suite/src/test/resources/mng-4331/pom.xml
index 0bdc595..de6cb2a 100644
--- a/core-it-suite/src/test/resources/mng-4331/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4331/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4331</name>
-  <description>
-    Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
-    without resolving their artifact files.
-  </description>
+  <description>Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
+    without resolving their artifact files.</description>
 
   <modules>
     <module>sub-1</module>
diff --git a/core-it-suite/src/test/resources/mng-4331/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-4331/sub-1/pom.xml
index ea993c6..4b18dcb 100644
--- a/core-it-suite/src/test/resources/mng-4331/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4331/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4331 :: Sub-1</name>
-  <description>
-    Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
-    without resolving their artifact files.
-  </description>
+  <description>Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
+    without resolving their artifact files.</description>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4331/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-4331/sub-2/pom.xml
index bd98ee3..4e0e2dd 100644
--- a/core-it-suite/src/test/resources/mng-4331/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4331/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4331 :: Sub-2</name>
-  <description>
-    Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
-    without resolving their artifact files.
-  </description>
+  <description>Verify that the mojo annotation @requiresDependencyCollection allows to grab the transitive dependencies
+    without resolving their artifact files.</description>
 
   <dependencies>
     <!-- This dependency or more precisely its POM is part of the reactor but the actual artifact file is not (yet build) -->
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileArtifacts>target/compile.txt</compileArtifacts>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4332/pom.xml b/core-it-suite/src/test/resources/mng-4332/pom.xml
index 9ecc352..6d18bb3 100644
--- a/core-it-suite/src/test/resources/mng-4332/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4332/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4332</name>
-  <description>
-    Verify that default plugin executions contributed by the packaging are executed before user-defined
+  <description>Verify that default plugin executions contributed by the packaging are executed before user-defined
     executions from the POM's build section, regardless whether the executions are defined in the regular
-    plugins section or the plugin management section.
-  </description>
+    plugins section or the plugin management section.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-4335/pom.xml b/core-it-suite/src/test/resources/mng-4335/pom.xml
index f1c7e84..1ed421d 100644
--- a/core-it-suite/src/test/resources/mng-4335/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4335/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4335</name>
-  <description>
-    Test that offline mode is enabled when specified in the settings.xml
-  </description>
+  <description>Test that offline mode is enabled when specified in the settings.xml</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4338/pom.xml b/core-it-suite/src/test/resources/mng-4338/pom.xml
index bb133d4..8595f69 100644
--- a/core-it-suite/src/test/resources/mng-4338/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4338/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>it-packaging</packaging>
 
   <name>Maven Integration Test :: MNG-4338</name>
-  <description>
-    Test that the optional-mojos element in custom lifecycle mappings is recognized and does not cause
-    a configuration failure when loading the lifecycle.
-  </description>
+  <description>Test that the optional-mojos element in custom lifecycle mappings is recognized and does not cause
+    a configuration failure when loading the lifecycle.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4341/pom.xml b/core-it-suite/src/test/resources/mng-4341/pom.xml
index 5423a5e..4b65422 100644
--- a/core-it-suite/src/test/resources/mng-4341/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4341/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4341</name>
-  <description>
-    Test that plugins bound to the same phase get executed in POM order even if one of the plugins participates
-    in the default lifecycle bindings for the project's packaging.
-  </description>
+  <description>Test that plugins bound to the same phase get executed in POM order even if one of the plugins participates
+    in the default lifecycle bindings for the project's packaging.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
         <executions>
           <execution>
             <id>first</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>second</id>
-            <phase>validate</phase>
             <goals>
               <goal>resources</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4342/pom.xml b/core-it-suite/src/test/resources/mng-4342/pom.xml
index b5ebb83..35912af 100644
--- a/core-it-suite/src/test/resources/mng-4342/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4342/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4342</name>
-  <description>
-    Test that multiple goals within a single execution get their default configuration properly injected. In
-    particular, the default values for one goal should not influence the default values of the other goal.
-  </description>
+  <description>Test that multiple goals within a single execution get their default configuration properly injected. In
+    particular, the default values for one goal should not influence the default values of the other goal.</description>
 
   <build>
     <plugins>
@@ -46,12 +42,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- both of these goals have a parameter named "defaultParam" but with different default values -->
               <goal>config</goal>
               <goal>append-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4343/pom.xml b/core-it-suite/src/test/resources/mng-4343/pom.xml
index 837a4de..7dd9473 100644
--- a/core-it-suite/src/test/resources/mng-4343/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4343/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4343</name>
-  <description>
-    Verify that checking for *missing* release artifacts respects the update policy that is configured in the
-    release section for the respective repository or set globally via "-U".
-  </description>
+  <description>Verify that checking for *missing* release artifacts respects the update policy that is configured in the
+    release section for the respective repository or set globally via "-U".</description>
 
   <dependencies>
     <dependency>
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4344/pom.xml b/core-it-suite/src/test/resources/mng-4344/pom.xml
index 610f01b..7da0db8 100644
--- a/core-it-suite/src/test/resources/mng-4344/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4344/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4344</name>
-  <description>
-    Test that custom executions from managed plugins which are part of the default lifecycle bindings get
+  <description>Test that custom executions from managed plugins which are part of the default lifecycle bindings get
     executed after executions from plugins that are defined in the regular build section and bound to the
-    same phase.
-  </description>
+    same phase.</description>
 
   <build>
     <pluginManagement>
@@ -45,10 +41,10 @@
           <executions>
             <execution>
               <id>second</id>
-              <phase>validate</phase>
               <goals>
                 <goal>resources</goal>
               </goals>
+              <phase>validate</phase>
               <configuration>
                 <pathname>target/log.txt</pathname>
                 <message>second</message>
@@ -66,10 +62,10 @@
         <executions>
           <execution>
             <id>first</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/log.txt</logFile>
               <string>first</string>
diff --git a/core-it-suite/src/test/resources/mng-4345/pom.xml b/core-it-suite/src/test/resources/mng-4345/pom.xml
index 36e8a83..d8d9fb5 100644
--- a/core-it-suite/src/test/resources/mng-4345/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4345/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4345</name>
-  <description>
-    Test that plugin executions contributed by default lifecycle mappings always execute first in the targeted
+  <description>Test that plugin executions contributed by default lifecycle mappings always execute first in the targeted
     lifecycle phase regardless of other plugin executions bound to the same phase and regardless of the POM
-    order of plugin declarations.
-  </description>
+    order of plugin declarations.</description>
 
   <build>
     <plugins>
@@ -48,11 +44,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <!-- NOTE: Bound to the same phase as maven-resources-plugin:resources -->
-            <phase>process-resources</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <!-- NOTE: Bound to the same phase as maven-resources-plugin:resources -->
+            <phase>process-resources</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4347/pom.xml b/core-it-suite/src/test/resources/mng-4347/pom.xml
index 486f5ae..5adb1fe 100644
--- a/core-it-suite/src/test/resources/mng-4347/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4347/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,12 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng4347</groupId>
   <artifactId>consumer</artifactId>
-  <packaging>jar</packaging>
   <version>1</version>
+  <packaging>jar</packaging>
 
   <dependencies>
     <dependency>
@@ -44,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4347/src/main/java/org/apache/maven/it/mng4347/App.java b/core-it-suite/src/test/resources/mng-4347/src/main/java/org/apache/maven/it/mng4347/App.java
index 89a8764..d986bc1 100644
--- a/core-it-suite/src/test/resources/mng-4347/src/main/java/org/apache/maven/it/mng4347/App.java
+++ b/core-it-suite/src/test/resources/mng-4347/src/main/java/org/apache/maven/it/mng4347/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it.mng4347;
 
 /*
@@ -19,11 +37,9 @@
  * under the License.
  */
 
-public class App
-{
-    public static void main( String[] args )
-    {
-        Importing.main( args );
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        Importing.main(args);
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-4348/pom.xml b/core-it-suite/src/test/resources/mng-4348/pom.xml
index 39ff37b..1e18a37 100644
--- a/core-it-suite/src/test/resources/mng-4348/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4348/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4348</name>
-  <description>
-    Test that the (remote) repos are not accessed during execution of a mojo that does not require dependency
-    resolution. In detail, Maven should neither touch POMs, JARs nor metadata.
-  </description>
+  <description>Test that the (remote) repos are not accessed during execution of a mojo that does not require dependency
+    resolution. In detail, Maven should neither touch POMs, JARs nor metadata.</description>
 
   <dependencies>
     <dependency>
@@ -56,10 +52,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4349/pom.xml b/core-it-suite/src/test/resources/mng-4349/pom.xml
index 0e6be67..7587e66 100644
--- a/core-it-suite/src/test/resources/mng-4349/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4349/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4349</name>
-  <description>
-    Test that relocation to an artifact with an invalid POM fails gracefully and still uses the relocated JAR
-    (instead of the JAR for the unrelocated artifact).
-  </description>
+  <description>Test that relocation to an artifact with an invalid POM fails gracefully and still uses the relocated JAR
+    (instead of the JAR for the unrelocated artifact).</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4350/pom.xml b/core-it-suite/src/test/resources/mng-4350/pom.xml
index 46ac7a8..424b8cb 100644
--- a/core-it-suite/src/test/resources/mng-4350/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4350/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>multi-goal-per-phase</packaging>
 
   <name>Maven Integration Test :: MNG-4350</name>
-  <description>
-    Test that multiple goals bound to the same phase by a lifecycle mapping execute in the order given by
+  <description>Test that multiple goals bound to the same phase by a lifecycle mapping execute in the order given by
     the lifecycle mapping. In particular, the order of plugin declarations in the POM should have no influence
-    on the lifecycle mappings specified by the packaging.
-  </description>
+    on the lifecycle mappings specified by the packaging.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4353/pom.xml b/core-it-suite/src/test/resources/mng-4353/pom.xml
index ed15eae..481f972 100644
--- a/core-it-suite/src/test/resources/mng-4353/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4353/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4353</name>
-  <description>
-    Verify that repos given in a plugin's POM are considered while resolving the plugin dependencies.
-  </description>
+  <description>Verify that repos given in a plugin's POM are considered while resolving the plugin dependencies.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/touch.properties</outputFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4355/pom.xml b/core-it-suite/src/test/resources/mng-4355/pom.xml
index 2348022..a02966d 100644
--- a/core-it-suite/src/test/resources/mng-4355/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4355/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,12 +27,16 @@
   <packaging>it-packaging</packaging>
 
   <name>Maven Integration Test :: MNG-4355</name>
-  <description>
-    Test that extension declarations in the POM without an explicit version get resolved to the last release
-    version of the extension artifact.
-  </description>
+  <description>Test that extension declarations in the POM without an explicit version get resolved to the last release
+    version of the extension artifact.</description>
 
   <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>0.1-stub-SNAPSHOT</version>
+      </plugin>
+    </plugins>
     <extensions>
       <extension>
         <groupId>org.apache.maven.its.mng4355</groupId>
@@ -42,11 +44,5 @@
         <!-- NOTE: Intentionally no version here, Maven should automatically pick one -->
       </extension>
     </extensions>
-    <plugins>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>0.1-stub-SNAPSHOT</version>
-      </plugin>
-    </plugins>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4356/pom.xml b/core-it-suite/src/test/resources/mng-4356/pom.xml
index c907fc4..cea44d5 100644
--- a/core-it-suite/src/test/resources/mng-4356/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4356/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4356</name>
-  <description>
-    Test that read operations on active collections of components do not cause a re-lookup of the components from
-    the container which would prevent usage of stateful components that are usually instantiated per lookup.
-  </description>
+  <description>Test that read operations on active collections of components do not cause a re-lookup of the components from
+    the container which would prevent usage of stateful components that are usually instantiated per lookup.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/component.properties</outputFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4357/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4357/mod-a/pom.xml
index c6df928..53d951d 100644
--- a/core-it-suite/src/test/resources/mng-4357/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4357/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>maven-core-it</packaging>
 
   <name>Maven Integration Test :: MNG-4357 :: Module A</name>
-  <description>
-    Test that different projects in a reactor build can use different versions of the same extension.
-    This should still hold true if the two versions of the extension provide the same set of components.
-  </description>
+  <description>Test that different projects in a reactor build can use different versions of the same extension.
+    This should still hold true if the two versions of the extension provide the same set of components.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4357/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4357/mod-b/pom.xml
index 0e91da9..944441c 100644
--- a/core-it-suite/src/test/resources/mng-4357/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4357/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>maven-core-it</packaging>
 
   <name>Maven Integration Test :: MNG-4357 :: Module B</name>
-  <description>
-    Test that different projects in a reactor build can use different versions of the same extension.
-    This should still hold true if the two versions of the extension provide the same set of components.
-  </description>
+  <description>Test that different projects in a reactor build can use different versions of the same extension.
+    This should still hold true if the two versions of the extension provide the same set of components.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4357/pom.xml b/core-it-suite/src/test/resources/mng-4357/pom.xml
index b4aa3f1..e7c0053 100644
--- a/core-it-suite/src/test/resources/mng-4357/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4357/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4357</name>
-  <description>
-    Test that different projects in a reactor build can use different versions of the same extension.
-    This should still hold true if the two versions of the extension provide the same set of components.
-  </description>
+  <description>Test that different projects in a reactor build can use different versions of the same extension.
+    This should still hold true if the two versions of the extension provide the same set of components.</description>
 
   <modules>
     <module>mod-a</module>
diff --git a/core-it-suite/src/test/resources/mng-4359/pom.xml b/core-it-suite/src/test/resources/mng-4359/pom.xml
index 8aacefd..63bcfde 100644
--- a/core-it-suite/src/test/resources/mng-4359/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4359/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4359 :: Top Parent</name>
-  <description>
-    Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
-    resolution even if a parent itself is not part of the reactor.
-  </description>
+  <description>Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
+    resolution even if a parent itself is not part of the reactor.</description>
 
   <!-- NOTE: It is essential part of this test that this project is not included in the reactor build! -->
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-a/pom.xml
index e083aeb..758cb42 100644
--- a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4359 :: Module A</name>
-  <description>
-    Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
-    resolution even if a parent itself is not part of the reactor.
-  </description>
+  <description>Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
+    resolution even if a parent itself is not part of the reactor.</description>
 
   <!-- This is a dummy dependency that we will check for in the class paths of downstream projects -->
 
@@ -53,11 +49,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-b/pom.xml
index ea34d34..1eb5bc3 100644
--- a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4359 :: Module B</name>
-  <description>
-    Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
-    resolution even if a parent itself is not part of the reactor.
-  </description>
+  <description>Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
+    resolution even if a parent itself is not part of the reactor.</description>
 
   <dependencies>
     <dependency>
@@ -59,11 +55,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <!-- mimic phase "package" -->
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-c/pom.xml b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-c/pom.xml
index 0146634..1394b3a 100644
--- a/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4359/reactor-parent/mod-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4359 :: Module C</name>
-  <description>
-    Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
-    resolution even if a parent itself is not part of the reactor.
-  </description>
+  <description>Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
+    resolution even if a parent itself is not part of the reactor.</description>
 
   <dependencies>
     <!--
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4359/reactor-parent/pom.xml b/core-it-suite/src/test/resources/mng-4359/reactor-parent/pom.xml
index 2fc9895..176efba 100644
--- a/core-it-suite/src/test/resources/mng-4359/reactor-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4359/reactor-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4359 :: Reactor Parent</name>
-  <description>
-    Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
-    resolution even if a parent itself is not part of the reactor.
-  </description>
+  <description>Verify that locally reachable parent POMs of projects in the reactor can be resolved during dependency
+    resolution even if a parent itself is not part of the reactor.</description>
 
   <modules>
     <module>mod-a</module>
diff --git a/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml b/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
index 9807e67..634f60a 100644
--- a/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4360</name>
-  <description>
-    Verify that WebDAV works in principle. This test is not actually concerned about proper transfers but more
-    that the Jackrabbit based wagon can be properly loaded and doesn't die due to some class realm issue.
-  </description>
+  <description>Verify that WebDAV works in principle. This test is not actually concerned about proper transfers but more
+    that the Jackrabbit based wagon can be properly loaded and doesn't die due to some class realm issue.</description>
 
   <dependencies>
     <dependency>
@@ -43,13 +39,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.wagon</groupId>
-        <artifactId>wagon-webdav-jackrabbit</artifactId>
-        <version>2.10</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -62,13 +51,20 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.wagon</groupId>
+        <artifactId>wagon-webdav-jackrabbit</artifactId>
+        <version>2.10</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4360/slide/pom.xml b/core-it-suite/src/test/resources/mng-4360/slide/pom.xml
index dc2f240..e21e638 100644
--- a/core-it-suite/src/test/resources/mng-4360/slide/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4360/slide/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4360</name>
-  <description>
-    Verify that WebDAV works in principle. This test is not actually concerned about proper transfers but more
-    that the Slide based wagon can be properly loaded and doesn't die due to some class realm issue.
-  </description>
+  <description>Verify that WebDAV works in principle. This test is not actually concerned about proper transfers but more
+    that the Slide based wagon can be properly loaded and doesn't die due to some class realm issue.</description>
 
   <dependencies>
     <dependency>
@@ -43,13 +39,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.wagon</groupId>
-        <artifactId>wagon-webdav</artifactId>
-        <version>1.0-beta-2</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -62,13 +51,20 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.wagon</groupId>
+        <artifactId>wagon-webdav</artifactId>
+        <version>1.0-beta-2</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4361/pom.xml b/core-it-suite/src/test/resources/mng-4361/pom.xml
index e76bc65..58ee131 100644
--- a/core-it-suite/src/test/resources/mng-4361/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4361/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4361</name>
-  <description>
-    Verify that snapshot updates of dependencies can be forced from the command line via "-U". In more detail,
-    this means updating the JAR and its accompanying hierarchy of POMs.
-  </description>
+  <description>Verify that snapshot updates of dependencies can be forced from the command line via "-U". In more detail,
+    this means updating the JAR and its accompanying hierarchy of POMs.</description>
 
   <dependencies>
     <dependency>
@@ -48,10 +44,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPathChecksums>target/checksum.properties</compileClassPathChecksums>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-4363/pom.xml b/core-it-suite/src/test/resources/mng-4363/pom.xml
index c56098e..9eee0c1 100644
--- a/core-it-suite/src/test/resources/mng-4363/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4363/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4363</name>
-  <description>
-    Verify that plugins can dynamically add dependency artifacts to the project. Those added artifacts need to
-    be resolved and added to the affected class paths for later goal executions.
-  </description>
+  <description>Verify that plugins can dynamically add dependency artifacts to the project. Those added artifacts need to
+    be resolved and added to the affected class paths for later goal executions.</description>
 
   <dependencies>
     <!-- static dependency (with transitive dependency) -->
@@ -48,42 +44,6 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-dependency-resolution</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>compile</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-            <configuration>
-              <compileClassPath>target/classpath-orig.txt</compileClassPath>
-              <significantPathLevels>1</significantPathLevels>
-            </configuration>
-          </execution>
-          <execution>
-            <id>cobertura</id>
-            <phase>initialize</phase>
-            <goals>
-              <goal>inject</goal>
-            </goals>
-            <configuration>
-              <artifacts>
-                <artifact>org.apache.maven.its.mng4363:c</artifact>
-              </artifacts>
-            </configuration>
-          </execution>
-          <execution>
-            <id>surefire</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-            <configuration>
-              <compileClassPath>target/classpath.txt</compileClassPath>
-              <significantPathLevels>1</significantPathLevels>
-            </configuration>
-          </execution>
-        </executions>
         <dependencies>
           <!-- dynamic dependency injected by plugin -->
           <dependency>
@@ -92,6 +52,42 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>compile</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <compileClassPath>target/classpath-orig.txt</compileClassPath>
+              <significantPathLevels>1</significantPathLevels>
+            </configuration>
+          </execution>
+          <execution>
+            <id>cobertura</id>
+            <goals>
+              <goal>inject</goal>
+            </goals>
+            <phase>initialize</phase>
+            <configuration>
+              <artifacts>
+                <artifact>org.apache.maven.its.mng4363:c</artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+          <execution>
+            <id>surefire</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+            <phase>generate-sources</phase>
+            <configuration>
+              <compileClassPath>target/classpath.txt</compileClassPath>
+              <significantPathLevels>1</significantPathLevels>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4365/pom.xml b/core-it-suite/src/test/resources/mng-4365/pom.xml
index 3a48cc2..38fbc8d 100644
--- a/core-it-suite/src/test/resources/mng-4365/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4365/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4365</name>
-  <description>
-    Test that the POM parser doesn't choke on attribute values that contain entities which resolve to markup.
-  </description>
+  <description>Test that the POM parser doesn't choke on attribute values that contain entities which resolve to markup.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4367/pom.xml b/core-it-suite/src/test/resources/mng-4367/pom.xml
index 9e59540..5f8e0ea 100644
--- a/core-it-suite/src/test/resources/mng-4367/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4367/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4367</name>
-  <description>
-    Test that mirror selection considers the repo layout if specified for the mirror.
-  </description>
+  <description>Test that mirror selection considers the repo layout if specified for the mirror.</description>
 
   <dependencies>
     <dependency>
@@ -47,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4368/jar/branch-a/pom.xml b/core-it-suite/src/test/resources/mng-4368/jar/branch-a/pom.xml
index bac7081..4e40681 100644
--- a/core-it-suite/src/test/resources/mng-4368/jar/branch-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4368/jar/branch-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4368 :: Branch-A</name>
-  <description>
-    Verify that the artifact installer copies files to the local repo only if their timestamp differs from the copy
-    already in the local repo.
-  </description>
+  <description>Verify that the artifact installer copies files to the local repo only if their timestamp differs from the copy
+    already in the local repo.</description>
 
   <build>
     <plugins>
@@ -45,17 +41,17 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>install</id>
-            <phase>initialize</phase>
             <goals>
               <goal>install</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4368/jar/branch-b/pom.xml b/core-it-suite/src/test/resources/mng-4368/jar/branch-b/pom.xml
index 91a8697..e2b4f54 100644
--- a/core-it-suite/src/test/resources/mng-4368/jar/branch-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4368/jar/branch-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4368 :: Branch-B</name>
-  <description>
-    Verify that the artifact installer copies files to the local repo only if their timestamp differs from the copy
-    already in the local repo.
-  </description>
+  <description>Verify that the artifact installer copies files to the local repo only if their timestamp differs from the copy
+    already in the local repo.</description>
 
   <build>
     <plugins>
@@ -45,17 +41,17 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>install</id>
-            <phase>initialize</phase>
             <goals>
               <goal>install</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4368/pom/branch-a/pom.xml b/core-it-suite/src/test/resources/mng-4368/pom/branch-a/pom.xml
index 7fbb93a..8bb5711 100644
--- a/core-it-suite/src/test/resources/mng-4368/pom/branch-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4368/pom/branch-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4368 :: Branch-A</name>
-  <description>
-    Verify that the artifact installer copies POMs to the local repo even if they have an older timestamp as the
-    copy in the local repo.
-  </description>
+  <description>Verify that the artifact installer copies POMs to the local repo even if they have an older timestamp as the
+    copy in the local repo.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>initialize</phase>
             <goals>
               <goal>install</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4368/pom/branch-b/pom.xml b/core-it-suite/src/test/resources/mng-4368/pom/branch-b/pom.xml
index 95f8ad6..b5e69b7 100644
--- a/core-it-suite/src/test/resources/mng-4368/pom/branch-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4368/pom/branch-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4368 :: Branch-B</name>
-  <description>
-    Verify that the artifact installer copies POMs to the local repo even if they have an older timestamp as the
-    copy in the local repo.
-  </description>
+  <description>Verify that the artifact installer copies POMs to the local repo even if they have an older timestamp as the
+    copy in the local repo.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>initialize</phase>
             <goals>
               <goal>install</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4379/pom.xml b/core-it-suite/src/test/resources/mng-4379/pom.xml
index 1b35f4e..7568fbe 100644
--- a/core-it-suite/src/test/resources/mng-4379/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4379/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4379</name>
-  <description>
-    Test that the path of a system-scope dependency gets interpolated using environment variables during
-    transitive dependency resolution.
-  </description>
+  <description>Test that the path of a system-scope dependency gets interpolated using environment variables during
+    transitive dependency resolution.</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4381/pom.xml b/core-it-suite/src/test/resources/mng-4381/pom.xml
index ec55a27..29bd04f 100644
--- a/core-it-suite/src/test/resources/mng-4381/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4381/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4381</name>
-  <description>
-    Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
-    project and in projects with the same extension.
-  </description>
+  <description>Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
+    project and in projects with the same extension.</description>
 
   <modules>
     <module>sub-a</module>
diff --git a/core-it-suite/src/test/resources/mng-4381/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-4381/sub-a/pom.xml
index e2f4bc5..dc51f68 100644
--- a/core-it-suite/src/test/resources/mng-4381/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4381/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4381 :: A</name>
-  <description>
-    Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
-    project and in projects with the same extension.
-  </description>
+  <description>Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
+    project and in projects with the same extension.</description>
 
   <build>
     <!--
@@ -49,10 +45,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>update-singleton</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -68,10 +64,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>update-singleton</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4381/sub-b/pom.xml b/core-it-suite/src/test/resources/mng-4381/sub-b/pom.xml
index c626b3c..e4e5290 100644
--- a/core-it-suite/src/test/resources/mng-4381/sub-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4381/sub-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4381 :: B</name>
-  <description>
-    Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
-    project and in projects with the same extension.
-  </description>
+  <description>Test that extension plugins can contribute non-core components that can be accessed by other plugins in the same
+    project and in projects with the same extension.</description>
 
   <!--
   These repositories do not provide any artifacts and in particular do not affect the extension class path. They
@@ -64,10 +60,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>update-singleton</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4383/pom.xml b/core-it-suite/src/test/resources/mng-4383/pom.xml
index ca970e8..0bed8b2 100644
--- a/core-it-suite/src/test/resources/mng-4383/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4383/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4383</name>
-  <description>
-    Test that non-interpolated dependency versions cause a validation error during building.
-  </description>
+  <description>Test that non-interpolated dependency versions cause a validation error during building.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4385/pom.xml b/core-it-suite/src/test/resources/mng-4385/pom.xml
index dcf8cfe..c1b81f6 100644
--- a/core-it-suite/src/test/resources/mng-4385/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4385/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4385</name>
-  <description>
-    Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
-    projects in the reactor.
-  </description>
+  <description>Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
+    projects in the reactor.</description>
 
   <modules>
     <!-- this module uses a build extension ... -->
diff --git a/core-it-suite/src/test/resources/mng-4385/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-4385/sub-a/pom.xml
index 874c042..44389d7 100644
--- a/core-it-suite/src/test/resources/mng-4385/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4385/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>it-packaging</packaging>
 
   <name>Maven Integration Test :: MNG-4385 :: Sub-A</name>
-  <description>
-    Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
-    projects in the reactor.
-  </description>
+  <description>Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
+    projects in the reactor.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4385/sub-b/pom.xml b/core-it-suite/src/test/resources/mng-4385/sub-b/pom.xml
index 29cb2d5..3d4d9c8 100644
--- a/core-it-suite/src/test/resources/mng-4385/sub-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4385/sub-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,10 +27,8 @@
   <packaging>it-packaging</packaging>
 
   <name>Maven Integration Test :: MNG-4385 :: Sub-B</name>
-  <description>
-    Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
-    projects in the reactor.
-  </description>
+  <description>Test that custom lifecycle mappings contributed by build extensions of one project do not leak into other
+    projects in the reactor.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4386/pom.xml b/core-it-suite/src/test/resources/mng-4386/pom.xml
index 7072b51..d86bcf0 100644
--- a/core-it-suite/src/test/resources/mng-4386/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4386/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4386</name>
-  <description>
-    Test that the CLI flag -X enables debug logging.
-  </description>
+  <description>Test that the CLI flag -X enables debug logging.</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.log</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4387/pom.xml b/core-it-suite/src/test/resources/mng-4387/pom.xml
index a56b594..e257c9c 100644
--- a/core-it-suite/src/test/resources/mng-4387/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4387/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,7 +25,5 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4387</name>
-  <description>
-    Test that the CLI flag -q enables quiet logging, i.e. suppresses log levels below ERROR.
-  </description>
+  <description>Test that the CLI flag -q enables quiet logging, i.e. suppresses log levels below ERROR.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4393/pom.xml b/core-it-suite/src/test/resources/mng-4393/pom.xml
index c5732b4..e5da067 100644
--- a/core-it-suite/src/test/resources/mng-4393/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4393/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,5 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4393</name>
-  <description>
-    Verify that parent POMs get parsed in lenient mode when resolved from the repository.
-  </description>
+  <description>Verify that parent POMs get parsed in lenient mode when resolved from the repository.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4396/pom.xml b/core-it-suite/src/test/resources/mng-4396/pom.xml
index 5a2730a..e1cf6ce 100644
--- a/core-it-suite/src/test/resources/mng-4396/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4396/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4396</name>
-  <description>
-    Verify that plugins whose mojos are implemented as Ant scripts can be invoked.
-  </description>
+  <description>Verify that plugins whose mojos are implemented as Ant scripts can be invoked.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4400/settings/pom.xml b/core-it-suite/src/test/resources/mng-4400/settings/pom.xml
index 826254c..e8430a0 100644
--- a/core-it-suite/src/test/resources/mng-4400/settings/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4400/settings/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4400</name>
-  <description>
-    Verify that repositories declared in the settings.xml are accessed in their declaration order.
-  </description>
+  <description>Verify that repositories declared in the settings.xml are accessed in their declaration order.</description>
 
   <dependencies>
     <dependency>
@@ -47,10 +43,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <compileClassPathChecksums>target/checksum.properties</compileClassPathChecksums>
               <significantPathLevels>1</significantPathLevels>
diff --git a/core-it-suite/src/test/resources/mng-4401/pom.xml b/core-it-suite/src/test/resources/mng-4401/pom.xml
index 6cd3c08..80010fa 100644
--- a/core-it-suite/src/test/resources/mng-4401/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4401/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,8 +32,6 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4401</name>
-  <description>
-    Verify that the implicit default repo (central) is tried after explicitly declared repos during parent POM
-    resolution.
-  </description>
+  <description>Verify that the implicit default repo (central) is tried after explicitly declared repos during parent POM
+    resolution.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4402/child/pom.xml b/core-it-suite/src/test/resources/mng-4402/child/pom.xml
index d10276c..b1b08cf 100644
--- a/core-it-suite/src/test/resources/mng-4402/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4402/child/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4402 :: Child</name>
-  <description>
-    Verify that duplicate declarations of child modules cause a model validation error during project building.
-  </description>
+  <description>Verify that duplicate declarations of child modules cause a model validation error during project building.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4402/pom.xml b/core-it-suite/src/test/resources/mng-4402/pom.xml
index 7ae53b2..3fef31c 100644
--- a/core-it-suite/src/test/resources/mng-4402/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4402/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4402</name>
-  <description>
-    Verify that duplicate declarations of child modules cause a model validation error during project building.
-  </description>
+  <description>Verify that duplicate declarations of child modules cause a model validation error during project building.</description>
 
   <modules>
     <module>child</module>
diff --git a/core-it-suite/src/test/resources/mng-4403/pom.xml b/core-it-suite/src/test/resources/mng-4403/pom.xml
index f3631d2..625df0a 100644
--- a/core-it-suite/src/test/resources/mng-4403/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4403/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4403</name>
-  <description>
-    Test that dependency POMs are only subject to minimal validation during metadata retrieval, i.e. Maven should
-    ignore most kinds of badness and make a best effort at getting the metadata.
-  </description>
+  <description>Test that dependency POMs are only subject to minimal validation during metadata retrieval, i.e. Maven should
+    ignore most kinds of badness and make a best effort at getting the metadata.</description>
 
   <dependencies>
     <dependency>
@@ -50,13 +46,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4404/pom.xml b/core-it-suite/src/test/resources/mng-4404/pom.xml
index 7e47a4c..11edf1b 100644
--- a/core-it-suite/src/test/resources/mng-4404/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4404/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4404</name>
-  <description>
-    Verify that non-unique profile ids cause a model validation error during project building.
-  </description>
+  <description>Verify that non-unique profile ids cause a model validation error during project building.</description>
 
   <profiles>
     <profile>
diff --git a/core-it-suite/src/test/resources/mng-4405/pom.xml b/core-it-suite/src/test/resources/mng-4405/pom.xml
index 41dc55d..4f6d8e1 100644
--- a/core-it-suite/src/test/resources/mng-4405/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4405/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4405</name>
-  <description>
-    Test that non-interpolated plugin versions cause a validation error during building.
-  </description>
+  <description>Test that non-interpolated plugin versions cause a validation error during building.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4408/pom.xml b/core-it-suite/src/test/resources/mng-4408/pom.xml
index 0cb0eb1..deb8163 100644
--- a/core-it-suite/src/test/resources/mng-4408/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4408/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4408</name>
-  <description>
-    Verify that the build fails when the user specifies a non-existing global/user settings file on the CLI.
-  </description>
+  <description>Verify that the build fails when the user specifies a non-existing global/user settings file on the CLI.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4410/pom.xml b/core-it-suite/src/test/resources/mng-4410/pom.xml
index ab2dd39..7d105d9 100644
--- a/core-it-suite/src/test/resources/mng-4410/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4410/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4410</name>
-  <description>
-    Verify that "mvn --help" outputs the usage help and stops the execution after that.
-  </description>
+  <description>Verify that "mvn --help" outputs the usage help and stops the execution after that.</description>
 
   <!-- NOTE: Maven should not try to build any project so we use this broken POM to check it didn't. -->
-  <invalid/>
+  <invalid />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4411/pom.xml b/core-it-suite/src/test/resources/mng-4411/pom.xml
index c6a89ab..9a0b36e 100644
--- a/core-it-suite/src/test/resources/mng-4411/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4411/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4411</name>
-  <description>
-    Verify that "mvn --version" outputs the Maven version and stops the execution after that.
-  </description>
+  <description>Verify that "mvn --version" outputs the Maven version and stops the execution after that.</description>
 
   <!-- NOTE: Maven should not try to build any project so we use this broken POM to check it didn't. -->
-  <invalid/>
+  <invalid />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4412/pom.xml b/core-it-suite/src/test/resources/mng-4412/pom.xml
index 0ba88e8..3cda0ec 100644
--- a/core-it-suite/src/test/resources/mng-4412/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4412/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4412</name>
-  <description>
-    Verify that plugins using the 2.x style artifact resolver/collector directly are subject to the offline mode of
-    the current Maven session.
-  </description>
+  <description>Verify that plugins using the 2.x style artifact resolver/collector directly are subject to the offline mode of
+    the current Maven session.</description>
 
   <profiles>
     <profile>
@@ -45,10 +41,10 @@
             <executions>
               <execution>
                 <id>test</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>resolve</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <dependencies>
                     <dependency>
@@ -75,10 +71,10 @@
             <executions>
               <execution>
                 <id>test</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>collect</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <dependencies>
                     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4413/pom.xml b/core-it-suite/src/test/resources/mng-4413/pom.xml
index 550fcd3..e4e0122 100644
--- a/core-it-suite/src/test/resources/mng-4413/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4413/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4413</name>
-  <description>
-    Test that repositories contributed by dependency POMs during transitive dependency resolution are subject to
-    mirror and authentication configuration.
-  </description>
+  <description>Test that repositories contributed by dependency POMs during transitive dependency resolution are subject to
+    mirror and authentication configuration.</description>
 
   <dependencies>
     <dependency>
@@ -50,13 +46,13 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/artifacts.txt</projectArtifacts>
             </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4415/pom.xml b/core-it-suite/src/test/resources/mng-4415/pom.xml
index e42b030..d7fb0b3 100644
--- a/core-it-suite/src/test/resources/mng-4415/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4415/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4415</name>
-  <description>
-    Test that merging of plugins during inheritance follows these rules regarding ordering:
-     parent: X ->      A -> B ->      D -> E
-     child:       Y -> A ->      C -> D ->      F
-     result: X -> Y -> A -> B -> C -> D -> E -> F
-  </description>
+  <description>Test that merging of plugins during inheritance follows these rules regarding ordering:
+     parent: X -&gt;      A -&gt; B -&gt;      D -&gt; E
+     child:       Y -&gt; A -&gt;      C -&gt; D -&gt;      F
+     result: X -&gt; Y -&gt; A -&gt; B -&gt; C -&gt; D -&gt; E -&gt; F</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4415/sub/pom.xml b/core-it-suite/src/test/resources/mng-4415/sub/pom.xml
index bd0f3fe..fd8cbc1 100644
--- a/core-it-suite/src/test/resources/mng-4415/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4415/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,12 +31,10 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4415</name>
-  <description>
-    Test that merging of plugins during inheritance follows these rules regarding ordering:
-     parent: X ->      A -> B ->      D -> E
-     child:       Y -> A ->      C -> D ->      F
-     result: X -> Y -> A -> B -> C -> D -> E -> F
-  </description>
+  <description>Test that merging of plugins during inheritance follows these rules regarding ordering:
+     parent: X -&gt;      A -&gt; B -&gt;      D -&gt; E
+     child:       Y -&gt; A -&gt;      C -&gt; D -&gt;      F
+     result: X -&gt; Y -&gt; A -&gt; B -&gt; C -&gt; D -&gt; E -&gt; F</description>
 
   <build>
     <plugins>
@@ -62,10 +58,10 @@
         <executions>
           <execution>
             <id>first</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -82,10 +78,10 @@
         <executions>
           <execution>
             <id>second</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4416/pom.xml b/core-it-suite/src/test/resources/mng-4416/pom.xml
index 76459e2..641c870 100644
--- a/core-it-suite/src/test/resources/mng-4416/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4416/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,12 +25,10 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4416</name>
-  <description>
-    Test that merging of plugins during profile injection follows these rules regarding ordering:
-     model:   X ->      A -> B ->      D -> E
-     profile:      Y -> A ->      C -> D ->      F
-     result:  X -> Y -> A -> B -> C -> D -> E -> F
-  </description>
+  <description>Test that merging of plugins during profile injection follows these rules regarding ordering:
+     model:   X -&gt;      A -&gt; B -&gt;      D -&gt; E
+     profile:      Y -&gt; A -&gt;      C -&gt; D -&gt;      F
+     result:  X -&gt; Y -&gt; A -&gt; B -&gt; C -&gt; D -&gt; E -&gt; F</description>
 
   <build>
     <plugins>
@@ -94,10 +90,10 @@
             <executions>
               <execution>
                 <id>first</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>reset</goal>
                 </goals>
+                <phase>validate</phase>
               </execution>
             </executions>
           </plugin>
@@ -114,10 +110,10 @@
             <executions>
               <execution>
                 <id>second</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>eval</goal>
                 </goals>
+                <phase>validate</phase>
               </execution>
             </executions>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4421/pom.xml b/core-it-suite/src/test/resources/mng-4421/pom.xml
index 6d000ea..6080c7c 100644
--- a/core-it-suite/src/test/resources/mng-4421/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4421/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4421</name>
-  <description>
-    Test that expressions of the form ${pom.*} and {*} referring to the model cause build warnings.
-  </description>
+  <description>Test that expressions of the form ${pom.*} and {*} referring to the model cause build warnings.</description>
 
   <properties>
     <property1>${pom.version}</property1>
@@ -44,10 +40,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-4422/pom.xml b/core-it-suite/src/test/resources/mng-4422/pom.xml
index 5b1398f..9c18fbc 100644
--- a/core-it-suite/src/test/resources/mng-4422/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4422/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4422</name>
-  <description>
-    Test that the phase of plugin executions can be interpolated.
-  </description>
+  <description>Test that the phase of plugin executions can be interpolated.</description>
 
   <properties>
     <thePhase>validate</thePhase>
@@ -44,11 +40,11 @@
         <executions>
           <execution>
             <id>default</id>
-            <!-- Using a property here is the essential part of the test -->
-            <phase>${thePhase}</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <!-- Using a property here is the essential part of the test -->
+            <phase>${thePhase}</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4423/pom.xml b/core-it-suite/src/test/resources/mng-4423/pom.xml
index 1fdacde..0620316 100644
--- a/core-it-suite/src/test/resources/mng-4423/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4423/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4423</name>
-  <description>
-    Test that plugin parameter expressions like ${session.*} work and not only ${session}.
-  </description>
+  <description>Test that plugin parameter expressions like ${session.*} work and not only ${session}.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4428/pom.xml b/core-it-suite/src/test/resources/mng-4428/pom.xml
index d9accfd..5733337 100644
--- a/core-it-suite/src/test/resources/mng-4428/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4428/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4428</name>
-  <description>
-    Verify that HTTP redirects are getting followed.
-  </description>
+  <description>Verify that HTTP redirects are getting followed.</description>
 
   <dependencies>
     <dependency>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4429/pom.xml b/core-it-suite/src/test/resources/mng-4429/pom.xml
index ce265dc..ad68a1e 100644
--- a/core-it-suite/src/test/resources/mng-4429/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4429/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4429</name>
-  <description>
-    Test that a component requirement can be satisfied from an implementation that does not have the "default" hint.
-  </description>
+  <description>Test that a component requirement can be satisfied from an implementation that does not have the "default" hint.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>it</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4430/pom.xml b/core-it-suite/src/test/resources/mng-4430/pom.xml
index 14c76ca..db27bc0 100644
--- a/core-it-suite/src/test/resources/mng-4430/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4430/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4430</name>
-  <description>
-    Test that presence of status field in distribution management of a local project POM causes a validation error,
-    this field is only allowed for POMs from the repo.
-  </description>
+  <description>Test that presence of status field in distribution management of a local project POM causes a validation error,
+    this field is only allowed for POMs from the repo.</description>
 
   <distributionManagement>
     <status>generated</status>
diff --git a/core-it-suite/src/test/resources/mng-4433/pom.xml b/core-it-suite/src/test/resources/mng-4433/pom.xml
index 40a637f..de6753a 100644
--- a/core-it-suite/src/test/resources/mng-4433/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4433/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,7 +31,5 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-4433</name>
-  <description>
-    Verify that snapshot updates of parent POMs can be forced from the command line via "-U".
-  </description>
+  <description>Verify that snapshot updates of parent POMs can be forced from the command line via "-U".</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4436/pom.xml b/core-it-suite/src/test/resources/mng-4436/pom.xml
index 8d6a6be..6f19451 100644
--- a/core-it-suite/src/test/resources/mng-4436/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4436/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4436</name>
-  <description>
-    Test that lookup of a singleton component works reliably.
-  </description>
+  <description>Test that lookup of a singleton component works reliably.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>it</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4450/pom.xml b/core-it-suite/src/test/resources/mng-4450/pom.xml
index 500679e..b1c1bac 100644
--- a/core-it-suite/src/test/resources/mng-4450/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4450/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4450</name>
-  <description>
-    Verify that building missing POMs for dependencies fails gracefully with a stub model.
-  </description>
+  <description>Verify that building missing POMs for dependencies fails gracefully with a stub model.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>remote-pom</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <dependencies>
                 <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4452/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4452/consumer/pom.xml
index d2c6e76..711b5ab 100644
--- a/core-it-suite/src/test/resources/mng-4452/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4452/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4452 :: Dependency Consumer</name>
-  <description>
-    Test that snapshot artifacts with classifiers can be successfully resolved from remote repos with (unique
+  <description>Test that snapshot artifacts with classifiers can be successfully resolved from remote repos with (unique
     snapshots) when the last deployment to that repo didn't include that particular classifier. In other words,
     the metadata in the repository needs to properly keep track of all snapshots and not just the last deployed
-    one. The same goes for snapshots that differ only by file extension.
-  </description>
+    one. The same goes for snapshots that differ only by file extension.</description>
 
   <dependencies>
     <!-- those snapshots have been produced by independent builds and hence have different timestamps, yet must be resolvable -->
@@ -71,10 +67,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4452/producer/pom.xml b/core-it-suite/src/test/resources/mng-4452/producer/pom.xml
index e40d8aa..03b3bab 100644
--- a/core-it-suite/src/test/resources/mng-4452/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4452/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,22 +17,19 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4452</groupId>
-  <version>0.1-SNAPSHOT</version>
   <artifactId>producer</artifactId>
+  <version>0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4452 :: Dependency Producer</name>
-  <description>
-    Test that snapshot artifacts with classifiers can be successfully resolved from remote repos with (unique
+  <description>Test that snapshot artifacts with classifiers can be successfully resolved from remote repos with (unique
     snapshots) when the last deployment to that repo didn't include that particular classifier. In other words,
     the metadata in the repository needs to properly keep track of all snapshots and not just the last deployed
-    one. The same goes for snapshots that differ only by file extension.
-  </description>
+    one. The same goes for snapshots that differ only by file extension.</description>
 
   <distributionManagement>
     <repository>
@@ -51,7 +47,6 @@
         <executions>
           <execution>
             <id>deploy</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach</goal>
@@ -59,6 +54,7 @@
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
               <attachedFile>pom.xml</attachedFile>
diff --git a/core-it-suite/src/test/resources/mng-4453/pom.xml b/core-it-suite/src/test/resources/mng-4453/pom.xml
index e3bd628..69836d8 100644
--- a/core-it-suite/src/test/resources/mng-4453/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4453/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>versioned-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-4453</name>
-  <description>
-    Verify that plugin versions given by the lifecycle mapping are respected, even if those differ from the version
-    defined in the plugin management section inherited from the super POM.
-  </description>
+  <description>Verify that plugin versions given by the lifecycle mapping are respected, even if those differ from the version
+    defined in the plugin management section inherited from the super POM.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4459/pom.xml b/core-it-suite/src/test/resources/mng-4459/pom.xml
index 1b3d0d2..3b669fc 100644
--- a/core-it-suite/src/test/resources/mng-4459/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4459/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4459</groupId>
@@ -29,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4459</name>
-  <description>
-    Verify that encrypted passwords in the settings stay encrypted in the settings model visible to
-    plugins. In other words, the passwords should only be decrypted at the transport layer.
-  </description>
+  <description>Verify that encrypted passwords in the settings stay encrypted in the settings model visible to
+    plugins. In other words, the passwords should only be decrypted at the transport layer.</description>
 
   <build>
     <plugins>
@@ -43,6 +38,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -50,9 +48,6 @@
               </expressions>
               <outputFile>target/settings.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4461/pom.xml b/core-it-suite/src/test/resources/mng-4461/pom.xml
index ec8837f..e932569 100644
--- a/core-it-suite/src/test/resources/mng-4461/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4461/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4461</name>
-  <description>
-    Test that deployment of an artifact gets logged via the transfer monitor.
-  </description>
+  <description>Test that deployment of an artifact gets logged via the transfer monitor.</description>
 
   <distributionManagement>
     <repository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
index 54404ac..38b83cf 100644
--- a/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4463</name>
-  <description>
-    Tests that importing dependency management using version ranges
-    with exclusive upper bound resolves to the highest version.
-  </description>
+  <description>Tests that importing dependency management using version ranges
+    with exclusive upper bound resolves to the highest version.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
index 0e91b01..b6f836c 100644
--- a/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4463</name>
-  <description>
-    Tests that importing dependency management using version ranges
-    with inclusive upper bound resolves to the highest version.
-  </description>
+  <description>Tests that importing dependency management using version ranges
+    with inclusive upper bound resolves to the highest version.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
index 53ec4e3..c7b8c7d 100644
--- a/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4463</name>
-  <description>
-    Tests that importing dependency management using version ranges
-    without upper bound fails.
-  </description>
+  <description>Tests that importing dependency management using version ranges
+    without upper bound fails.</description>
 
   <dependencyManagement>
     <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4464/aggregator/pom.xml b/core-it-suite/src/test/resources/mng-4464/aggregator/pom.xml
index 86fbfe9..2a59a1c 100644
--- a/core-it-suite/src/test/resources/mng-4464/aggregator/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4464/aggregator/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -36,10 +34,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4464 :: Aggregator</name>
-  <description>
-    Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
-    underlying filesystem (i.e. even on Unix).
-  </description>
+  <description>Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
+    underlying filesystem (i.e. even on Unix).</description>
 
   <modules>
     <!-- NOTE: This deliberately uses the backward slash -->
diff --git a/core-it-suite/src/test/resources/mng-4464/parent/pom.xml b/core-it-suite/src/test/resources/mng-4464/parent/pom.xml
index fd505ef..9dd0535 100644
--- a/core-it-suite/src/test/resources/mng-4464/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4464/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4464</name>
-  <description>
-    Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
-    underlying filesystem (i.e. even on Unix).
-  </description>
+  <description>Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
+    underlying filesystem (i.e. even on Unix).</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4464/sub/pom.xml b/core-it-suite/src/test/resources/mng-4464/sub/pom.xml
index b0cd175..b026e89 100644
--- a/core-it-suite/src/test/resources/mng-4464/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4464/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -35,18 +33,11 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4464 :: Sub</name>
-  <description>
-    Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
-    underlying filesystem (i.e. even on Unix).
-  </description>
+  <description>Test that Maven recognizes both the forward and the backward slash as file separators, regardless of the
+    underlying filesystem (i.e. even on Unix).</description>
 
   <build>
-    <!-- NOTE: The paths deliberately uses the backward slash -->
-    <sourceDirectory>src\main\j</sourceDirectory>
-    <testSourceDirectory>src\test\j</testSourceDirectory>
     <directory>target\it</directory>
-    <outputDirectory>target\it\classes</outputDirectory>
-    <testOutputDirectory>target\it\test-classes</testOutputDirectory>
     <resources>
       <resource>
         <directory>src\main\res</directory>
@@ -65,10 +56,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- NOTE: This deliberately uses the backward slash -->
               <outputFile>target\path.properties</outputFile>
@@ -86,5 +77,10 @@
         </executions>
       </plugin>
     </plugins>
+    <!-- NOTE: The paths deliberately uses the backward slash -->
+    <sourceDirectory>src\main\j</sourceDirectory>
+    <testSourceDirectory>src\test\j</testSourceDirectory>
+    <outputDirectory>target\it\classes</outputDirectory>
+    <testOutputDirectory>target\it\test-classes</testOutputDirectory>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4465/pom.xml b/core-it-suite/src/test/resources/mng-4465/pom.xml
index b1b1962..0180494 100644
--- a/core-it-suite/src/test/resources/mng-4465/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4465/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,8 +25,6 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4465</name>
-  <description>
-    Verify that locally cached metadata of non-accessible remote repos is still considered when resolving
-    plugin prefixes.
-  </description>
+  <description>Verify that locally cached metadata of non-accessible remote repos is still considered when resolving
+    plugin prefixes.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4470/release/pom.xml b/core-it-suite/src/test/resources/mng-4470/release/pom.xml
index a885171..33a23ce 100644
--- a/core-it-suite/src/test/resources/mng-4470/release/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4470/release/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4470</name>
-  <description>
-    Test that deployment (of a release) to a proxy that requires authentication works.
-  </description>
+  <description>Test that deployment (of a release) to a proxy that requires authentication works.</description>
 
   <distributionManagement>
     <repository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4470/snapshot/pom.xml b/core-it-suite/src/test/resources/mng-4470/snapshot/pom.xml
index 068ce2d..8bd4b14 100644
--- a/core-it-suite/src/test/resources/mng-4470/snapshot/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4470/snapshot/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4470</name>
-  <description>
-    Test that deployment (of a snapshot) to a proxy that requires authentication works.
-  </description>
+  <description>Test that deployment (of a snapshot) to a proxy that requires authentication works.</description>
 
   <distributionManagement>
     <snapshotRepository>
@@ -51,12 +47,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4474/pom.xml b/core-it-suite/src/test/resources/mng-4474/pom.xml
index 424b4be..a33168b 100644
--- a/core-it-suite/src/test/resources/mng-4474/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4474/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,18 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4474</name>
-  <description>
-    Verify that the wagon manager does not erroneously cache/reuse wagon instances that use per-lookup instantiation.
-  </description>
+  <description>Verify that the wagon manager does not erroneously cache/reuse wagon instances that use per-lookup instantiation.</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-wagon</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -55,13 +44,20 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>lookup-wagon</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-wagon</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4482/pom.xml b/core-it-suite/src/test/resources/mng-4482/pom.xml
index b247534..554ea98 100644
--- a/core-it-suite/src/test/resources/mng-4482/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4482/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,18 +26,9 @@
   <packaging>coreit</packaging>
 
   <name>Maven Integration Test :: MNG-4482</name>
-  <description>
-    Verify that snapshot updates of plugins/extensions can be forced from the command line via "-U".
-  </description>
+  <description>Verify that snapshot updates of plugins/extensions can be forced from the command line via "-U".</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.mng4482</groupId>
-        <artifactId>extension</artifactId>
-        <version>0.2-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.mng4482</groupId>
@@ -50,5 +39,12 @@
         </configuration>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng4482</groupId>
+        <artifactId>extension</artifactId>
+        <version>0.2-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4488/pom.xml b/core-it-suite/src/test/resources/mng-4488/pom.xml
index ae6ffda..4d03f08 100644
--- a/core-it-suite/src/test/resources/mng-4488/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4488/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,7 +32,5 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4488</name>
-  <description>
-    Verify that parent POMs get validated in lenient mode when resolved from the repository.
-  </description>
+  <description>Verify that parent POMs get validated in lenient mode when resolved from the repository.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4489/pom.xml b/core-it-suite/src/test/resources/mng-4489/pom.xml
index 1eb33a7..714abeb 100644
--- a/core-it-suite/src/test/resources/mng-4489/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4489/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4489</name>
-  <description>
-    Test that repositories contributed by extension POMs during transitive dependency resolution are subject to
-    mirror and authentication configuration.
-  </description>
+  <description>Test that repositories contributed by extension POMs during transitive dependency resolution are subject to
+    mirror and authentication configuration.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <extensions>true</extensions>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4498/pom.xml b/core-it-suite/src/test/resources/mng-4498/pom.xml
index 9b154cd..b622539 100644
--- a/core-it-suite/src/test/resources/mng-4498/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4498/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4498</name>
-  <description>
-    Test that unreadable metadata from one repository does not fail the entire dependency resolution.
-  </description>
+  <description>Test that unreadable metadata from one repository does not fail the entire dependency resolution.</description>
 
   <dependencies>
     <dependency>
@@ -52,10 +48,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4500/pom.xml b/core-it-suite/src/test/resources/mng-4500/pom.xml
index ec95966..dc0410b 100644
--- a/core-it-suite/src/test/resources/mng-4500/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4500/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4500</name>
-  <description>
-    Test that timestamped snapshots are treated as immutable, i.e. Maven should never check for updates of them
-    once downloaded from a remote repo regardless of the update policy.
-  </description>
+  <description>Test that timestamped snapshots are treated as immutable, i.e. Maven should never check for updates of them
+    once downloaded from a remote repo regardless of the update policy.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4522/pom.xml b/core-it-suite/src/test/resources/mng-4522/pom.xml
index 51901a3..5fa44c3 100644
--- a/core-it-suite/src/test/resources/mng-4522/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4522/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4522</name>
-  <description>
-    Test that dependency resolution fails/aborts in case a dependency has a POM that inherits from a missing parent.
-  </description>
+  <description>Test that dependency resolution fails/aborts in case a dependency has a POM that inherits from a missing parent.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4526/pom.xml b/core-it-suite/src/test/resources/mng-4526/pom.xml
index 6992f99..b1d7038 100644
--- a/core-it-suite/src/test/resources/mng-4526/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4526/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4526</name>
-  <description>
-    Test that MavenProject.getArtifacts() only holds artifacts matching the scope requested by a mojo.
-  </description>
+  <description>Test that MavenProject.getArtifacts() only holds artifacts matching the scope requested by a mojo.</description>
 
   <dependencies>
     <dependency>
@@ -61,30 +57,30 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <projectArtifacts>target/test.txt</projectArtifacts>
             </configuration>
           </execution>
           <execution>
             <id>runtime</id>
-            <phase>initialize</phase>
             <goals>
               <goal>runtime</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <projectArtifacts>target/runtime.txt</projectArtifacts>
             </configuration>
           </execution>
           <execution>
             <id>compile</id>
-            <phase>generate-sources</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>generate-sources</phase>
             <configuration>
               <projectArtifacts>target/compile.txt</projectArtifacts>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4528/pom.xml b/core-it-suite/src/test/resources/mng-4528/pom.xml
index a1e7bed..4cbc0fb 100644
--- a/core-it-suite/src/test/resources/mng-4528/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4528/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,13 +25,11 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4528</name>
-  <description>
-    Test that wagon providers pulled in via transitive dependencies of Maven core artifacts get excluded from
+  <description>Test that wagon providers pulled in via transitive dependencies of Maven core artifacts get excluded from
     plugin realms (in favor of potentially newer wagons bundled with the core). This requirement is mostly a
     hack to compensate for the historic slip of Maven core artifacts depending on wagon providers. Those old
     wagon providers conflict with the usually newer wagons bundled with the core distro and cause grief under
-    a class loader hierarchy where wagons are loaded from the plugin realm (if available) like in Maven 3.
-  </description>
+    a class loader hierarchy where wagons are loaded from the plugin realm (if available) like in Maven 3.</description>
 
   <build>
     <plugins>
@@ -47,14 +43,6 @@
           <providerGroupId>org.apache.maven.wagon</providerGroupId>
           <providerArtifactId>wagon-ssh-external</providerArtifactId>
         </configuration>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>dump-version</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <dependency>
             <!--
@@ -67,6 +55,14 @@
             <version>2.0.2</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <goals>
+              <goal>dump-version</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4536/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4536/mod-a/pom.xml
index f61cba5..10f4ddf 100644
--- a/core-it-suite/src/test/resources/mng-4536/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4536/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-4536/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4536/mod-b/pom.xml
index 3904dad..2b9eaf4 100644
--- a/core-it-suite/src/test/resources/mng-4536/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4536/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-4536/pom.xml b/core-it-suite/src/test/resources/mng-4536/pom.xml
index a1a73f3..e20d601 100644
--- a/core-it-suite/src/test/resources/mng-4536/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4536/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4536</name>
-  <description>
-    Test that forking mojos that require no project only fork the current project and not the entire reactor.
-  </description>
+  <description>Test that forking mojos that require no project only fork the current project and not the entire reactor.</description>
 
   <modules>
     <module>mod-a</module>
@@ -46,10 +42,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>generate-sources</phase>
             <goals>
               <goal>fork-lifecycle-no-project</goal>
             </goals>
+            <phase>generate-sources</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4544/pom.xml b/core-it-suite/src/test/resources/mng-4544/pom.xml
index dc1ae3b..47b3c7a 100644
--- a/core-it-suite/src/test/resources/mng-4544/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4544/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4544</name>
-  <description>
-    Test that concurrent access to active component collections is thread-safe.
-  </description>
+  <description>Test that concurrent access to active component collections is thread-safe.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>check-thread-safety</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4553/pom.xml b/core-it-suite/src/test/resources/mng-4553/pom.xml
index 09f582f..2934b8d 100644
--- a/core-it-suite/src/test/resources/mng-4553/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4553/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4553</name>
-  <description>
-    Verify that the core artifact filter considers both artifact id and group id.
-  </description>
+  <description>Verify that the core artifact filter considers both artifact id and group id.</description>
 
   <build>
     <plugins>
@@ -48,15 +44,15 @@
         <executions>
           <execution>
             <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <resourcePaths>mng4553.properties</resourcePaths>
               <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
               <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4554/pom.xml b/core-it-suite/src/test/resources/mng-4554/pom.xml
index 7b51c19..e1f8d77 100644
--- a/core-it-suite/src/test/resources/mng-4554/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4554/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,7 +25,5 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4554</name>
-  <description>
-    Test that the metadata holding the plugin prefix mapping is properly cached/updated.
-  </description>
+  <description>Test that the metadata holding the plugin prefix mapping is properly cached/updated.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4555/pom.xml b/core-it-suite/src/test/resources/mng-4555/pom.xml
index 512d91d..78d70e5 100644
--- a/core-it-suite/src/test/resources/mng-4555/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4555/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4555</name>
-  <description>
-    Verify that resolution of the metaversion RELEASE respects offline mode.
-  </description>
+  <description>Verify that resolution of the metaversion RELEASE respects offline mode.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <dependencies>
                 <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4561/pom.xml b/core-it-suite/src/test/resources/mng-4561/pom.xml
index 4b5d55c..b1bbdcd 100644
--- a/core-it-suite/src/test/resources/mng-4561/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4561/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4561</name>
-  <description>
-    Test that repositories contributed by plugin POMs during transitive dependency resolution are subject to
-    mirror, proxy and authentication configuration.
-  </description>
+  <description>Test that repositories contributed by plugin POMs during transitive dependency resolution are subject to
+    mirror, proxy and authentication configuration.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <version>0.1</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4565-multi-condition-profile-activation/pom.xml b/core-it-suite/src/test/resources/mng-4565-multi-condition-profile-activation/pom.xml
index 15946a5..b0f73c7 100644
--- a/core-it-suite/src/test/resources/mng-4565-multi-condition-profile-activation/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4565-multi-condition-profile-activation/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng3106</groupId>
@@ -34,10 +35,10 @@
             <executions>
               <execution>
                 <id>profile1-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile1</outputDirectory>
                 </configuration>
@@ -66,10 +67,10 @@
             <executions>
               <execution>
                 <id>profile2-touch</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>touch</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <outputDirectory>${project.build.directory}/profile2</outputDirectory>
                 </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4572/pom.xml b/core-it-suite/src/test/resources/mng-4572/pom.xml
index 0977860..26b74b6 100644
--- a/core-it-suite/src/test/resources/mng-4572/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4572/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,12 +17,9 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <!-- NOTE: White space around the value is the essential part of this test -->
-  <modelVersion>
-    4.0.0
-  </modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4572</groupId>
   <artifactId>test</artifactId>
@@ -31,7 +27,5 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4572</name>
-  <description>
-    Test that the model parser doesn't choke when the modelVersion is surrounded by whitespace.
-  </description>
+  <description>Test that the model parser doesn't choke when the modelVersion is surrounded by whitespace.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4580/pom.xml b/core-it-suite/src/test/resources/mng-4580/pom.xml
index d0db4d9..7284983 100644
--- a/core-it-suite/src/test/resources/mng-4580/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4580/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4580</name>
-  <description>
-    Verify that project-level plugin dependencies of submodules are still considered when a plugin is invoked
+  <description>Verify that project-level plugin dependencies of submodules are still considered when a plugin is invoked
     directly from command line at the reactor root. In other words, the plugin realm used for a mojo execution
-    should match the plugin dependencies as given by the current project.
-  </description>
+    should match the plugin dependencies as given by the current project.</description>
 
   <modules>
     <module>sub</module>
diff --git a/core-it-suite/src/test/resources/mng-4580/sub/pom.xml b/core-it-suite/src/test/resources/mng-4580/sub/pom.xml
index 0ac9f8b..2ba18bf 100644
--- a/core-it-suite/src/test/resources/mng-4580/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4580/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,9 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4580 :: Sub</name>
-  <description>
-    Verify that project-level plugin dependencies of submodules are still considered when a plugin is invoked
+  <description>Verify that project-level plugin dependencies of submodules are still considered when a plugin is invoked
     directly from command line at the reactor root. In other words, the plugin realm used for a mojo execution
-    should match the plugin dependencies as given by the current project.
-  </description>
+    should match the plugin dependencies as given by the current project.</description>
 
   <build>
     <plugins>
@@ -39,6 +35,12 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <classNames>org.apache.maven.plugin.coreit.ClassA</classNames>
+          <resourcePaths>org/apache/maven/plugin/coreit/a.properties</resourcePaths>
+          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+          <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
+        </configuration>
         <dependencies>
           <dependency>
             <groupId>org.apache.maven.its.plugins.class-loader</groupId>
@@ -56,12 +58,6 @@
             </exclusions>
           </dependency>
         </dependencies>
-        <configuration>
-          <classNames>org.apache.maven.plugin.coreit.ClassA</classNames>
-          <resourcePaths>org/apache/maven/plugin/coreit/a.properties</resourcePaths>
-          <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
-          <contextClassLoaderOutput>target/tccl.properties</contextClassLoaderOutput>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4586/pom.xml b/core-it-suite/src/test/resources/mng-4586/pom.xml
index 26b5a94..dba137e 100644
--- a/core-it-suite/src/test/resources/mng-4586/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4586/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4586</name>
-  <description>
-    Verify that plugin prefixes can be resolved from the POM's plugin management even if the POM
-    does not specify the plugin version.
-  </description>
+  <description>Verify that plugin prefixes can be resolved from the POM's plugin management even if the POM
+    does not specify the plugin version.</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-4590/pom.xml b/core-it-suite/src/test/resources/mng-4590/pom.xml
index 6300edf..c68fc41 100644
--- a/core-it-suite/src/test/resources/mng-4590/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4590/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4590</name>
-  <description>
-    Verify that imported POMs are processed using the same system/user properties as the importing POM.
-  </description>
+  <description>Verify that imported POMs are processed using the same system/user properties as the importing POM.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -53,6 +49,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -60,9 +59,6 @@
               </expressions>
               <outputFile>target/pom.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4600/model/pom.xml b/core-it-suite/src/test/resources/mng-4600/model/pom.xml
index 70967ad..bdae65c 100644
--- a/core-it-suite/src/test/resources/mng-4600/model/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4600/model/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4600</name>
-  <description>
-    Verify that the optional flag of a dependency is not controlled by dependency management.
-  </description>
+  <description>Verify that the optional flag of a dependency is not controlled by dependency management.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -59,6 +55,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <expressions>
@@ -66,9 +65,6 @@
               </expressions>
               <outputFile>target/pom.properties</outputFile>
             </configuration>
-            <goals>
-              <goal>eval</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4600/resolution/pom.xml b/core-it-suite/src/test/resources/mng-4600/resolution/pom.xml
index 8993231..dbf3a56 100644
--- a/core-it-suite/src/test/resources/mng-4600/resolution/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4600/resolution/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4600</name>
-  <description>
-    Verify that the optional state of a transitive dependency is not controlled by dependency management.
-  </description>
+  <description>Verify that the optional state of a transitive dependency is not controlled by dependency management.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4615/test-0/pom.xml b/core-it-suite/src/test/resources/mng-4615/test-0/pom.xml
index 89c202e..9053df1 100644
--- a/core-it-suite/src/test/resources/mng-4615/test-0/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4615/test-0/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4615</name>
-  <description>
-    Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
-    This scenario checks the case of all required parameters being set via plugin configuration.
-  </description>
+  <description>Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
+    This scenario checks the case of all required parameters being set via plugin configuration.</description>
 
   <build>
     <plugins>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>required-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4615/test-1/pom.xml b/core-it-suite/src/test/resources/mng-4615/test-1/pom.xml
index de026eb..7294dae 100644
--- a/core-it-suite/src/test/resources/mng-4615/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4615/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4615</name>
-  <description>
-    Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
-    This scenario checks the case of a parameter missing its backing user property.
-  </description>
+  <description>Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
+    This scenario checks the case of a parameter missing its backing user property.</description>
 
   <build>
     <plugins>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>required-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4615/test-2a/pom.xml b/core-it-suite/src/test/resources/mng-4615/test-2a/pom.xml
index 3417904..5752196 100644
--- a/core-it-suite/src/test/resources/mng-4615/test-2a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4615/test-2a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4615</name>
-  <description>
-    Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
-    This scenario checks the case of a parameter missing its backing POM value.
-  </description>
+  <description>Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
+    This scenario checks the case of a parameter missing its backing POM value.</description>
   <!-- missing: <url>http://foo.bar/</url> -->
 
   <build>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>required-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4615/test-2b/pom.xml b/core-it-suite/src/test/resources/mng-4615/test-2b/pom.xml
index 960fc57..fc30d10 100644
--- a/core-it-suite/src/test/resources/mng-4615/test-2b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4615/test-2b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4615</name>
-  <description>
-    Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
-    This scenario checks the case of a parameter defaulting to its backing POM value.
-  </description>
+  <description>Verify that Maven validates required mojo parameters (and doesn't just have the plugins die with NPEs).
+    This scenario checks the case of a parameter defaulting to its backing POM value.</description>
   <url>http://foo.bar/</url>
 
   <build>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>required-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4618/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4618/mod-a/pom.xml
index 53edbbf..c45ddb6 100644
--- a/core-it-suite/src/test/resources/mng-4618/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4618/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4618 :: Module A</name>
-  <description>
-    Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.
-  </description>
+  <description>Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4618/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4618/mod-b/pom.xml
index 9c803ba..fb3bbd2 100644
--- a/core-it-suite/src/test/resources/mng-4618/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4618/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4618 :: Module B</name>
-  <description>
-    Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.
-  </description>
+  <description>Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4618/mod-c/pom.xml b/core-it-suite/src/test/resources/mng-4618/mod-c/pom.xml
index 0c902fc..a38c8b3 100644
--- a/core-it-suite/src/test/resources/mng-4618/mod-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4618/mod-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4618 :: Module C</name>
-  <description>
-    Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.
-  </description>
+  <description>Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.</description>
 
   <build>
     <plugins>
@@ -45,10 +41,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4618/pom.xml b/core-it-suite/src/test/resources/mng-4618/pom.xml
index 63ab32f..3596349 100644
--- a/core-it-suite/src/test/resources/mng-4618/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4618/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4618 :: Aggregator</name>
-  <description>
-    Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.
-  </description>
+  <description>Verify that aggregator-only projects (i.e. not used as parent for inheritance) get built after their modules.</description>
 
   <modules>
     <module>mod-a</module>
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4625/pom.xml b/core-it-suite/src/test/resources/mng-4625/pom.xml
index 19b1bb3..ebed286 100644
--- a/core-it-suite/src/test/resources/mng-4625/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4625/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4625</name>
-  <description>
-    Verify that interpolation of the settings.xml doesn't fail if an expression's value contains
-    XML special characters.
-  </description>
+  <description>Verify that interpolation of the settings.xml doesn't fail if an expression's value contains
+    XML special characters.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4629/pom.xml b/core-it-suite/src/test/resources/mng-4629/pom.xml
index 2d86e3c..9de0b3a 100644
--- a/core-it-suite/src/test/resources/mng-4629/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4629/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4629</name>
-  <description>
-    Verify that mere POM validation does not fail upon a system-scope dependency that refers to a non-existing
-    file (the error is deferred to actual dependency resolution).
-  </description>
+  <description>Verify that mere POM validation does not fail upon a system-scope dependency that refers to a non-existing
+    file (the error is deferred to actual dependency resolution).</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4633/pom.xml b/core-it-suite/src/test/resources/mng-4633/pom.xml
index cb004fa..1b10f71 100644
--- a/core-it-suite/src/test/resources/mng-4633/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4633/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,9 +8,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4633 : Parent pom</name>
-  <description>
-      Interleaved access to "artifact.getFile()
-  </description>
+  <description>Interleaved access to "artifact.getFile()</description>
 
   <modules>
     <module>subproject1</module>
diff --git a/core-it-suite/src/test/resources/mng-4633/subproject1/pom.xml b/core-it-suite/src/test/resources/mng-4633/subproject1/pom.xml
index 132c0f5..d793c91 100644
--- a/core-it-suite/src/test/resources/mng-4633/subproject1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4633/subproject1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -12,6 +13,5 @@
 
   <name>Maven Integration Test :: MNG-4633 : Project 1</name>
 
-  <build>
-  </build>
+  <build />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4633/subproject1/src/main/java/mng4633/AClass.java b/core-it-suite/src/test/resources/mng-4633/subproject1/src/main/java/mng4633/AClass.java
index 14641a7..2e1979b 100644
--- a/core-it-suite/src/test/resources/mng-4633/subproject1/src/main/java/mng4633/AClass.java
+++ b/core-it-suite/src/test/resources/mng-4633/subproject1/src/main/java/mng4633/AClass.java
@@ -1,5 +1,21 @@
+/*
+ * 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.
+ */
 package mng4633;
 
-public class AClass {
-
-}
\ No newline at end of file
+public class AClass {}
diff --git a/core-it-suite/src/test/resources/mng-4633/subproject2/pom.xml b/core-it-suite/src/test/resources/mng-4633/subproject2/pom.xml
index 2464a61..5b414d8 100644
--- a/core-it-suite/src/test/resources/mng-4633/subproject2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4633/subproject2/pom.xml
@@ -1,48 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng4633</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.mng4633</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>subproject2</artifactId>
-    <packaging>jar</packaging>
+  <artifactId>subproject2</artifactId>
+  <packaging>jar</packaging>
 
-    <name>Maven Integration Test :: MNG-4633 : Project 2</name>
+  <name>Maven Integration Test :: MNG-4633 : Project 2</name>
 
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng4633</groupId>
-            <artifactId>subproject1</artifactId>
-            <version>1.0</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <executions>
-                    <execution>
-                       <id>default-compile</id>
-                       <configuration>
-                         <excludes>
-                           <exclude>**</exclude>
-                         </excludes>
-                       </configuration>
-                     </execution>
-                    <execution>
-                        <id>baz</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>compile</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng4633</groupId>
+      <artifactId>subproject1</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>default-compile</id>
+            <configuration>
+              <excludes>
+                <exclude>**</exclude>
+              </excludes>
+            </configuration>
+          </execution>
+          <execution>
+            <id>baz</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+            <phase>generate-resources</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4633/subproject2/src/main/java/mng4633/BClass.java b/core-it-suite/src/test/resources/mng-4633/subproject2/src/main/java/mng4633/BClass.java
index 8875e1c..cf5b550 100644
--- a/core-it-suite/src/test/resources/mng-4633/subproject2/src/main/java/mng4633/BClass.java
+++ b/core-it-suite/src/test/resources/mng-4633/subproject2/src/main/java/mng4633/BClass.java
@@ -1,7 +1,21 @@
+/*
+ * 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.
+ */
 package mng4633;
 
-import mng4633.AClass;
-
-public class BClass {
-
-}
\ No newline at end of file
+public class BClass {}
diff --git a/core-it-suite/src/test/resources/mng-4644/pom.xml b/core-it-suite/src/test/resources/mng-4644/pom.xml
index b0c53f5..6a696ed 100644
--- a/core-it-suite/src/test/resources/mng-4644/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4644/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,6 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4644</name>
-  <description>
-    Verify that misplaced text inside the project element of a POM causes a parser error during reactor builds.
-  </description>
-
+  <description>Verify that misplaced text inside the project element of a POM causes a parser error during reactor builds.</description>
   This text must not be allowed here...
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4654/pom.xml b/core-it-suite/src/test/resources/mng-4654/pom.xml
index 2a3e59e..9b212ac 100644
--- a/core-it-suite/src/test/resources/mng-4654/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4654/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>mng4654</packaging>
 
   <name>Maven Integration Test :: MNG-4654</name>
-  <description>
-    Test that the artifact handler for the project main artifact is selected via the handler's type/roleHint
-    and not via the handler's packaging (the packaging only applies to the legacy repo layout).
-  </description>
+  <description>Test that the artifact handler for the project main artifact is selected via the handler's type/roleHint
+    and not via the handler's packaging (the packaging only applies to the legacy repo layout).</description>
 
   <distributionManagement>
     <repository>
@@ -58,12 +54,12 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
index 5308222..ad0ec9c 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng4660</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng4660</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/src/main/java/org/apache/maven/it/Example.java b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/src/main/java/org/apache/maven/it/Example.java
index 1608aba..7cf4e92 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/src/main/java/org/apache/maven/it/Example.java
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/src/main/java/org/apache/maven/it/Example.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -19,6 +37,4 @@
  * under the License.
  */
 
-public class Example
-{
-}
\ No newline at end of file
+public class Example {}
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
index bfb4aa7..c4e4d69 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,28 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng4660</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
+  <artifactId>module-b</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng4660</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <dependencies>
-      <dependency>
-          <groupId>org.apache.maven.its.mng4660</groupId>
-          <artifactId>module-a</artifactId>
-          <version>1.0</version>
-      </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng4660</groupId>
+      <artifactId>module-a</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/main/java/org/apache/maven/it/AnotherExample.java b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
index 20ab187..cee4f27 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -19,10 +37,8 @@
  * under the License.
  */
 
-public class AnotherExample
-{
-    public AnotherExample()
-    {
+public class AnotherExample {
+    public AnotherExample() {
         new Example();
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/test/java/org/apache/maven/it/TestCase.java
index 74a4579..d7de31b 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -21,11 +39,9 @@
 
 import org.junit.Test;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
+    public void testCase() {
         final Example example = new Example();
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
index 565b2fc..f0f8eb7 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,42 +17,37 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng4660</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng4660</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-4660</name>
+  <description>This is a test case for a new check which verifies if a packaged artifact
+        within the Reactor is up-to-date with the outputDirectory of the same project.</description>
 
-    <name>Maven Integration Test :: MNG-4660</name>
-    <description>
-        This is a test case for a new check which verifies if a packaged artifact
-        within the Reactor is up-to-date with the outputDirectory of the same project.
-    </description>
+  <modules>
+    <module>module-b</module>
+    <module>module-a</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
-    <modules>
-        <module>module-b</module>
-        <module>module-a</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
index 5308222..ad0ec9c 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng4660</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng4660</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/src/main/java/org/apache/maven/it/Example.java b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/src/main/java/org/apache/maven/it/Example.java
index 1608aba..7cf4e92 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/src/main/java/org/apache/maven/it/Example.java
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/src/main/java/org/apache/maven/it/Example.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -19,6 +37,4 @@
  * under the License.
  */
 
-public class Example
-{
-}
\ No newline at end of file
+public class Example {}
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
index bfb4aa7..c4e4d69 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,28 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng4660</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
+  <artifactId>module-b</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng4660</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <dependencies>
-      <dependency>
-          <groupId>org.apache.maven.its.mng4660</groupId>
-          <artifactId>module-a</artifactId>
-          <version>1.0</version>
-      </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng4660</groupId>
+      <artifactId>module-a</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/main/java/org/apache/maven/it/AnotherExample.java b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
index 20ab187..cee4f27 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/main/java/org/apache/maven/it/AnotherExample.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -19,10 +37,8 @@
  * under the License.
  */
 
-public class AnotherExample
-{
-    public AnotherExample()
-    {
+public class AnotherExample {
+    public AnotherExample() {
         new Example();
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/test/java/org/apache/maven/it/TestCase.java
index 932ff51..a0809f7 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,12 +41,10 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
+    public void testCase() {
         final Example example = new Example();
-        fail( "Deliberately fail test case" );
+        fail("Deliberately fail test case");
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
index 1589fd0..3131384 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,42 +17,37 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng4660</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng4660</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-4660</name>
+  <description>Test that the --resume-from flag resolves dependencies inside the same Maven project
+        without having them installed first.</description>
 
-    <name>Maven Integration Test :: MNG-4660</name>
-    <description>
-        Test that the --resume-from flag resolves dependencies inside the same Maven project
-        without having them installed first.
-    </description>
+  <modules>
+    <module>module-b</module>
+    <module>module-a</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
-    <modules>
-        <module>module-b</module>
-        <module>module-a</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4666/pom.xml b/core-it-suite/src/test/resources/mng-4666/pom.xml
index 0e6642d..6fd6a14 100644
--- a/core-it-suite/src/test/resources/mng-4666/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4666/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,11 +25,9 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4666</name>
-  <description>
-    Verify that API types from the Maven core realm are shared/imported into the plugin realm despite the plugin
+  <description>Verify that API types from the Maven core realm are shared/imported into the plugin realm despite the plugin
     declaring conflicting dependencies. For the core artifact filter, this boils down to the filter properly
-    recognizing such a conflicting dependency, i.e. knowing the relevant groupId:artifactId's.
-  </description>
+    recognizing such a conflicting dependency, i.e. knowing the relevant groupId:artifactId's.</description>
 
   <build>
     <plugins>
@@ -135,6 +131,9 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>assignment-compatible</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <assigncompatPropertiesFile>target/type.properties</assigncompatPropertiesFile>
@@ -157,9 +156,6 @@
                 <className>org.sonatype.aether.impl.ArtifactDescriptorReader</className>
               </classNames>
             </configuration>
-            <goals>
-              <goal>assignment-compatible</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4677/child-1/pom.xml b/core-it-suite/src/test/resources/mng-4677/child-1/pom.xml
index 661250d..6666b11 100644
--- a/core-it-suite/src/test/resources/mng-4677/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4677/child-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4677 :: Child-1</name>
-  <description>
-    Verify that the plugin-level configuration is not inherited if inherited=false is set.
-  </description>
+  <description>Verify that the plugin-level configuration is not inherited if inherited=false is set.</description>
 
   <!-- NOTE: This module does not mention the build plugin -->
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4677/child-2/pom.xml b/core-it-suite/src/test/resources/mng-4677/child-2/pom.xml
index e16f3d3..9e8535f 100644
--- a/core-it-suite/src/test/resources/mng-4677/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4677/child-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4677 :: Child-2</name>
-  <description>
-    Verify that the plugin-level configuration is not inherited if inherited=false is set.
-  </description>
+  <description>Verify that the plugin-level configuration is not inherited if inherited=false is set.</description>
 
   <!-- NOTE: This module mentions the build plugin -->
   <build>
diff --git a/core-it-suite/src/test/resources/mng-4677/pom.xml b/core-it-suite/src/test/resources/mng-4677/pom.xml
index d8b55e7..0466730 100644
--- a/core-it-suite/src/test/resources/mng-4677/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4677/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4677 :: Parent</name>
-  <description>
-    Verify that the plugin-level configuration is not inherited if inherited=false is set.
-  </description>
+  <description>Verify that the plugin-level configuration is not inherited if inherited=false is set.</description>
 
   <modules>
     <module>child-1</module>
diff --git a/core-it-suite/src/test/resources/mng-4679/pom.xml b/core-it-suite/src/test/resources/mng-4679/pom.xml
index b6be2fd..e4b7b86 100644
--- a/core-it-suite/src/test/resources/mng-4679/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4679/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4679</name>
-  <description>
-    Verify that plugins using the 2.x style artifact resolver/collector directly are subject to the snapshot update
-    mode of the current Maven session.
-  </description>
+  <description>Verify that plugins using the 2.x style artifact resolver/collector directly are subject to the snapshot update
+    mode of the current Maven session.</description>
 
   <build>
     <plugins>
@@ -51,17 +47,17 @@
         <executions>
           <execution>
             <id>resolver</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
           <execution>
             <id>collector</id>
-            <phase>validate</phase>
             <goals>
               <goal>collect</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4684/pom.xml b/core-it-suite/src/test/resources/mng-4684/pom.xml
index 89206b5..cb8a2de 100644
--- a/core-it-suite/src/test/resources/mng-4684/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4684/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,53 +26,30 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4684</name>
-  <description>
-    Verify that active profiles can override distribution management settings.
-  </description>
+  <description>Verify that active profiles can override distribution management settings.</description>
 
   <distributionManagement>
     <repository>
-      <id>test</id>
-      <url>http://localhost/void</url>
-      <name>test</name>
-      <layout>legacy</layout>
       <uniqueVersion>false</uniqueVersion>
+      <id>test</id>
+      <name>test</name>
+      <url>http://localhost/void</url>
+      <layout>legacy</layout>
     </repository>
     <snapshotRepository>
-      <id>test</id>
-      <url>http://localhost/void</url>
-      <name>test</name>
-      <layout>legacy</layout>
       <uniqueVersion>false</uniqueVersion>
+      <id>test</id>
+      <name>test</name>
+      <url>http://localhost/void</url>
+      <layout>legacy</layout>
     </snapshotRepository>
     <site>
       <id>test</id>
-      <url>http://localhost/void</url>
       <name>test</name>
+      <url>http://localhost/void</url>
     </site>
   </distributionManagement>
 
-  <profiles>
-    <profile>
-      <id>mng4684</id>
-      <distributionManagement>
-        <repository>
-          <id>pr</id>
-          <url>http://localhost/r</url>
-        </repository>
-        <snapshotRepository>
-          <id>psr</id>
-          <url>http://localhost/sr</url>
-        </snapshotRepository>
-        <site>
-          <id>ps</id>
-          <url>http://localhost/s</url>
-          <name>passed</name>
-        </site>
-      </distributionManagement>
-    </profile>
-  </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -90,13 +65,34 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <id>mng4684</id>
+      <distributionManagement>
+        <repository>
+          <id>pr</id>
+          <url>http://localhost/r</url>
+        </repository>
+        <snapshotRepository>
+          <id>psr</id>
+          <url>http://localhost/sr</url>
+        </snapshotRepository>
+        <site>
+          <id>ps</id>
+          <name>passed</name>
+          <url>http://localhost/s</url>
+        </site>
+      </distributionManagement>
+    </profile>
+  </profiles>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-adx/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-adx/pom.xml
index 766ffbd..6413fd4 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-adx/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-adx/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-axd/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-axd/pom.xml
index 14c831d..6e6997a 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-axd/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-axd/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-dax/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-dax/pom.xml
index 5c55ced..74f7d6b 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-dax/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-dax/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-dxa/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-dxa/pom.xml
index 76737d7..9738190 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-dxa/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-dxa/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-xad/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-xad/pom.xml
index 2acc076..b5aafca 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-xad/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-xad/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4690/test-xda/pom.xml b/core-it-suite/src/test/resources/mng-4690/test-xda/pom.xml
index aded89c..f070636 100644
--- a/core-it-suite/src/test/resources/mng-4690/test-xda/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4690/test-xda/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4690</name>
-  <description>
-    Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
-    levels) when the resolution of one conflict influences another conflict.
-  </description>
+  <description>Verify that conflict resolution doesn't depend on the declaration order of dependencies (from distinct tree
+    levels) when the resolution of one conflict influences another conflict.</description>
 
   <dependencies>
     <dependency>
@@ -64,10 +60,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4696/pom.xml b/core-it-suite/src/test/resources/mng-4696/pom.xml
index d71dc1f..8bd205a 100644
--- a/core-it-suite/src/test/resources/mng-4696/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4696/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4696</name>
-  <description>
-    Verify that MavenProject.getDependencyArtifacts() returns all direct dependencies regardless of their scope.
+  <description>Verify that MavenProject.getDependencyArtifacts() returns all direct dependencies regardless of their scope.
     In other words, getDependencyArtifacts() is in general not a subset of MavenProject.getArtifacts() as the
-    latter is subject to scope filtering as requested by plugins.
-  </description>
+    latter is subject to scope filtering as requested by plugins.</description>
 
   <dependencies>
     <dependency>
@@ -68,10 +64,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -89,10 +85,10 @@
         <executions>
           <execution>
             <id>inspect</id>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4720/pom.xml b/core-it-suite/src/test/resources/mng-4720/pom.xml
index 3a61fab..c459e2d 100644
--- a/core-it-suite/src/test/resources/mng-4720/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4720/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4720</name>
-  <description>
-    Verify the effective exclusions applied during transitive dependency resolution when both the regular
-    dependency section and dependency management declare exclusions for a particular dependency.
-  </description>
+  <description>Verify the effective exclusions applied during transitive dependency resolution when both the regular
+    dependency section and dependency management declare exclusions for a particular dependency.</description>
 
   <dependencyManagement>
     <dependencies>
@@ -78,10 +74,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4721/pom.xml b/core-it-suite/src/test/resources/mng-4721/pom.xml
index 9ef926e..d24def5 100644
--- a/core-it-suite/src/test/resources/mng-4721/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4721/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4721</name>
-  <description>
-    Verify the handling of direct/transitive optional plugin dependencies.
-  </description>
+  <description>Verify the handling of direct/transitive optional plugin dependencies.</description>
 
   <build>
     <plugins>
@@ -38,19 +34,6 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-class-loader</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>load</id>
-            <phase>validate</phase>
-            <configuration>
-              <resourcePaths>org/apache/maven/plugin/coreit/c.properties,mng4721a.properties,mng4721b.properties</resourcePaths>
-              <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
-            </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <dependency>
             <groupId>org.apache.maven.its.mng4721</groupId>
@@ -58,6 +41,19 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>load</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <resourcePaths>org/apache/maven/plugin/coreit/c.properties,mng4721a.properties,mng4721b.properties</resourcePaths>
+              <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4729/pom.xml b/core-it-suite/src/test/resources/mng-4729/pom.xml
index bcc4b09..732b17f 100644
--- a/core-it-suite/src/test/resources/mng-4729/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4729/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4729</name>
-  <description>
-    Test that the 2.x project builder obeys the network settings (mirror, proxy, auth) when building remote POMs
-    and discovering additional repositories.
-  </description>
+  <description>Test that the 2.x project builder obeys the network settings (mirror, proxy, auth) when building remote POMs
+    and discovering additional repositories.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>remote-pom</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <dependencies>
                 <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4745/pom.xml b/core-it-suite/src/test/resources/mng-4745/pom.xml
index 810a3f7..2cf97c9 100644
--- a/core-it-suite/src/test/resources/mng-4745/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4745/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,7 +25,5 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4745</name>
-  <description>
-    Verify that checks for plugin updates can be controlled via repository update policy and command line (-U).
-  </description>
+  <description>Verify that checks for plugin updates can be controlled via repository update policy and command line (-U).</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4747/pom.xml b/core-it-suite/src/test/resources/mng-4747/pom.xml
index 4efabdc..9af2ec9 100644
--- a/core-it-suite/src/test/resources/mng-4747/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4747/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4747</name>
-  <description>
-    Verify that classes from JRE agents can be loaded from plugins. Agents are loaded into the system class loader
-    and hence plugins must have access to the system class loader.
-  </description>
+  <description>Verify that classes from JRE agents can be loaded from plugins. Agents are loaded into the system class loader
+    and hence plugins must have access to the system class loader.</description>
 
   <build>
     <plugins>
@@ -41,14 +37,14 @@
         <executions>
           <execution>
             <id>test</id>
+            <goals>
+              <goal>load</goal>
+            </goals>
             <phase>validate</phase>
             <configuration>
               <classNames>Mng4747Agent</classNames>
               <pluginClassLoaderOutput>target/plugin.properties</pluginClassLoaderOutput>
             </configuration>
-            <goals>
-              <goal>load</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4750/pom.xml b/core-it-suite/src/test/resources/mng-4750/pom.xml
index 781858d..199c7b4 100644
--- a/core-it-suite/src/test/resources/mng-4750/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4750/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4750</name>
-  <description>
-    Verify that MavenProject.getDependencyArtifacts() returns resolved artifacts (once dependency resolution
-    was requested).
-  </description>
+  <description>Verify that MavenProject.getDependencyArtifacts() returns resolved artifacts (once dependency resolution
+    was requested).</description>
 
   <dependencies>
     <dependency>
@@ -56,10 +52,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -78,10 +74,10 @@
         <executions>
           <execution>
             <id>inspect</id>
-            <phase>initialize</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4755/dependency/pom.xml b/core-it-suite/src/test/resources/mng-4755/dependency/pom.xml
index 4f8a470..d0ed139 100644
--- a/core-it-suite/src/test/resources/mng-4755/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4755/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,15 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4755</name>
-  <description>
-    Verify that locally installed artifacts don't suppress fetching of g:a-level remote metadata which is required
-    to locate alternative version (as required by version ranges).
-  </description>
+  <description>Verify that locally installed artifacts don't suppress fetching of g:a-level remote metadata which is required
+    to locate alternative version (as required by version ranges).</description>
+
+  <distributionManagement>
+    <repository>
+      <id>maven-core-it</id>
+      <url>file:///${basedir}/repo</url>
+    </repository>
+  </distributionManagement>
 
   <build>
     <plugins>
@@ -45,22 +48,15 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-
-  <distributionManagement>
-    <repository>
-      <id>maven-core-it</id>
-      <url>file:///${basedir}/repo</url>
-    </repository>
-  </distributionManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4755/test/pom.xml b/core-it-suite/src/test/resources/mng-4755/test/pom.xml
index 8edf6ec..46f6e8d 100644
--- a/core-it-suite/src/test/resources/mng-4755/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4755/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4755</name>
-  <description>
-    Verify that locally installed artifacts don't suppress fetching of g:a-level remote metadata which is required
-    to locate alternative version (as required by version ranges).
-  </description>
+  <description>Verify that locally installed artifacts don't suppress fetching of g:a-level remote metadata which is required
+    to locate alternative version (as required by version ranges).</description>
 
   <dependencies>
     <dependency>
@@ -58,10 +54,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4761/pom.xml b/core-it-suite/src/test/resources/mng-4761/pom.xml
index adbc88c..a864b7c 100644
--- a/core-it-suite/src/test/resources/mng-4761/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4761/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4761</groupId>
@@ -26,10 +25,10 @@
         <executions>
           <execution>
             <id>test-run</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4765/pom.xml b/core-it-suite/src/test/resources/mng-4765/pom.xml
index 9e5d4f0..925cf55 100644
--- a/core-it-suite/src/test/resources/mng-4765/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4765/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4765</name>
-  <description>
-    Test that the 2.x project builder can be invoked directly by plugins and can access the session state.
-  </description>
+  <description>Test that the 2.x project builder can be invoked directly by plugins and can access the session state.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>local-pom</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <files>
                 <file>test.xml</file>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-abd/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-abd/pom.xml
index 5ec366d..5367995 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-abd/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-abd/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: ABD</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-adb/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-adb/pom.xml
index 7b63ce0..612c803 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-adb/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-adb/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: ADB</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-bad/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-bad/pom.xml
index dd7f96c..d9a9d30 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-bad/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-bad/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: BAD</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-bda/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-bda/pom.xml
index a925c20..e85311c 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-bda/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-bda/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: BDA</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-dab/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-dab/pom.xml
index de6683a..225a1a3 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-dab/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-dab/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: DAB</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4768/test-dba/pom.xml b/core-it-suite/src/test/resources/mng-4768/test-dba/pom.xml
index 38e2f37..12530ad 100644
--- a/core-it-suite/src/test/resources/mng-4768/test-dba/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4768/test-dba/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4768 :: DBA</name>
-  <description>
-    Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
+  <description>Verify that conflict resolution picks the nearest version that matches all hard constraints given by ranges.
     And for conflicting dependencies on distinct tree levels, "nearest" shouldn't be subject to the dependency
-    order.
-  </description>
+    order.</description>
 
   <dependencies>
     <dependency>
@@ -65,10 +61,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4771/pom.xml b/core-it-suite/src/test/resources/mng-4771/pom.xml
index 0cf40d5..37f012e 100644
--- a/core-it-suite/src/test/resources/mng-4771/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4771/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,8 +25,6 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4771</name>
-  <description>
-    Verify that repositories which have both releases and snapshots disabled aren't touched when looking for
-    plugin prefix mappings.
-  </description>
+  <description>Verify that repositories which have both releases and snapshots disabled aren't touched when looking for
+    plugin prefix mappings.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4772/pom.xml b/core-it-suite/src/test/resources/mng-4772/pom.xml
index 309b8fc..6999e78 100644
--- a/core-it-suite/src/test/resources/mng-4772/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4772/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,8 +25,6 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4772</name>
-  <description>
-    Verify that repositories which have both releases and snapshots disabled aren't touched when looking for
-    the latest plugin version.
-  </description>
+  <description>Verify that repositories which have both releases and snapshots disabled aren't touched when looking for
+    the latest plugin version.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4776/pom.xml b/core-it-suite/src/test/resources/mng-4776/pom.xml
index 50139cf..9c0ce18 100644
--- a/core-it-suite/src/test/resources/mng-4776/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4776/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4776</name>
-  <description>
-    Verify that missing plugin versions in the POM are resolved for all projects on which a forking aggregator mojo
-    will be run and not just the top-level project.
-  </description>
+  <description>Verify that missing plugin versions in the POM are resolved for all projects on which a forking aggregator mojo
+    will be run and not just the top-level project.</description>
 
   <modules>
     <module>sub</module>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>fork</id>
-            <phase>test</phase>
             <goals>
               <goal>fork-lifecycle-aggregator</goal>
             </goals>
+            <phase>test</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4776/sub/pom.xml b/core-it-suite/src/test/resources/mng-4776/sub/pom.xml
index 6d72d80..25b0c68 100644
--- a/core-it-suite/src/test/resources/mng-4776/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4776/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4776 :: Sub</name>
-  <description>
-    Verify that missing plugin versions in the POM are resolved for all projects on which a forking aggregator mojo
-    will be run and not just the top-level project.
-  </description>
+  <description>Verify that missing plugin versions in the POM are resolved for all projects on which a forking aggregator mojo
+    will be run and not just the top-level project.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         <executions>
           <execution>
             <id>log</id>
-            <phase>initialize</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>initialize</phase>
             <configuration>
               <logFile>target/log.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4779/a/pom.xml b/core-it-suite/src/test/resources/mng-4779/a/pom.xml
index e05f869..eb7fb7d 100644
--- a/core-it-suite/src/test/resources/mng-4779/a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4779/a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4779 :: A</name>
-  <description>
-    Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
-    is seen more than once during the collection.
-  </description>
+  <description>Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
+    is seen more than once during the collection.</description>
 
   <dependencies>
     <dependency>
@@ -53,11 +49,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4779/b/pom.xml b/core-it-suite/src/test/resources/mng-4779/b/pom.xml
index 3aad237..0078b0f 100644
--- a/core-it-suite/src/test/resources/mng-4779/b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4779/b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4779 :: B</name>
-  <description>
-    Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
-    is seen more than once during the collection.
-  </description>
+  <description>Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
+    is seen more than once during the collection.</description>
 
   <dependencies>
     <dependency>
@@ -53,11 +49,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4779/c/pom.xml b/core-it-suite/src/test/resources/mng-4779/c/pom.xml
index f34db63..a5395ee 100644
--- a/core-it-suite/src/test/resources/mng-4779/c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4779/c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4779 :: C</name>
-  <description>
-    Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
-    is seen more than once during the collection.
-  </description>
+  <description>Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
+    is seen more than once during the collection.</description>
 
   <build>
     <plugins>
@@ -45,11 +41,11 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4779/pom.xml b/core-it-suite/src/test/resources/mng-4779/pom.xml
index 8f87716..61a53b8 100644
--- a/core-it-suite/src/test/resources/mng-4779/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4779/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4779 :: Aggregator</name>
-  <description>
-    Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
-    is seen more than once during the collection.
-  </description>
+  <description>Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
+    is seen more than once during the collection.</description>
 
   <modules>
     <module>c</module>
diff --git a/core-it-suite/src/test/resources/mng-4779/test/pom.xml b/core-it-suite/src/test/resources/mng-4779/test/pom.xml
index 32af64f..b981cea 100644
--- a/core-it-suite/src/test/resources/mng-4779/test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4779/test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4779 :: Test</name>
-  <description>
-    Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
-    is seen more than once during the collection.
-  </description>
+  <description>Test that dependency resolution doesn't error out when a dependency with a range satisfied from the local repo
+    is seen more than once during the collection.</description>
 
   <dependencies>
     <!--
@@ -66,10 +62,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4781/pom.xml b/core-it-suite/src/test/resources/mng-4781/pom.xml
index cb534d0..505e344 100644
--- a/core-it-suite/src/test/resources/mng-4781/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4781/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4781</name>
-  <description>
-    Verify that deployment to a Nexus-like staging repository works. The subtle difference compared to an ordinary
+  <description>Verify that deployment to a Nexus-like staging repository works. The subtle difference compared to an ordinary
     HTTP/WebDAV server is that those staging repos yield a HTTP 400 (and not 404) for every GET request until a
     PUT request is made (which initializes the staging repo). The bottom line is that remote metadata must not be
-    requested before the first artifact is deployed.
-  </description>
+    requested before the first artifact is deployed.</description>
 
   <distributionManagement>
     <repository>
@@ -54,13 +50,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4785/pom.xml b/core-it-suite/src/test/resources/mng-4785/pom.xml
index eeebef9..1733586 100644
--- a/core-it-suite/src/test/resources/mng-4785/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4785/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4785</name>
-  <description>
-    Verify that dependency resolution using 2.x API in forked threads works (e.g. has access to any required
-    session state).
-  </description>
+  <description>Verify that dependency resolution using 2.x API in forked threads works (e.g. has access to any required
+    session state).</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve-transitive</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/artifacts.properties</propertiesFile>
               <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4786/pom.xml b/core-it-suite/src/test/resources/mng-4786/pom.xml
index 0e08ae1..1d601f4 100644
--- a/core-it-suite/src/test/resources/mng-4786/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4786/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,12 +25,10 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-4786</name>
-  <description>
-    Verify that plugins whose mojos are implemented as Ant scripts and use the Maven 2.1.x Ant support can be
+  <description>Verify that plugins whose mojos are implemented as Ant scripts and use the Maven 2.1.x Ant support can be
     invoked. The essential bits here are that Ant-based mojos are instantiated via a custom component factory, yet
     must undergo the same IoC as for regular Java components. And the 2.1.x Ant support actually requires injection
-    of a logger.
-  </description>
+    of a logger.</description>
 
   <build>
     <plugins>
@@ -43,15 +39,6 @@
         <configuration>
           <outputFile>target/ant.txt</outputFile>
         </configuration>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>touch</goal>
-            </goals>
-          </execution>
-        </executions>
         <dependencies>
           <dependency>
             <groupId>org.apache.maven</groupId>
@@ -78,6 +65,15 @@
             <version>1.0</version>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>touch</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4788/pom.xml b/core-it-suite/src/test/resources/mng-4788/pom.xml
index 3ef985d..3a2f376 100644
--- a/core-it-suite/src/test/resources/mng-4788/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4788/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng4788</groupId>
-  <version>0.1-SNAPSHOT</version>
   <artifactId>test</artifactId>
+  <version>0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4788</name>
-  <description>
-    Verify that plugins can install artifacts to a custom local repo (i.e. custom base dir and custom layout).
-  </description>
+  <description>Verify that plugins can install artifacts to a custom local repo (i.e. custom base dir and custom layout).</description>
 
   <build>
     <plugins>
@@ -41,11 +37,11 @@
         <executions>
           <execution>
             <id>deploy</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install-custom</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
               <localRepoDir>target/local-repo</localRepoDir>
diff --git a/core-it-suite/src/test/resources/mng-4789/pom.xml b/core-it-suite/src/test/resources/mng-4789/pom.xml
index 9a7d785..2282657 100644
--- a/core-it-suite/src/test/resources/mng-4789/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4789/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4789</name>
-  <description>
-    Test that scope inheritance considers the effective scope of parent nodes as enforced by direct dependency
-    declarations.
-  </description>
+  <description>Test that scope inheritance considers the effective scope of parent nodes as enforced by direct dependency
+    declarations.</description>
 
   <dependencies>
     <!--
@@ -73,12 +69,12 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4791/pom.xml b/core-it-suite/src/test/resources/mng-4791/pom.xml
index 3fa8390..e775259 100644
--- a/core-it-suite/src/test/resources/mng-4791/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4791/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4791</name>
-  <description>
-    Test that the project builder resolves the input artifact when building remote POMs if the input artifact
-    happens to be of type "pom".
-  </description>
+  <description>Test that the project builder resolves the input artifact when building remote POMs if the input artifact
+    happens to be of type "pom".</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>remote-pom</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <dependencies>
                 <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4795/pom.xml b/core-it-suite/src/test/resources/mng-4795/pom.xml
index db257f4..f0c9d86 100644
--- a/core-it-suite/src/test/resources/mng-4795/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4795/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4795</name>
-  <description>
-    Test that reactor projects forked by an aggregator mojo bound to a lifecycle phase are subject to dependency
-    resolution as required by their respective build plugins.
-  </description>
+  <description>Test that reactor projects forked by an aggregator mojo bound to a lifecycle phase are subject to dependency
+    resolution as required by their respective build plugins.</description>
 
   <modules>
     <module>sub</module>
@@ -47,10 +43,10 @@
         <executions>
           <execution>
             <id>fork-reactor</id>
-            <phase>process-sources</phase>
             <goals>
               <goal>fork-lifecycle-aggregator</goal>
             </goals>
+            <phase>process-sources</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4795/sub/pom.xml b/core-it-suite/src/test/resources/mng-4795/sub/pom.xml
index 1ede305..ea8cc9e 100644
--- a/core-it-suite/src/test/resources/mng-4795/sub/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4795/sub/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -35,10 +33,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4795 :: Sub</name>
-  <description>
-    Test that reactor projects forked by an aggregator mojo bound to a lifecycle phase are subject to dependency
-    resolution as required by their respective build plugins.
-  </description>
+  <description>Test that reactor projects forked by an aggregator mojo bound to a lifecycle phase are subject to dependency
+    resolution as required by their respective build plugins.</description>
 
   <dependencies>
     <dependency>
@@ -62,10 +58,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4800/test-ab/pom.xml b/core-it-suite/src/test/resources/mng-4800/test-ab/pom.xml
index 6880310..4990069 100644
--- a/core-it-suite/src/test/resources/mng-4800/test-ab/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4800/test-ab/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4800</name>
-  <description>
-    Verify that nearest-wins conflict resolution doesn't get confused when a farther conflicting dependency has
+  <description>Verify that nearest-wins conflict resolution doesn't get confused when a farther conflicting dependency has
     a wider scope than the nearer dependency, i.e. one should still end up with the nearer dependency (s:1) and
-    its subtree (x) but in the wider scope (compile).
-  </description>
+    its subtree (x) but in the wider scope (compile).</description>
 
   <dependencies>
     <!--
@@ -74,11 +70,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4800/test-ba/pom.xml b/core-it-suite/src/test/resources/mng-4800/test-ba/pom.xml
index 32dec14..c60fa3f 100644
--- a/core-it-suite/src/test/resources/mng-4800/test-ba/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4800/test-ba/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4800</name>
-  <description>
-    Verify that nearest-wins conflict resolution doesn't get confused when a farther conflicting dependency has
+  <description>Verify that nearest-wins conflict resolution doesn't get confused when a farther conflicting dependency has
     a wider scope than the nearer dependency, i.e. one should still end up with the nearer dependency (s:1) and
-    its subtree (x) but in the wider scope (compile).
-  </description>
+    its subtree (x) but in the wider scope (compile).</description>
 
   <dependencies>
     <!--
@@ -74,11 +70,11 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
               <goal>runtime</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4811/pom.xml b/core-it-suite/src/test/resources/mng-4811/pom.xml
index 35e6f26..6136671 100644
--- a/core-it-suite/src/test/resources/mng-4811/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4811/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-4811</name>
-  <description>
-    Verify that plugins can use custom component configurators.
-  </description>
+  <description>Verify that plugins can use custom component configurators.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>custom-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4814/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4814/consumer/pom.xml
index 2dbf318..1e4374b 100644
--- a/core-it-suite/src/test/resources/mng-4814/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4814/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4814 :: Consumer</name>
-  <description>
-    Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
+  <description>Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
     doesn't prevent later resolution of project artifacts from the reactor if the aggregator originally resolved
-    them from the remote repo.
-  </description>
+    them from the remote repo.</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4814/pom.xml b/core-it-suite/src/test/resources/mng-4814/pom.xml
index 58cad28..f0bc780 100644
--- a/core-it-suite/src/test/resources/mng-4814/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4814/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4814 :: Aggregator</name>
-  <description>
-    Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
+  <description>Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
     doesn't prevent later resolution of project artifacts from the reactor if the aggregator originally resolved
-    them from the remote repo.
-  </description>
+    them from the remote repo.</description>
 
   <modules>
     <module>producer</module>
diff --git a/core-it-suite/src/test/resources/mng-4814/producer/pom.xml b/core-it-suite/src/test/resources/mng-4814/producer/pom.xml
index d099f06..326ef79 100644
--- a/core-it-suite/src/test/resources/mng-4814/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4814/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4814 :: Producer</name>
-  <description>
-    Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
+  <description>Verify that dependency resolution by an aggregator before the build has actually produced any artifacts
     doesn't prevent later resolution of project artifacts from the reactor if the aggregator originally resolved
-    them from the remote repo.
-  </description>
+    them from the remote repo.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4829/pom.xml b/core-it-suite/src/test/resources/mng-4829/pom.xml
index 18cc6f5..fc8d0c8 100644
--- a/core-it-suite/src/test/resources/mng-4829/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4829/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4829</name>
-  <description>
-    Verify that artifacts with mismatching checksums cause a warning on the console.
-  </description>
+  <description>Verify that artifacts with mismatching checksums cause a warning on the console.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4834/pom.xml b/core-it-suite/src/test/resources/mng-4834/pom.xml
index 902584f..ea57ee2 100644
--- a/core-it-suite/src/test/resources/mng-4834/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4834/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,10 +32,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4834</name>
-  <description>
-    Verify that MavenProject.getParent() can lazily resolve the parent from repositories contributed by the
-    settings.
-  </description>
+  <description>Verify that MavenProject.getParent() can lazily resolve the parent from repositories contributed by the
+    settings.</description>
 
   <build>
     <plugins>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4840/test-1/pom.xml b/core-it-suite/src/test/resources/mng-4840/test-1/pom.xml
index 911a7a3..6e418e0 100644
--- a/core-it-suite/src/test/resources/mng-4840/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4840/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4840</name>
-  <description>
-    Verify that builds fail straight when the current Maven version doesn't match a plugin's prerequisite.
-  </description>
+  <description>Verify that builds fail straight when the current Maven version doesn't match a plugin's prerequisite.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4840/test-2/pom.xml b/core-it-suite/src/test/resources/mng-4840/test-2/pom.xml
index 27fe4c9..3f25515 100644
--- a/core-it-suite/src/test/resources/mng-4840/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4840/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4840</name>
-  <description>
-    Verify that automatic plugin version resolution automatically skips plugin versions whose prerequisite on
-    the current Maven version isn't satisfied.
-  </description>
+  <description>Verify that automatic plugin version resolution automatically skips plugin versions whose prerequisite on
+    the current Maven version isn't satisfied.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4842/core/pom.xml b/core-it-suite/src/test/resources/mng-4842/core/pom.xml
index 75516ba..9cc1ed8 100644
--- a/core-it-suite/src/test/resources/mng-4842/core/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4842/core/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4842</name>
-  <description>
-    Verify that resolution of parent POMs for dependency POMs treats the remote repositories of the current
+  <description>Verify that resolution of parent POMs for dependency POMs treats the remote repositories of the current
     resolution request as dominant when merging with any repositories declared in the dependency POM. This
-    variant of the test checks dependency resolution by the core.
-  </description>
+    variant of the test checks dependency resolution by the core.</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4842/plugin/pom.xml b/core-it-suite/src/test/resources/mng-4842/plugin/pom.xml
index 2038037..a53e532 100644
--- a/core-it-suite/src/test/resources/mng-4842/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4842/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4842</name>
-  <description>
-    Verify that resolution of parent POMs for dependency POMs treats the remote repositories of the current
+  <description>Verify that resolution of parent POMs for dependency POMs treats the remote repositories of the current
     resolution request as dominant when merging with any repositories declared in the dependency POM. This
-    variant of the test checks manual dependency resolution by a plugin.
-  </description>
+    variant of the test checks manual dependency resolution by a plugin.</description>
 
   <build>
     <plugins>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve-transitive</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4872/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4872/consumer/pom.xml
index da5c5ac..cf8ba2c 100644
--- a/core-it-suite/src/test/resources/mng-4872/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4872/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4872 :: Dependency Consumer</name>
-  <description>
-    Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.
-  </description>
+  <description>Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.</description>
 
   <dependencies>
     <dependency>
@@ -73,10 +69,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4872/pom.xml b/core-it-suite/src/test/resources/mng-4872/pom.xml
index 09fed84..aaee4e7 100644
--- a/core-it-suite/src/test/resources/mng-4872/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4872/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4872</name>
-  <description>
-    Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.
-  </description>
+  <description>Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.</description>
 
   <modules>
     <module>producer</module>
diff --git a/core-it-suite/src/test/resources/mng-4872/producer/pom.xml b/core-it-suite/src/test/resources/mng-4872/producer/pom.xml
index c80fb66..6f81baa 100644
--- a/core-it-suite/src/test/resources/mng-4872/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4872/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4872 :: Dependency Producer</name>
-  <description>
-    Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.
-  </description>
+  <description>Test that resolution of (attached) artifacts from the reactor doesn't cause exclusions to be lost.</description>
 
   <dependencies>
     <dependency>
@@ -50,11 +46,11 @@
         <executions>
           <execution>
             <id>package</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
               <attachedFile>pom.xml</attachedFile>
diff --git a/core-it-suite/src/test/resources/mng-4874/pom.xml b/core-it-suite/src/test/resources/mng-4874/pom.xml
index 3d11939..7dc5c20 100644
--- a/core-it-suite/src/test/resources/mng-4874/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4874/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: MNG-4874</name>
-  <description>
-    Verify that deployment of a plugin updates the metadata's "latest" field.
-  </description>
+  <description>Verify that deployment of a plugin updates the metadata's "latest" field.</description>
 
   <distributionManagement>
     <repository>
@@ -51,13 +47,13 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>latest</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4877/pom.xml b/core-it-suite/src/test/resources/mng-4877/pom.xml
index 3654f53..a27f401 100644
--- a/core-it-suite/src/test/resources/mng-4877/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4877/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4877</name>
-  <description>
-    Verify that configured private key and passphrase are used for (SSH) deployment.
-  </description>
+  <description>Verify that configured private key and passphrase are used for (SSH) deployment.</description>
 
   <distributionManagement>
     <repository>
@@ -40,13 +36,6 @@
   </distributionManagement>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-wagon</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -58,15 +47,22 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>install</goal>
               <goal>deploy</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-wagon</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4883/pom.xml b/core-it-suite/src/test/resources/mng-4883/pom.xml
index 836039f..e894c3c 100644
--- a/core-it-suite/src/test/resources/mng-4883/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4883/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4883</name>
-  <description>
-    Verify that dependency resolution fails if version ranges with an empty intersection are encountered.
-  </description>
+  <description>Verify that dependency resolution fails if version ranges with an empty intersection are encountered.</description>
 
   <dependencies>
     <dependency>
@@ -60,10 +56,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4890/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4890/mod-a/pom.xml
index c6fa484..262a3df 100644
--- a/core-it-suite/src/test/resources/mng-4890/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4890/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,10 +27,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4890 :: Module A</name>
-  <description>
-    Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
-    dependencies and the modules which need to be build.
-  </description>
+  <description>Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
+    dependencies and the modules which need to be build.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4890/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4890/mod-b/pom.xml
index cad1ea1..3422a07 100644
--- a/core-it-suite/src/test/resources/mng-4890/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4890/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4890 :: Module B</name>
-  <description>
-    Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
-    dependencies and the modules which need to be build.
-  </description>
+  <description>Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
+    dependencies and the modules which need to be build.</description>
 
   <dependencies>
     <dependency>
@@ -51,10 +47,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4890/pom.xml b/core-it-suite/src/test/resources/mng-4890/pom.xml
index 46fbc8a..650b584 100644
--- a/core-it-suite/src/test/resources/mng-4890/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4890/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,14 +26,14 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4890 :: Aggregator</name>
-  <description>
-    Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
-    dependencies and the modules which need to be build.
-  </description>
+  <description>Verify that the make-like reactor mode considers actual project versions when calculating the inter-module
+    dependencies and the modules which need to be build.</description>
 
   <modules>
-    <module>mod-a</module> <!-- mod-a:0.2-SNAPSHOT -->
-    <module>mod-b</module> <!-- depends on mod-a:0.1, not mod-a:0.2-SNAPSHOT, so mod-a isn't a prerequisite for mod-b -->
+    <module>mod-a</module>
+    <!-- mod-a:0.2-SNAPSHOT -->
+    <module>mod-b</module>
+    <!-- depends on mod-a:0.1, not mod-a:0.2-SNAPSHOT, so mod-a isn't a prerequisite for mod-b -->
   </modules>
 
   <build>
@@ -47,10 +45,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4891/consumer/pom.xml b/core-it-suite/src/test/resources/mng-4891/consumer/pom.xml
index 5d54345..3413ce9 100644
--- a/core-it-suite/src/test/resources/mng-4891/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4891/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4891 :: Dependency Consumer</name>
-  <description>
-    Verify that resolution of a local snapshot still succeeds even if the maven-metadata-local.xml has been
-    corrupted by a remote repository that misuses the same repo id, i.e. "local".
-  </description>
+  <description>Verify that resolution of a local snapshot still succeeds even if the maven-metadata-local.xml has been
+    corrupted by a remote repository that misuses the same repo id, i.e. "local".</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4891/producer/pom.xml b/core-it-suite/src/test/resources/mng-4891/producer/pom.xml
index 73419e2..0b043fe 100644
--- a/core-it-suite/src/test/resources/mng-4891/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4891/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4891 :: Dependency Producer</name>
-  <description>
-    Verify that resolution of a local snapshot still succeeds even if the maven-metadata-local.xml has been
-    corrupted by a remote repository that misuses the same repo id, i.e. "local".
-  </description>
+  <description>Verify that resolution of a local snapshot still succeeds even if the maven-metadata-local.xml has been
+    corrupted by a remote repository that misuses the same repo id, i.e. "local".</description>
 
   <build>
     <plugins>
@@ -42,22 +38,22 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
           </execution>
           <execution>
             <id>deploy</id>
-            <phase>validate</phase>
             <goals>
               <goal>deploy-file</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <!-- NOTE: Having the repo id clash with the id used internally for the local repo is the crucial piece here -->
               <repositoryId>local</repositoryId>
diff --git a/core-it-suite/src/test/resources/mng-4895/pom.xml b/core-it-suite/src/test/resources/mng-4895/pom.xml
index 879f940..37dfd28 100644
--- a/core-it-suite/src/test/resources/mng-4895/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4895/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4895</name>
-  <description>
-    Verify that the classes constituting the Maven API are always loaded from the Maven core realm even if the plugin
-    realm contains a 3rd party dependency that contains (non-relocated) duplicates of API classes.
-  </description>
+  <description>Verify that the classes constituting the Maven API are always loaded from the Maven core realm even if the plugin
+    realm contains a 3rd party dependency that contains (non-relocated) duplicates of API classes.</description>
 
   <build>
     <plugins>
@@ -39,6 +35,10 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-dependency-resolution</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <compileClassPath>target/classpath.txt</compileClassPath>
+          <significantPathLevels>1</significantPathLevels>
+        </configuration>
         <dependencies>
           <dependency>
             <!-- This JAR contains stubs of essential classes of the Maven API, they must not get used -->
@@ -47,17 +47,13 @@
             <version>0.1</version>
           </dependency>
         </dependencies>
-        <configuration>
-          <compileClassPath>target/classpath.txt</compileClassPath>
-          <significantPathLevels>1</significantPathLevels>
-        </configuration>
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4913/pom.xml b/core-it-suite/src/test/resources/mng-4913/pom.xml
index 6fd13eb..e52084e 100644
--- a/core-it-suite/src/test/resources/mng-4913/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4913/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4913</name>
-  <description>
-    Verify that user properties from the CLI do not override POM properties of transitive dependencies.
-  </description>
+  <description>Verify that user properties from the CLI do not override POM properties of transitive dependencies.</description>
 
   <dependencies>
     <dependency>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4919/pom.xml b/core-it-suite/src/test/resources/mng-4919/pom.xml
index 7fdd7c4..977190b 100644
--- a/core-it-suite/src/test/resources/mng-4919/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4919/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>same-goal-twice</packaging>
 
   <name>Maven Integration Test :: MNG-4919</name>
-  <description>
-    Verify that lifecycle mappings can bind a goal twice, say in different phases.
-  </description>
+  <description>Verify that lifecycle mappings can bind a goal twice, say in different phases.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4925/pom.xml b/core-it-suite/src/test/resources/mng-4925/pom.xml
index 173ab4f..af5825c 100644
--- a/core-it-suite/src/test/resources/mng-4925/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4925/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4925</name>
-  <description>
-    Verify that the container's lookup realm is set to the plugin realm during a mojo execution as otherwise
-    string-based lookups can fail to load the proper type.
-  </description>
+  <description>Verify that the container's lookup realm is set to the plugin realm during a mojo execution as otherwise
+    string-based lookups can fail to load the proper type.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>it</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4936/pom.xml b/core-it-suite/src/test/resources/mng-4936/pom.xml
index 566eaf2..ebb71e8 100644
--- a/core-it-suite/src/test/resources/mng-4936/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4936/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4936</name>
-  <description>
-    Verify that loading of an event spy extension from CLI works.
-  </description>
+  <description>Verify that loading of an event spy extension from CLI works.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4955/dep/pom.xml b/core-it-suite/src/test/resources/mng-4955/dep/pom.xml
index 4456e86..f6005ce 100644
--- a/core-it-suite/src/test/resources/mng-4955/dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4955/dep/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4955 :: Dependency</name>
-  <description>
-    Verify that dependency resolution prefers newer local snapshots over outdated remote snapshots that use the new
-    metadata format.
-  </description>
+  <description>Verify that dependency resolution prefers newer local snapshots over outdated remote snapshots that use the new
+    metadata format.</description>
 
   <build>
     <plugins>
@@ -42,12 +38,12 @@
         <executions>
           <execution>
             <id>install</id>
-            <phase>validate</phase>
             <goals>
               <goal>set</goal>
               <goal>attach-pom</goal>
               <goal>install</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <mainFile>dep.jar</mainFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4955/pom.xml b/core-it-suite/src/test/resources/mng-4955/pom.xml
index e1aa70c..0db5a79 100644
--- a/core-it-suite/src/test/resources/mng-4955/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4955/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4955</name>
-  <description>
-    Verify that dependency resolution prefers newer local snapshots over outdated remote snapshots that use the new
-    metadata format.
-  </description>
+  <description>Verify that dependency resolution prefers newer local snapshots over outdated remote snapshots that use the new
+    metadata format.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4960/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-4960/mod-a/pom.xml
index 19a2ed0..2d0d20d 100644
--- a/core-it-suite/src/test/resources/mng-4960/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4960/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4960 :: Module A</name>
-  <description>
-    Verify that the make-like reactor mode properly resumes.
-  </description>
+  <description>Verify that the make-like reactor mode properly resumes.</description>
 
   <build>
     <plugins>
@@ -41,10 +37,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4960/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-4960/mod-b/pom.xml
index e4b8073..2bfe82a 100644
--- a/core-it-suite/src/test/resources/mng-4960/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4960/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4960 :: Module B</name>
-  <description>
-    Verify that the make-like reactor mode properly resumes.
-  </description>
+  <description>Verify that the make-like reactor mode properly resumes.</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4960/pom.xml b/core-it-suite/src/test/resources/mng-4960/pom.xml
index bb4e32b..d775814 100644
--- a/core-it-suite/src/test/resources/mng-4960/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4960/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4960 :: Aggregator</name>
-  <description>
-    Verify that the make-like reactor mode properly resumes.
-  </description>
+  <description>Verify that the make-like reactor mode properly resumes.</description>
 
   <modules>
     <module>mod-a</module>
@@ -46,10 +42,10 @@
         <executions>
           <execution>
             <id>default</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <logFile>target/touch.txt</logFile>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4963/pom.xml b/core-it-suite/src/test/resources/mng-4963/pom.xml
index 543bc09..8e51ed6 100644
--- a/core-it-suite/src/test/resources/mng-4963/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4963/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,9 +31,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4963</name>
-  <description>
-    Verify that a released parent POM can be resolved when the settings define only a snapshot repository
+  <description>Verify that a released parent POM can be resolved when the settings define only a snapshot repository
     which is subject to mirroring. Technically, this means to properly aggregate the built-in central repo
-    definition with the declared snapshot repo when both are mirrored.
-  </description>
+    definition with the declared snapshot repo when both are mirrored.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4966/pom.xml b/core-it-suite/src/test/resources/mng-4966/pom.xml
index eb4bd41..9008666 100644
--- a/core-it-suite/src/test/resources/mng-4966/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4966/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,15 +25,13 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-4966</name>
-  <description>
-    Verify that URLs in the effective model retain successive slashes which are significant in certain domains.
-  </description>
+  <description>Verify that URLs in the effective model retain successive slashes which are significant in certain domains.</description>
 
   <url>file:////UNC/server/dir/</url>
   <scm>
-    <url>ssh://localhost//home/user/</url>
     <connection>scm:hg:ssh://localhost//home/user/</connection>
     <developerConnection>[fetch=]http://server.org/[push=]ssh://server.org/</developerConnection>
+    <url>ssh://localhost//home/user/</url>
   </scm>
 
   <build>
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4973/pom.xml b/core-it-suite/src/test/resources/mng-4973/pom.xml
index 2838863..40a089a 100644
--- a/core-it-suite/src/test/resources/mng-4973/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4973/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4973</name>
-  <description>
-    Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
+  <description>Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
     the extensions of the current module. More technically speaking, the plugin class realm cache must be keyed
-    by the current project and its build extensions as well.
-  </description>
+    by the current project and its build extensions as well.</description>
 
   <modules>
     <!-- both modules run the same plugin, sub-a uses no build extension, sub-d does -->
diff --git a/core-it-suite/src/test/resources/mng-4973/sub-a/pom.xml b/core-it-suite/src/test/resources/mng-4973/sub-a/pom.xml
index 3cbd403..b14e7c5 100644
--- a/core-it-suite/src/test/resources/mng-4973/sub-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4973/sub-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4973 :: Sub-A</name>
-  <description>
-    Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
+  <description>Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
     the extensions of the current module. More technically speaking, the plugin class realm cache must be keyed
-    by the current project and its build extensions as well.
-  </description>
+    by the current project and its build extensions as well.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <dependencies>
                 <dependency>
diff --git a/core-it-suite/src/test/resources/mng-4973/sub-b/pom.xml b/core-it-suite/src/test/resources/mng-4973/sub-b/pom.xml
index fb32a5d..162aba8 100644
--- a/core-it-suite/src/test/resources/mng-4973/sub-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4973/sub-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4973 :: Sub-B</name>
-  <description>
-    Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
+  <description>Verify that a given plugin within a reactor build gets run with the proper class loader that is wired to
     the extensions of the current module. More technically speaking, the plugin class realm cache must be keyed
-    by the current project and its build extensions as well.
-  </description>
+    by the current project and its build extensions as well.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <propertiesFile>target/artifact.properties</propertiesFile>
               <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-4975/pom.xml b/core-it-suite/src/test/resources/mng-4975/pom.xml
index 8b71276..cf5a8e5 100644
--- a/core-it-suite/src/test/resources/mng-4975/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4975/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-4975</name>
-  <description>
-    Test that plugin executions (in the same phase) are properly ordered after profile injection.
-  </description>
+  <description>Test that plugin executions (in the same phase) are properly ordered after profile injection.</description>
 
   <build>
     <plugins>
@@ -44,30 +40,30 @@
         <executions>
           <execution>
             <id>one</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <string>1</string>
             </configuration>
           </execution>
           <execution>
             <id>two</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <string>2</string>
             </configuration>
           </execution>
           <execution>
             <id>three</id>
-            <phase>validate</phase>
             <goals>
               <goal>log-string</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <string>3</string>
             </configuration>
@@ -88,10 +84,10 @@
             <executions>
               <execution>
                 <id>four</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>log-string</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <string>4</string>
                 </configuration>
@@ -111,10 +107,10 @@
             <executions>
               <execution>
                 <id>five</id>
-                <phase>validate</phase>
                 <goals>
                   <goal>log-string</goal>
                 </goals>
+                <phase>validate</phase>
                 <configuration>
                   <string>5</string>
                 </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4987/pom.xml b/core-it-suite/src/test/resources/mng-4987/pom.xml
index 0d8c5d3..f385f84 100644
--- a/core-it-suite/src/test/resources/mng-4987/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4987/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4987</name>
-  <description>
-    Verify that snapshot version resolution from multiple (3+) repositories properly selects the repo with the
-    newest metadata according to its timestamps, regardless of the declaration order of the repos.
-  </description>
+  <description>Verify that snapshot version resolution from multiple (3+) repositories properly selects the repo with the
+    newest metadata according to its timestamps, regardless of the declaration order of the repos.</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4991/pom.xml b/core-it-suite/src/test/resources/mng-4991/pom.xml
index 8edcf04..ac14ece 100644
--- a/core-it-suite/src/test/resources/mng-4991/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4991/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -34,9 +32,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-4991</name>
-  <description>
-    Verify that the nonProxyHosts settings is respected.
-  </description>
+  <description>Verify that the nonProxyHosts settings is respected.</description>
 
   <dependencies>
     <dependency>
@@ -60,10 +56,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-4992/pom.xml b/core-it-suite/src/test/resources/mng-4992/pom.xml
index 5f8ceb3..10ac62d 100644
--- a/core-it-suite/src/test/resources/mng-4992/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4992/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-4992</name>
-  <description>
-    Verify that plugin parameters of type java.util.Properties can be configured like any other Map-style parameter.
-  </description>
+  <description>Verify that plugin parameters of type java.util.Properties can be configured like any other Map-style parameter.</description>
 
   <build>
     <plugins>
@@ -48,10 +44,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5000/different-from-artifactId/pom.xml b/core-it-suite/src/test/resources/mng-5000/different-from-artifactId/pom.xml
index 1f7c369..bbb061a 100644
--- a/core-it-suite/src/test/resources/mng-5000/different-from-artifactId/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5000/different-from-artifactId/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,10 +31,8 @@
   <artifactId>child</artifactId>
 
   <name>Maven Integration Test :: MNG-5000 :: Child</name>
-  <description>
-    Verify that child path aware URL adjustment still works when the child's artifactId doesn't match the name
-    of its base directory as given in the parent's module section.
-  </description>
+  <description>Verify that child path aware URL adjustment still works when the child's artifactId doesn't match the name
+    of its base directory as given in the parent's module section.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/pom.properties</outputFile>
               <expressions>
diff --git a/core-it-suite/src/test/resources/mng-5000/parent/pom.xml b/core-it-suite/src/test/resources/mng-5000/parent/pom.xml
index a4e5f36..dd41ea5 100644
--- a/core-it-suite/src/test/resources/mng-5000/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5000/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,26 +26,24 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5000</name>
-  <description>
-    Verify that child path aware URL adjustment still works when the child's artifactId doesn't match the name
-    of its base directory as given in the parent's module section.
-  </description>
+  <description>Verify that child path aware URL adjustment still works when the child's artifactId doesn't match the name
+    of its base directory as given in the parent's module section.</description>
+
+  <url>http://project.url/parent</url>
 
   <modules>
     <module>../different-from-artifactId</module>
   </modules>
 
-  <url>http://project.url/parent</url>
-
   <scm>
-    <url>http://viewvc.project.url/parent</url>
     <connection>http://scm.project.url/parent</connection>
     <developerConnection>https://scm.project.url/parent</developerConnection>
+    <url>http://viewvc.project.url/parent</url>
   </scm>
   <distributionManagement>
     <site>
-      <url>http://site.project.url/parent</url>
       <id>parent.site</id>
+      <url>http://site.project.url/parent</url>
     </site>
   </distributionManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5006/pom.xml b/core-it-suite/src/test/resources/mng-5006/pom.xml
index 6039ef4..a2ed293 100644
--- a/core-it-suite/src/test/resources/mng-5006/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5006/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5006</name>
-  <description>
-    Verify that resolution of parent POMs of dependencies that use a version range is not restricted to the
+  <description>Verify that resolution of parent POMs of dependencies that use a version range is not restricted to the
     repository from which the specific dependency version was picked. Or put differently, the fact that a:0.1
     was found in repo-1 does not mean parents/dependencies of a:0.1 are also located in that same repo, they
-    could be in any of the originally declared repos.
-  </description>
+    could be in any of the originally declared repos.</description>
 
   <dependencies>
     <dependency>
@@ -58,10 +54,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5009/pom.xml b/core-it-suite/src/test/resources/mng-5009/pom.xml
index b66e309..8033d23 100644
--- a/core-it-suite/src/test/resources/mng-5009/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5009/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5009</name>
-  <description>
-    Verify that aggregators POMs forming a cycle fail gracefully with a proper error message.
-  </description>
+  <description>Verify that aggregators POMs forming a cycle fail gracefully with a proper error message.</description>
 
   <modules>
     <module>pom-2.xml</module>
diff --git a/core-it-suite/src/test/resources/mng-5011/pom.xml b/core-it-suite/src/test/resources/mng-5011/pom.xml
index 01688bb..6360d28 100644
--- a/core-it-suite/src/test/resources/mng-5011/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5011/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-5011</name>
-  <description>
-    Verify that plugin parameters of type array/collection can be configured using system properties from the CLI.
-  </description>
+  <description>Verify that plugin parameters of type array/collection can be configured using system properties from the CLI.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>cli-config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5012/pom.xml b/core-it-suite/src/test/resources/mng-5012/pom.xml
index 7cc23d7..e4bac90 100644
--- a/core-it-suite/src/test/resources/mng-5012/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5012/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-5012</name>
-  <description>
-    Verify that plugin parameters of type array/collection can be configured from expressions/defaults that
-    actually resolve to a collection/array.
-  </description>
+  <description>Verify that plugin parameters of type array/collection can be configured from expressions/defaults that
+    actually resolve to a collection/array.</description>
 
   <build>
     <plugins>
@@ -44,10 +40,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5013/pom.xml b/core-it-suite/src/test/resources/mng-5013/pom.xml
index eaf745d..57cbc64 100644
--- a/core-it-suite/src/test/resources/mng-5013/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5013/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-5013</name>
-  <description>
-    Verify that plugin parameter beans can be configured from a single value.
-  </description>
+  <description>Verify that plugin parameter beans can be configured from a single value.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         </configuration>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5019/pom.xml b/core-it-suite/src/test/resources/mng-5019/pom.xml
index ae19911..6bddb71 100644
--- a/core-it-suite/src/test/resources/mng-5019/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5019/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5019</name>
-  <description>
-    Verify that plugins executed by other plugins (like reports executed by the maven-site-plugin) can successfully
+  <description>Verify that plugins executed by other plugins (like reports executed by the maven-site-plugin) can successfully
     look up components via string-based roles from their plugin realm as denoted by the thread context class loader,
-    even if those components are also contained in the parent plugin realm.
-  </description>
+    even if those components are also contained in the parent plugin realm.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <version>0.1</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>it</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5064/pom.xml b/core-it-suite/src/test/resources/mng-5064/pom.xml
index 65da4f2..327af63 100644
--- a/core-it-suite/src/test/resources/mng-5064/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5064/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-5064</name>
-  <description>
-    Verify that snapshot updates can be completely suppressed via the CLI arg -nsu. The initial retrieval of a
-    missing snapshot should not be suppressed though.
-  </description>
+  <description>Verify that snapshot updates can be completely suppressed via the CLI arg -nsu. The initial retrieval of a
+    missing snapshot should not be suppressed though.</description>
 
   <dependencies>
     <dependency>
@@ -53,10 +49,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5096/pom.xml b/core-it-suite/src/test/resources/mng-5096/pom.xml
index 8bf6cee..e86cf12 100644
--- a/core-it-suite/src/test/resources/mng-5096/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5096/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5096</name>
-  <description>
-    Verify that exclusions on dependencies whose type implies a classifier are effective. For those dependencies,
+  <description>Verify that exclusions on dependencies whose type implies a classifier are effective. For those dependencies,
     the versionless management key of the dependency is different from the versionless id of the resulting artifact
-    which needs to be considered.
-  </description>
+    which needs to be considered.</description>
 
   <dependencies>
     <dependency>
@@ -63,10 +59,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5135/module/pom.xml b/core-it-suite/src/test/resources/mng-5135/module/pom.xml
index f5263d3..176e7ec 100644
--- a/core-it-suite/src/test/resources/mng-5135/module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5135/module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5135 :: Module</name>
-  <description>
-    Verify that dependency resolution for aggregator mojos considers the extensions that apply to a given module.
-  </description>
+  <description>Verify that dependency resolution for aggregator mojos considers the extensions that apply to a given module.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-5135/pom.xml b/core-it-suite/src/test/resources/mng-5135/pom.xml
index 22762cc..474b469 100644
--- a/core-it-suite/src/test/resources/mng-5135/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5135/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5135</name>
-  <description>
-    Verify that dependency resolution for aggregator mojos considers the extensions that apply to a given module.
-  </description>
+  <description>Verify that dependency resolution for aggregator mojos considers the extensions that apply to a given module.</description>
 
   <modules>
     <module>module</module>
diff --git a/core-it-suite/src/test/resources/mng-5137/consumer/pom.xml b/core-it-suite/src/test/resources/mng-5137/consumer/pom.xml
index 11dcf7a..ba7d71f 100644
--- a/core-it-suite/src/test/resources/mng-5137/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5137/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5137 :: Consumer</name>
-  <description>
-    Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
+  <description>Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
     by an aggregator mojo. Here, reactor resolution needs to search the forked project instances for build output,
-    not the project instances from the main build.
-  </description>
+    not the project instances from the main build.</description>
 
   <dependencies>
     <dependency>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>initialize</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5137/pom.xml b/core-it-suite/src/test/resources/mng-5137/pom.xml
index 3a069f0..7be6d0f 100644
--- a/core-it-suite/src/test/resources/mng-5137/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5137/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5137</name>
-  <description>
-    Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
+  <description>Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
     by an aggregator mojo. Here, reactor resolution needs to search the forked project instances for build output,
-    not the project instances from the main build.
-  </description>
+    not the project instances from the main build.</description>
 
   <modules>
     <module>producer</module>
diff --git a/core-it-suite/src/test/resources/mng-5137/producer/pom.xml b/core-it-suite/src/test/resources/mng-5137/producer/pom.xml
index 522b8ec..926e696 100644
--- a/core-it-suite/src/test/resources/mng-5137/producer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5137/producer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,11 +26,9 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-5137 :: Producer</name>
-  <description>
-    Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
+  <description>Verify that reactor resolution also works within a forked multi-module lifecycle, i.e. a lifecycle fork caused
     by an aggregator mojo. Here, reactor resolution needs to search the forked project instances for build output,
-    not the project instances from the main build.
-  </description>
+    not the project instances from the main build.</description>
 
   <build>
     <plugins>
@@ -43,13 +39,13 @@
         <executions>
           <execution>
             <id>package</id>
+            <goals>
+              <goal>set</goal>
+            </goals>
             <phase>initialize</phase>
             <configuration>
               <mainFile>pom.xml</mainFile>
             </configuration>
-            <goals>
-              <goal>set</goal>
-            </goals>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5175/pom.xml b/core-it-suite/src/test/resources/mng-5175/pom.xml
index 6d08b45..092706d 100644
--- a/core-it-suite/src/test/resources/mng-5175/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5175/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng5175</groupId>
   <artifactId>test-project</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <name>test-project</name>
 
   <build>
diff --git a/core-it-suite/src/test/resources/mng-5206/pom.xml b/core-it-suite/src/test/resources/mng-5206/pom.xml
index a229738..e98b8af 100644
--- a/core-it-suite/src/test/resources/mng-5206/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5206/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5206</name>
-  <description>
-    Verify Plexus phases has honoured by Maven: Contextualizable, Disposable
-  </description>
+  <description>Verify Plexus phases has honoured by Maven: Contextualizable, Disposable</description>
 
   <build>
     <plugins>
@@ -40,10 +36,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>do-nothing</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5207/application/pom.xml b/core-it-suite/src/test/resources/mng-5207/application/pom.xml
index 959944e..2f3af5e 100755
--- a/core-it-suite/src/test/resources/mng-5207/application/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5207/application/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>bugs.maven.issue</groupId>
     <artifactId>master</artifactId>
     <version>x-SNAPSHOT</version>
   </parent>
-
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>application</artifactId>
   <version>1-SNAPSHOT</version>
   <packaging>jar</packaging>
diff --git a/core-it-suite/src/test/resources/mng-5207/delegate/pom.xml b/core-it-suite/src/test/resources/mng-5207/delegate/pom.xml
index ff0ec0e..f15567f 100755
--- a/core-it-suite/src/test/resources/mng-5207/delegate/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5207/delegate/pom.xml
@@ -1,28 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <parent>
-        <groupId>bugs.maven.issue</groupId>
-        <artifactId>master</artifactId>
-        <version>x-SNAPSHOT</version>
-    </parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>bugs.maven.issue</groupId>
+    <artifactId>master</artifactId>
+    <version>x-SNAPSHOT</version>
+  </parent>
   <artifactId>delegate</artifactId>
   <version>2-SNAPSHOT</version>
-    <packaging>jar</packaging>
-    <name>Issue EJB Delegate</name>
-    <description><![CDATA[Demonstration of issue with EJB delegate.]]></description>
+  <packaging>jar</packaging>
+  <name>Issue EJB Delegate</name>
+  <description><![CDATA[Demonstration of issue with EJB delegate.]]></description>
 
-    <dependencies>
-        <dependency>
-            <groupId>bugs.maven.issue</groupId>
+  <dependencies>
+    <dependency>
+      <groupId>bugs.maven.issue</groupId>
       <artifactId>ejb</artifactId>
       <classifier>client</classifier>
       <type>ejb-client</type>
-        </dependency>
-    </dependencies>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5207/ejb/pom.xml b/core-it-suite/src/test/resources/mng-5207/ejb/pom.xml
index 12f5b12..48ba376 100755
--- a/core-it-suite/src/test/resources/mng-5207/ejb/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5207/ejb/pom.xml
@@ -1,21 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>bugs.maven.issue</groupId>
     <artifactId>master</artifactId>
     <version>x-SNAPSHOT</version>
   </parent>
-
-  <modelVersion>4.0.0</modelVersion>
   <artifactId>ejb</artifactId>
   <version>2-SNAPSHOT</version>
   <packaging>ejb</packaging>
   <name>Issue EJB</name>
   <description><![CDATA[Demonstration of issue with EJB client.]]></description>
 
+  <dependencies>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+    </dependency>
+  </dependencies>
+
   <build>
     <pluginManagement>
       <plugins>
@@ -33,11 +37,4 @@
     </pluginManagement>
   </build>
 
-  <dependencies>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-  </dependencies>
-
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5207/ejb/src/main/java/maven/bugs/IssueHome.java b/core-it-suite/src/test/resources/mng-5207/ejb/src/main/java/maven/bugs/IssueHome.java
index 8496726..86a6f80 100755
--- a/core-it-suite/src/test/resources/mng-5207/ejb/src/main/java/maven/bugs/IssueHome.java
+++ b/core-it-suite/src/test/resources/mng-5207/ejb/src/main/java/maven/bugs/IssueHome.java
@@ -1,5 +1,21 @@
+/*
+ * 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.
+ */
 package maven.bugs;
 
-public interface IssueHome
-{
-}
+public interface IssueHome {}
diff --git a/core-it-suite/src/test/resources/mng-5207/pom.xml b/core-it-suite/src/test/resources/mng-5207/pom.xml
index cd8ca2c..afa2cef 100755
--- a/core-it-suite/src/test/resources/mng-5207/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5207/pom.xml
@@ -1,19 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>bugs.maven.issue</groupId>
-    <artifactId>builder</artifactId>
-    <packaging>pom</packaging>
-    <name>Builder for Issue</name>
-    <version>x-SNAPSHOT</version>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>bugs.maven.issue</groupId>
+  <artifactId>builder</artifactId>
+  <version>x-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Builder for Issue</name>
 
-    <modules>
-        <module>application</module>
-        <module>delegate</module>
-        <module>ejb</module>
-    </modules>
+  <modules>
+    <module>application</module>
+    <module>delegate</module>
+    <module>ejb</module>
+  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5208/project/pom.xml b/core-it-suite/src/test/resources/mng-5208/project/pom.xml
index e276556..2592e21 100644
--- a/core-it-suite/src/test/resources/mng-5208/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5208/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -49,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5208/project/sub-1/pom.xml b/core-it-suite/src/test/resources/mng-5208/project/sub-1/pom.xml
index d035e3b..7822bb3 100644
--- a/core-it-suite/src/test/resources/mng-5208/project/sub-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5208/project/sub-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5208/project/sub-2/pom.xml b/core-it-suite/src/test/resources/mng-5208/project/sub-2/pom.xml
index a8d72b6..b229e5d 100644
--- a/core-it-suite/src/test/resources/mng-5208/project/sub-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5208/project/sub-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5208/spy/pom.xml b/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
index 2a69a2b..fc7f270 100644
--- a/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.core.its.mng5208</groupId>
   <artifactId>event-spy</artifactId>
@@ -55,4 +54,3 @@
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/EventLoggerSpy.java b/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/EventLoggerSpy.java
deleted file mode 100644
index c8fc349..0000000
--- a/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/EventLoggerSpy.java
+++ /dev/null
@@ -1,24 +0,0 @@
-
-import org.apache.maven.eventspy.AbstractEventSpy;
-import org.apache.maven.eventspy.EventSpy;
-import org.apache.maven.execution.ExecutionEvent;
-import org.codehaus.plexus.component.annotations.Component;
-
-@Component( role=EventSpy.class )
-public class EventLoggerSpy extends AbstractEventSpy {
-
-
-    @Override
-    public void init(Context context) throws Exception {
-    }
-
-    @Override
-    public void onEvent(Object event) throws Exception {
-        if (event instanceof ExecutionEvent) {
-
-            ExecutionEvent executionEvent = (ExecutionEvent) event;
-            System.out.println( "executionEvent:" + executionEvent.getType()  + "/" + executionEvent.getProject().getId());
-        }
-    }
-}
-
diff --git a/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/mng5208/EventLoggerSpy.java b/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/mng5208/EventLoggerSpy.java
new file mode 100644
index 0000000..43e5f77
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5208/spy/src/main/java/mng5208/EventLoggerSpy.java
@@ -0,0 +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.
+ */
+package mng5208;
+
+import org.apache.maven.eventspy.AbstractEventSpy;
+import org.apache.maven.eventspy.EventSpy;
+import org.apache.maven.execution.ExecutionEvent;
+import org.codehaus.plexus.component.annotations.Component;
+
+@Component(role = EventSpy.class)
+public class EventLoggerSpy extends AbstractEventSpy {
+
+    @Override
+    public void init(Context context) throws Exception {}
+
+    @Override
+    public void onEvent(Object event) throws Exception {
+        if (event instanceof ExecutionEvent) {
+
+            ExecutionEvent executionEvent = (ExecutionEvent) event;
+            System.out.println("executionEvent:" + executionEvent.getType() + "/"
+                    + executionEvent.getProject().getId());
+        }
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-5214/consumer/pom.xml b/core-it-suite/src/test/resources/mng-5214/consumer/pom.xml
index 6bee01a..a6ddd8b 100644
--- a/core-it-suite/src/test/resources/mng-5214/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5214/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,9 +29,7 @@
   <artifactId>consumer</artifactId>
 
   <name>Maven Integration Test :: MNG-5214 :: Consumer</name>
-  <description>
-    Test that a dependency on a type other than jar/test-jar/ejb is not mapped to target/classes.
-  </description>
+  <description>Test that a dependency on a type other than jar/test-jar/ejb is not mapped to target/classes.</description>
 
   <dependencies>
     <!-- This module depends *only* on the test JAR -->
@@ -54,10 +50,10 @@
         <executions>
           <execution>
             <id>compile-classpath</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve-one-dependency</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <scope>compile</scope>
               <groupId>${project.groupId}</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5214/dependency/pom.xml b/core-it-suite/src/test/resources/mng-5214/dependency/pom.xml
index 364afbb..e1dc482 100644
--- a/core-it-suite/src/test/resources/mng-5214/dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5214/dependency/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -31,8 +29,7 @@
   <artifactId>dependency</artifactId>
 
   <name>Maven Integration Test :: MNG-5214 :: Dependency</name>
-  <description>A very dull project, which exists only so that its g:a:v is in the reactor.
-  </description>
+  <description>A very dull project, which exists only so that its g:a:v is in the reactor.</description>
 
   <build>
     <outputDirectory>classes-main</outputDirectory>
@@ -40,44 +37,44 @@
   </build>
 
   <profiles>
-  <profile>
-    <id>createWsdl</id>
-    <build>
-      <plugins>
-  <plugin>
-    <groupId>org.apache.maven.its.plugins</groupId>
-    <artifactId>maven-it-plugin-artifact</artifactId>
-    <version>2.1-SNAPSHOT</version>
-    <executions>
-      <execution>
-        <id>attach-artifacts</id>
-        <phase>generate-resources</phase>
-        <goals>
-    <goal>attach</goal>
-        </goals>
-        <configuration>
-    <attachedFile>notmuch.wsdl</attachedFile>
-    <artifactType>wsdl</artifactType>
-        </configuration>
-      </execution>
-      <execution>
-        <id>install</id>
-        <phase>generate-resources</phase>
-        <configuration>
-    <pomFile>pom.xml</pomFile>
-    <!-- borrow the POM as the main artifact -->
-    <mainFile>pom.xml</mainFile>
-        </configuration>
-        <goals>
-    <goal>set</goal>
-    <goal>attach-pom</goal>
-    <goal>install</goal>
-        </goals>
-      </execution>
-    </executions>
-  </plugin>
-      </plugins>
-    </build>
-  </profile>
+    <profile>
+      <id>createWsdl</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.its.plugins</groupId>
+            <artifactId>maven-it-plugin-artifact</artifactId>
+            <version>2.1-SNAPSHOT</version>
+            <executions>
+              <execution>
+                <id>attach-artifacts</id>
+                <goals>
+                  <goal>attach</goal>
+                </goals>
+                <phase>generate-resources</phase>
+                <configuration>
+                  <attachedFile>notmuch.wsdl</attachedFile>
+                  <artifactType>wsdl</artifactType>
+                </configuration>
+              </execution>
+              <execution>
+                <id>install</id>
+                <goals>
+                  <goal>set</goal>
+                  <goal>attach-pom</goal>
+                  <goal>install</goal>
+                </goals>
+                <phase>generate-resources</phase>
+                <configuration>
+                  <pomFile>pom.xml</pomFile>
+                  <!-- borrow the POM as the main artifact -->
+                  <mainFile>pom.xml</mainFile>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5214/pom.xml b/core-it-suite/src/test/resources/mng-5214/pom.xml
index 6ba3cce..e95e91c 100644
--- a/core-it-suite/src/test/resources/mng-5214/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5214/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,12 +26,10 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5214</name>
-  <description>
-    Test that a dependency with a type other than jar, test-jar, or ejb-client
+  <description>Test that a dependency with a type other than jar, test-jar, or ejb-client
     *not* get assigned a reactor path (target/classes, e.g.) just
     because the corresponding 'jar'
-    artifact is in the reactor.
-  </description>
+    artifact is in the reactor.</description>
 
   <modules>
     <module>dependency</module>
diff --git a/core-it-suite/src/test/resources/mng-5222-mojo-deprecated-params/pom.xml b/core-it-suite/src/test/resources/mng-5222-mojo-deprecated-params/pom.xml
index 4fe36fd..0806058 100644
--- a/core-it-suite/src/test/resources/mng-5222-mojo-deprecated-params/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5222-mojo-deprecated-params/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng5222</name>
-  <description>
-    Test that ensures that warning about deprecated mojo params are generated.
-  </description>
+  <description>Test that ensures that warning about deprecated mojo params are generated.</description>
 
   <url>https://www.test.org</url>
 
diff --git a/core-it-suite/src/test/resources/mng-5224/pom.xml b/core-it-suite/src/test/resources/mng-5224/pom.xml
index aca8a26..5d5a28a 100644
--- a/core-it-suite/src/test/resources/mng-5224/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5224/pom.xml
@@ -1,10 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng5224</groupId>
   <artifactId>test-project</artifactId>
-  <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <name>test-project</name>
 
   <build>
@@ -15,10 +15,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>settings-read</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-a/pom.xml
index 5b825ac..a29f1bb 100644
--- a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-b/pom.xml
index 09323b5..50bac49 100644
--- a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-c/pom.xml b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-c/pom.xml
index 1cf1c9f..636d47f 100644
--- a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/mod-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/pom.xml b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/pom.xml
index f76a536..19d90a7 100644
--- a/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5230-make-reactor-with-excludes/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -49,10 +47,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5280/pom.xml b/core-it-suite/src/test/resources/mng-5280/pom.xml
index 68afa67..960d380 100644
--- a/core-it-suite/src/test/resources/mng-5280/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5280/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,10 +25,8 @@
   <version>0.1-SNAPSHOT</version>
 
   <name>Maven Integration Test :: MNG-5280</name>
-  <description>
-    Verify that repositories and pluginRepositories from profiles are ordered correctly. The order should be
-    the reversed order they are defined in settings.xml.
-  </description>
+  <description>Verify that repositories and pluginRepositories from profiles are ordered correctly. The order should be
+    the reversed order they are defined in settings.xml.</description>
 
   <dependencies>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-5338/project/pom.xml b/core-it-suite/src/test/resources/mng-5338/project/pom.xml
index acf7e02..4969bf2 100644
--- a/core-it-suite/src/test/resources/mng-5338/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5338/project/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5338</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5338/project/src/main/java/org/apache/maven/its/mng5338/App.java b/core-it-suite/src/test/resources/mng-5338/project/src/main/java/org/apache/maven/its/mng5338/App.java
index 5329396..da8469d 100644
--- a/core-it-suite/src/test/resources/mng-5338/project/src/main/java/org/apache/maven/its/mng5338/App.java
+++ b/core-it-suite/src/test/resources/mng-5338/project/src/main/java/org/apache/maven/its/mng5338/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5338;
 
 /*
@@ -23,10 +41,8 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5338/project/src/test/java/org/apache/maven/its/mng5338/AppTest.java b/core-it-suite/src/test/resources/mng-5338/project/src/test/java/org/apache/maven/its/mng5338/AppTest.java
index 97dbd72..de1b691 100644
--- a/core-it-suite/src/test/resources/mng-5338/project/src/test/java/org/apache/maven/its/mng5338/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5338/project/src/test/java/org/apache/maven/its/mng5338/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5338;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5382/pom.xml b/core-it-suite/src/test/resources/mng-5382/pom.xml
index 058cbef..34757b7 100644
--- a/core-it-suite/src/test/resources/mng-5382/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5382/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5382</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Component.java b/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Component.java
index 196eb51..d8b3f60 100644
--- a/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Component.java
+++ b/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Component.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugins;
 
 /*
@@ -24,14 +42,13 @@
 
 @Named
 @Singleton
-public class Jsr330Component
-{
+public class Jsr330Component {
 
-    public void hello()
-    {
+    public void hello() {
         System.out.println();
         System.out.println();
-        System.out.println( "Hello! I am a component that is being used via constructor injection! That's right, I'm a JSR330 badass." );
+        System.out.println(
+                "Hello! I am a component that is being used via constructor injection! That's right, I'm a JSR330 badass.");
         System.out.println();
         System.out.println();
     }
diff --git a/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Mojo.java b/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Mojo.java
index bacf273..f3096ed 100644
--- a/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Mojo.java
+++ b/core-it-suite/src/test/resources/mng-5382/src/main/java/org/apache/maven/plugins/Jsr330Mojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugins;
 
 /*
@@ -26,22 +44,17 @@
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "hello", defaultPhase = LifecyclePhase.VALIDATE, requiresProject = false )
-public class Jsr330Mojo
-    extends AbstractMojo
-{
+@Mojo(name = "hello", defaultPhase = LifecyclePhase.VALIDATE, requiresProject = false)
+public class Jsr330Mojo extends AbstractMojo {
 
     private Jsr330Component component;
 
     @Inject
-    public Jsr330Mojo( Jsr330Component component )
-    {
+    public Jsr330Mojo(Jsr330Component component) {
         this.component = component;
     }
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         //
         // Say hello to the world, my little constructor injected component!
         //
diff --git a/core-it-suite/src/test/resources/mng-5387/pom.xml b/core-it-suite/src/test/resources/mng-5387/pom.xml
index 8e298ce..6c20b38 100644
--- a/core-it-suite/src/test/resources/mng-5387/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5387/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5387</groupId>
@@ -23,10 +23,10 @@
         <executions>
           <execution>
             <id>attach-artifacts-1</id>
-            <phase>package</phase>
             <goals>
               <goal>attach-artifact</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <artifacts>
                 <artifact>
@@ -39,10 +39,10 @@
           </execution>
           <execution>
             <id>attach-artifacts-2</id>
-            <phase>package</phase>
             <goals>
               <goal>attach-artifact</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <artifacts>
                 <artifact>
diff --git a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/basic/pom.xml b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/basic/pom.xml
index 2222ae0..895cdb5 100644
--- a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/basic/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/basic/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5389.lifecycleParticipantAfterSession</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
index 46a94d4..ac640a3 100644
--- a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5389.lifecycleParticipantAfterSession</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5389/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5389/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
index 378b205..8000b9f 100644
--- a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5389/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
+++ b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5389/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5389.lifecycleParticipantAfterSession;
 
 /*
@@ -19,14 +37,14 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
 import org.apache.maven.AbstractMavenLifecycleParticipant;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
@@ -34,36 +52,28 @@
 
 @Named
 @Singleton
-public class LifecycleParticipantImpl
-    extends AbstractMavenLifecycleParticipant
-{
+public class LifecycleParticipantImpl extends AbstractMavenLifecycleParticipant {
     private final Logger log;
 
     @Inject
-    public LifecycleParticipantImpl( Logger log )
-    {
+    public LifecycleParticipantImpl(Logger log) {
         this.log = log;
     }
 
     @Override
-    public void afterSessionEnd( MavenSession session )
-    {
-        MavenProject project = session.getProjects().get( 0 );
+    public void afterSessionEnd(MavenSession session) {
+        MavenProject project = session.getProjects().get(0);
 
-        File target = new File( project.getBuild().getDirectory() );
-        File marker = new File( target, "afterSessionEnd.txt" );
+        File target = new File(project.getBuild().getDirectory());
+        File marker = new File(target, "afterSessionEnd.txt");
 
-        if ( !target.exists() && !target.getParentFile().mkdirs() )
-        {
-            log.error( "Could not create directory " + target );
+        if (!target.exists() && !target.getParentFile().mkdirs()) {
+            log.error("Could not create directory " + target);
         }
-        try
-        {
-            new FileOutputStream( marker ).close();
-        }
-        catch ( IOException e )
-        {
-            log.error( "Could not create marker file " + marker, e );
+        try {
+            new FileOutputStream(marker).close();
+        } catch (IOException e) {
+            log.error("Could not create marker file " + marker, e);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5418/pom.xml b/core-it-suite/src/test/resources/mng-5418/pom.xml
index c84aa52..f7719fd 100644
--- a/core-it-suite/src/test/resources/mng-5418/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5418/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5418</name>
-  <description>
-    Test that the file-based profile activator resolves file path with project properties.
-  </description>
-
+  <description>Test that the file-based profile activator resolves file path with project properties.</description>
 
   <properties>
     <site.base.path>${basedir}</site.base.path>
@@ -57,13 +52,13 @@
             <executions>
               <execution>
                 <id>test-1</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/path1.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -86,13 +81,13 @@
             <executions>
               <execution>
                 <id>test-2</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/file1.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -115,13 +110,13 @@
             <executions>
               <execution>
                 <id>test-3</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/missing1.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
@@ -144,13 +139,13 @@
             <executions>
               <execution>
                 <id>test-4</id>
+                <goals>
+                  <goal>reset</goal>
+                </goals>
                 <phase>validate</phase>
                 <configuration>
                   <logFile>target/missing2.txt</logFile>
                 </configuration>
-                <goals>
-                  <goal>reset</goal>
-                </goals>
               </execution>
             </executions>
           </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5445/pom.xml b/core-it-suite/src/test/resources/mng-5445/pom.xml
index 5ba7630..b0b1925 100644
--- a/core-it-suite/src/test/resources/mng-5445/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5445/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5445</groupId>
@@ -15,7 +15,6 @@
   </properties>
 
   <build>
-    <sourceDirectory>src</sourceDirectory>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -30,6 +29,7 @@
         </executions>
       </plugin>
     </plugins>
+    <sourceDirectory>src</sourceDirectory>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5452-maven-build-timestamp-utc/pom.xml b/core-it-suite/src/test/resources/mng-5452-maven-build-timestamp-utc/pom.xml
index ab7b988..0d9136c 100644
--- a/core-it-suite/src/test/resources/mng-5452-maven-build-timestamp-utc/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5452-maven-build-timestamp-utc/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>scratch</groupId>
@@ -10,9 +11,9 @@
   <build>
     <resources>
       <resource>
-        <directory>src/main/resources</directory>
         <filtering>true</filtering>
+        <directory>src/main/resources</directory>
       </resource>
     </resources>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5482/plugin-dependency/pom.xml b/core-it-suite/src/test/resources/mng-5482/plugin-dependency/pom.xml
index 795b60a..1be2722 100644
--- a/core-it-suite/src/test/resources/mng-5482/plugin-dependency/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5482/plugin-dependency/pom.xml
@@ -14,10 +14,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>tree</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5482/plugin-site/pom.xml b/core-it-suite/src/test/resources/mng-5482/plugin-site/pom.xml
index c0c8efa..1df7657 100644
--- a/core-it-suite/src/test/resources/mng-5482/plugin-site/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5482/plugin-site/pom.xml
@@ -14,10 +14,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>site</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5482/report-mpir/pom.xml b/core-it-suite/src/test/resources/mng-5482/report-mpir/pom.xml
index 35b2882..ab7fbcb 100644
--- a/core-it-suite/src/test/resources/mng-5482/report-mpir/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5482/report-mpir/pom.xml
@@ -14,10 +14,10 @@
         <executions>
           <execution>
             <id>trigger-error</id>
-            <phase>validate</phase>
             <goals>
               <goal>site</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
index c7b09f2..29fc107 100644
--- a/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
@@ -18,10 +19,10 @@
         <executions>
           <execution>
             <id>assemble</id>
-            <phase>package</phase>
             <goals>
               <goal>single</goal>
             </goals>
+            <phase>package</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5503/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5503/module-b/pom.xml
index 50a4707..68a134e 100644
--- a/core-it-suite/src/test/resources/mng-5503/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5503/module-b/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5503/pom.xml b/core-it-suite/src/test/resources/mng-5503/pom.xml
index daf0b02..ef5d092 100644
--- a/core-it-suite/src/test/resources/mng-5503/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5503/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/basic/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/basic/pom.xml
index b17233d..531406f 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/basic/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/basic/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>io.tesla.its.mojoexecutionscope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
index 668b362..09c134f 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5530-mojo-execution-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
index 688a832..8f378dd 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.sessionscope.plugin;
 
 /*
@@ -26,26 +44,19 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test-session-scope" )
-public class TestSessionScopeMojo
-    extends AbstractMojo
-{
+@Mojo(name = "test-session-scope")
+public class TestSessionScopeMojo extends AbstractMojo {
     @Component
     private TestMojoExecutionScopedComponent component;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( component.session == null )
-        {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (component.session == null) {
             throw new NullPointerException();
         }
-        if ( component.project == null )
-        {
+        if (component.project == null) {
             throw new NullPointerException();
         }
-        if ( component.execution == null )
-        {
+        if (component.execution == null) {
             throw new NullPointerException();
         }
     }
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-project/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-project/pom.xml
index fd6b136..f8cda18 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5530-mojo-execution-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
index 0d43230..03cb44c 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5530-mojo-execution-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestClassRealmManagerDelegate.java b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestClassRealmManagerDelegate.java
index 85afce2..6c064d2 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestClassRealmManagerDelegate.java
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestClassRealmManagerDelegate.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.mojoexecutionscope.extension;
 
 /*
@@ -23,15 +41,12 @@
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 
 @Named
-public class TestClassRealmManagerDelegate
-    implements ClassRealmManagerDelegate
-{
+public class TestClassRealmManagerDelegate implements ClassRealmManagerDelegate {
 
-    public void setupRealm( ClassRealm classRealm, ClassRealmRequest request )
-    {
-        if ( request.getType() == RealmType.Plugin )
-        {
-            request.getForeignImports().put( getClass().getPackage().getName() + ".*", getClass().getClassLoader() );
+    public void setupRealm(ClassRealm classRealm, ClassRealmRequest request) {
+        if (request.getType() == RealmType.Plugin) {
+            request.getForeignImports()
+                    .put(getClass().getPackage().getName() + ".*", getClass().getClassLoader());
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestMojoExecutionScopedComponent.java b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestMojoExecutionScopedComponent.java
index fe18413..6809d89 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestMojoExecutionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/extension/TestMojoExecutionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.mojoexecutionscope.extension;
 
 /*
@@ -25,8 +43,7 @@
 
 @Named
 @MojoExecutionScoped
-public class TestMojoExecutionScopedComponent
-{
+public class TestMojoExecutionScopedComponent {
     public final MavenSession session;
 
     public final MavenProject project;
@@ -34,11 +51,9 @@
     public final MojoExecution execution;
 
     @Inject
-    public TestMojoExecutionScopedComponent( MavenSession session, MavenProject project, MojoExecution execution )
-    {
+    public TestMojoExecutionScopedComponent(MavenSession session, MavenProject project, MojoExecution execution) {
         this.session = session;
         this.project = project;
         this.execution = execution;
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
index 58bbf39..bf0fd93 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5530.mojoexecutionscope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopeMojo.java b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopeMojo.java
index 009419c..9b3bf2f 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopeMojo.java
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopeMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.mojoexecutionscope;
 
 /*
@@ -25,16 +43,12 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test-execution-scope" )
-public class TestExecutionScopeMojo
-    extends AbstractMojo
-{
+@Mojo(name = "test-execution-scope")
+public class TestExecutionScopeMojo extends AbstractMojo {
     @Component
     private TestExecutionScopedComponent executionScopedComponent;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
+    public void execute() throws MojoExecutionException, MojoFailureException {
         executionScopedComponent.recordExecute();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopedComponent.java b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopedComponent.java
index 723d36c..7be9fd4 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/src/main/java/org/apache/maven/its/mng5530/mojoexecutionscope/TestExecutionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.mojoexecutionscope;
 
 /*
@@ -19,13 +37,13 @@
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.MojoExecutionEvent;
 import org.apache.maven.execution.scope.MojoExecutionScoped;
@@ -36,9 +54,7 @@
 
 @Named
 @MojoExecutionScoped
-public class TestExecutionScopedComponent
-    implements WeakMojoExecutionListener
-{
+public class TestExecutionScopedComponent implements WeakMojoExecutionListener {
     private final File basedir;
 
     private MavenSession session;
@@ -46,45 +62,34 @@
     private MojoExecution execution;
 
     @Inject
-    public TestExecutionScopedComponent( MavenSession session, MavenProject project, MojoExecution execution )
-    {
+    public TestExecutionScopedComponent(MavenSession session, MavenProject project, MojoExecution execution) {
         this.session = session;
         this.execution = execution;
-        this.basedir = new File( project.getBuild().getDirectory() );
+        this.basedir = new File(project.getBuild().getDirectory());
     }
 
-    public void recordExecute()
-    {
-        touch( new File( basedir, "execution-executed.txt" ) );
+    public void recordExecute() {
+        touch(new File(basedir, "execution-executed.txt"));
     }
 
-    private void touch( File file )
-    {
+    private void touch(File file) {
         file.getParentFile().mkdirs();
-        try
-        {
-            new FileOutputStream( file ).close();
-        }
-        catch ( IOException e )
-        {
+        try {
+            new FileOutputStream(file).close();
+        } catch (IOException e) {
             // ignore
         }
     }
 
-    public void afterExecutionFailure( MojoExecutionEvent event )
-    {
-        touch( new File( basedir, "execution-failure.txt" ) );
+    public void afterExecutionFailure(MojoExecutionEvent event) {
+        touch(new File(basedir, "execution-failure.txt"));
     }
 
-    public void afterMojoExecutionSuccess( MojoExecutionEvent event )
-        throws MojoExecutionException
-    {
-        touch( new File( basedir, "execution-success.txt" ) );
+    public void afterMojoExecutionSuccess(MojoExecutionEvent event) throws MojoExecutionException {
+        touch(new File(basedir, "execution-success.txt"));
     }
 
-    public void beforeMojoExecution( MojoExecutionEvent event )
-        throws MojoExecutionException
-    {
-        touch( new File( basedir, "execution-before.txt" ) );
+    public void beforeMojoExecution(MojoExecutionEvent event) throws MojoExecutionException {
+        touch(new File(basedir, "execution-before.txt"));
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/pom.xml
index 54aab39..5445da8 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/pom.xml
@@ -12,4 +12,4 @@
     <module>project-3</module>
     <module>project-4</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/pom.xml
index 46d1a1a..8711189 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5557</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/main/java/org/apache/maven/its/mng5557/App.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/main/java/org/apache/maven/its/mng5557/App.java
index ea407a7..e695765 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/main/java/org/apache/maven/its/mng5557/App.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/main/java/org/apache/maven/its/mng5557/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/test/java/org/apache/maven/its/mng5557/AppTest.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/test/java/org/apache/maven/its/mng5557/AppTest.java
index 231ccdc..b225d55 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/test/java/org/apache/maven/its/mng5557/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-0/src/test/java/org/apache/maven/its/mng5557/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/pom.xml
index 2742b65..42ce689 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5557</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/main/java/org/apache/maven/its/mng5557/App.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/main/java/org/apache/maven/its/mng5557/App.java
index ea407a7..e695765 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/main/java/org/apache/maven/its/mng5557/App.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/main/java/org/apache/maven/its/mng5557/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/test/java/org/apache/maven/its/mng5557/AppTest.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/test/java/org/apache/maven/its/mng5557/AppTest.java
index 231ccdc..b225d55 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/test/java/org/apache/maven/its/mng5557/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-1/src/test/java/org/apache/maven/its/mng5557/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/pom.xml
index c627a13..13d7974 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5557</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/main/java/org/apache/maven/its/mng5557/App.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/main/java/org/apache/maven/its/mng5557/App.java
index ea407a7..e695765 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/main/java/org/apache/maven/its/mng5557/App.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/main/java/org/apache/maven/its/mng5557/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/test/java/org/apache/maven/its/mng5557/AppTest.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/test/java/org/apache/maven/its/mng5557/AppTest.java
index 231ccdc..b225d55 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/test/java/org/apache/maven/its/mng5557/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-2/src/test/java/org/apache/maven/its/mng5557/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/pom.xml
index 5d3b117..6edeec1 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5557</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/main/java/org/apache/maven/its/mng5557/App.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/main/java/org/apache/maven/its/mng5557/App.java
index ea407a7..e695765 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/main/java/org/apache/maven/its/mng5557/App.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/main/java/org/apache/maven/its/mng5557/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/test/java/org/apache/maven/its/mng5557/AppTest.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/test/java/org/apache/maven/its/mng5557/AppTest.java
index 231ccdc..b225d55 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/test/java/org/apache/maven/its/mng5557/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-3/src/test/java/org/apache/maven/its/mng5557/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/pom.xml b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/pom.xml
index 0bd4660..6e7bdff 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/pom.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5557</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/main/java/org/apache/maven/its/mng5557/App.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/main/java/org/apache/maven/its/mng5557/App.java
index ea407a7..e695765 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/main/java/org/apache/maven/its/mng5557/App.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/main/java/org/apache/maven/its/mng5557/App.java
@@ -1,13 +1,29 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 /**
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/test/java/org/apache/maven/its/mng5557/AppTest.java b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/test/java/org/apache/maven/its/mng5557/AppTest.java
index 231ccdc..b225d55 100644
--- a/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/test/java/org/apache/maven/its/mng5557/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-5557-properly-restricted-reactor/project-4/src/test/java/org/apache/maven/its/mng5557/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5557;
 
 import junit.framework.Test;
@@ -7,32 +25,27 @@
 /**
  * Unit test for simple App.
  */
-public class AppTest
-    extends TestCase
-{
+public class AppTest extends TestCase {
     /**
      * Create the test case
      *
      * @param testName name of the test case
      */
-    public AppTest( String testName )
-    {
-        super( testName );
+    public AppTest(String testName) {
+        super(testName);
     }
 
     /**
      * @return the suite of tests being tested
      */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
+    public static Test suite() {
+        return new TestSuite(AppTest.class);
     }
 
     /**
      * Rigourous Test :-)
      */
-    public void testApp()
-    {
-        assertTrue( true );
+    public void testApp() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
index f3c33fc..2e1f0ef 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5561.plugins</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
index f169935..bf047da 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
@@ -1,27 +1,42 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5561;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-
-import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
-@Mojo( name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true )
-public class EchoMojo extends AbstractMojo
-{
-    @Parameter( defaultValue = "World!" )
+@Mojo(name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true)
+public class EchoMojo extends AbstractMojo {
+    @Parameter(defaultValue = "World!")
     String helloString;
 
-    @Parameter( defaultValue = "${project}", readonly = true )
+    @Parameter(defaultValue = "${project}", readonly = true)
     protected MavenProject mavenProject;
 
     @Override
-    public void execute() throws MojoExecutionException
-    {
-        getLog().warn( "=====================================================================================" );
-        getLog().warn( "Hello " + helloString );
-        getLog().warn( "=====================================================================================" );
+    public void execute() throws MojoExecutionException {
+        getLog().warn("=====================================================================================");
+        getLog().warn("Hello " + helloString);
+        getLog().warn("=====================================================================================");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
index ab97b54..5c38d29 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5561</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.1.0</maven-version>
-  </properties>
-
   <distributionManagement>
     <relocation>
       <groupId>org.apache.maven.its.mng5561.plugins</groupId>
@@ -21,6 +14,13 @@
     </relocation>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.1.0</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
index f169935..bf047da 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/src/main/java/org/apache/maven/its/mng5561/EchoMojo.java
@@ -1,27 +1,42 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5561;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-
-import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
-@Mojo( name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true )
-public class EchoMojo extends AbstractMojo
-{
-    @Parameter( defaultValue = "World!" )
+@Mojo(name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true)
+public class EchoMojo extends AbstractMojo {
+    @Parameter(defaultValue = "World!")
     String helloString;
 
-    @Parameter( defaultValue = "${project}", readonly = true )
+    @Parameter(defaultValue = "${project}", readonly = true)
     protected MavenProject mavenProject;
 
     @Override
-    public void execute() throws MojoExecutionException
-    {
-        getLog().warn( "=====================================================================================" );
-        getLog().warn( "Hello " + helloString );
-        getLog().warn( "=====================================================================================" );
+    public void execute() throws MojoExecutionException {
+        getLog().warn("=====================================================================================");
+        getLog().warn("Hello " + helloString);
+        getLog().warn("=====================================================================================");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
index 675ee0b..7ece6f0 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5561</groupId>
@@ -25,10 +25,10 @@
         <executions>
           <execution>
             <id>echoMojo</id>
-            <phase>initialize</phase>
             <goals>
               <goal>echoMojo</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
index 6c12de7..be92ca6 100644
--- a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- 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
@@ -10,9 +9,7 @@
   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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <!-- no parent, must be standalone -->
@@ -49,7 +46,8 @@
       </plugins>
     </pluginManagement>
     <plugins>
-      <plugin> <!-- force attaching file during 'mvn install'  -->
+      <plugin>
+        <!-- force attaching file during 'mvn install'  -->
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <version>3.3.0</version>
@@ -57,4 +55,4 @@
     </plugins>
   </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/pom.xml b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/pom.xml
index aa692e2..c0f1ae2 100644
--- a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng5572</groupId>
@@ -29,4 +27,4 @@
     <module>plugin</module>
     <module>project</module>
   </modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/project/pom.xml b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/project/pom.xml
index d8f1648..cbac332 100644
--- a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.maven.its.mng5572</groupId>
@@ -39,4 +36,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml b/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
index d500f10..c46b4f1 100644
--- a/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -6,42 +7,20 @@
   <!-- interpolate here -->
   <version>1.0.0.${changelist}</version>
   <name>Maven Integration Test :: mng-5576</name>
-  <description>
-    Verifies that property references with dotted notation work within POM interpolation.
-  </description>
+  <description>Verifies that property references with dotted notation work within POM interpolation.</description>
 
   <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-expression</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <configuration>
-          <outputFile>target/pom.properties</outputFile>
-          <expressions>
-            <expression>project/version</expression>
-          </expressions>
-        </configuration>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>eval</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
     <pluginManagement>
       <plugins>
         <!-- set versions of default bindings plugins to avoid warning added in MNG-6562 -->
-        <plugin><!-- clean lifecycle -->
+        <plugin>
+          <!-- clean lifecycle -->
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-clean-plugin</artifactId>
           <version>3.2.0</version>
         </plugin>
-        <plugin><!-- site lifecycle -->
+        <plugin>
+          <!-- site lifecycle -->
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
           <version>3.9.1</version>
@@ -79,5 +58,27 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <outputFile>target/pom.properties</outputFile>
+          <expressions>
+            <expression>project/version</expression>
+          </expressions>
+        </configuration>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/basic/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/basic/pom.xml
index ac719e0..1f7dcf7 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/basic/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/basic/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5578-session-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
index 3101534..4993649 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5578-session-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
index 94127ba..e2c33f1 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/plugin/TestSessionScopeMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.sessionscope.plugin;
 
 /*
@@ -22,22 +40,17 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
 
-@Mojo( name = "test-session-scope" )
-public class TestSessionScopeMojo
-    extends AbstractMojo
-{
-    @Parameter( defaultValue = "${project}", readonly = true )
+@Mojo(name = "test-session-scope")
+public class TestSessionScopeMojo extends AbstractMojo {
+    @Parameter(defaultValue = "${project}", readonly = true)
     private MavenProject project;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( project.getContextValue( "TestSessionScopedComponent" ) == null )
-        {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (project.getContextValue("TestSessionScopedComponent") == null) {
             throw new NullPointerException();
         }
     }
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-project/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-project/pom.xml
index 709a37e..866d83e 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5578-session-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
index f7b9ecc..f1c3fe7 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5578-session-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/src/main/java/org/apache/maven/its/mng5578/sessionscope/extension/TestSessionScopedComponent.java b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/src/main/java/org/apache/maven/its/mng5578/sessionscope/extension/TestSessionScopedComponent.java
index e575d41..9007ee4 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/src/main/java/org/apache/maven/its/mng5578/sessionscope/extension/TestSessionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/src/main/java/org/apache/maven/its/mng5578/sessionscope/extension/TestSessionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5578.sessionscope.extension;
 
 /*
@@ -26,22 +44,16 @@
 
 @Named
 @SessionScoped
-public class TestSessionScopedComponent
-    extends AbstractMavenLifecycleParticipant
-{
+public class TestSessionScopedComponent extends AbstractMavenLifecycleParticipant {
     @Inject
-    public TestSessionScopedComponent( MavenSession session )
-    {
+    public TestSessionScopedComponent(MavenSession session) {
         System.out.println();
     }
 
     @Override
-    public void afterProjectsRead( MavenSession session )
-        throws MavenExecutionException
-    {
-        for ( MavenProject project : session.getAllProjects() )
-        {
-            project.setContextValue( "TestSessionScopedComponent", "FTW" );
+    public void afterProjectsRead(MavenSession session) throws MavenExecutionException {
+        for (MavenProject project : session.getAllProjects()) {
+            project.setContextValue("TestSessionScopedComponent", "FTW");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
index a6c8731..7c45124 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5578-session-scope</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopeMojo.java b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopeMojo.java
index 6d21944..6d50ae2 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopeMojo.java
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopeMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.sessionscope;
 
 /*
@@ -25,18 +43,13 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test-session-scope" )
-public class TestSessionScopeMojo
-    extends AbstractMojo
-{
+@Mojo(name = "test-session-scope")
+public class TestSessionScopeMojo extends AbstractMojo {
     @Component
     private TestSessionScopedComponent sessionScopedComponent;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( sessionScopedComponent.getSession() == null )
-        {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (sessionScopedComponent.getSession() == null) {
             throw new NullPointerException();
         }
     }
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopedComponent.java b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopedComponent.java
index 4c15fa7..54e1059 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/src/main/java/org/apache/maven/its/mng5530/sessionscope/TestSessionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5530.sessionscope;
 
 /*
@@ -27,19 +45,15 @@
 
 @Named
 @SessionScoped
-public class TestSessionScopedComponent
-{
+public class TestSessionScopedComponent {
     private MavenSession session;
 
     @Inject
-    public TestSessionScopedComponent( MavenSession session )
-    {
+    public TestSessionScopedComponent(MavenSession session) {
         this.session = session;
     }
 
-    public MavenSession getSession()
-    {
+    public MavenSession getSession() {
         return session;
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/basic/pom.xml b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/basic/pom.xml
index 35b4f19..2faa0ac 100644
--- a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/basic/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/basic/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5581-lifecycle-mapping-delegate</groupId>
@@ -36,13 +33,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>mng-5581-lifecycle-mapping-delegate</groupId>
-        <artifactId>mng-5581-lifecycle-mapping-delegate-extension</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -51,5 +41,12 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>mng-5581-lifecycle-mapping-delegate</groupId>
+        <artifactId>mng-5581-lifecycle-mapping-delegate-extension</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
index ae434b2..1ba5548 100644
--- a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5581-lifecycle-mapping-delegate</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/src/main/java/org/apache/maven/its/mng5581/lifecyclemappingdelegate/TestLifecycleMappingDelegate.java b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/src/main/java/org/apache/maven/its/mng5581/lifecyclemappingdelegate/TestLifecycleMappingDelegate.java
index 9c5c5e4..88063a9 100644
--- a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/src/main/java/org/apache/maven/its/mng5581/lifecyclemappingdelegate/TestLifecycleMappingDelegate.java
+++ b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/src/main/java/org/apache/maven/its/mng5581/lifecyclemappingdelegate/TestLifecycleMappingDelegate.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5581.lifecyclemappingdelegate;
 
 /*
@@ -10,14 +28,14 @@
  * governing permissions and limitations under the License.
  */
 
+import javax.inject.Named;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.inject.Named;
-
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.lifecycle.Lifecycle;
 import org.apache.maven.lifecycle.LifecycleMappingDelegate;
@@ -34,9 +52,10 @@
 @Named("test-only")
 public class TestLifecycleMappingDelegate implements LifecycleMappingDelegate {
 
-    public Map<String, List<MojoExecution>> calculateLifecycleMappings(MavenSession session, MavenProject project,
-            Lifecycle lifecycle, String lifecyclePhase) throws PluginNotFoundException, PluginResolutionException,
-            PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException {
+    public Map<String, List<MojoExecution>> calculateLifecycleMappings(
+            MavenSession session, MavenProject project, Lifecycle lifecycle, String lifecyclePhase)
+            throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
+                    MojoNotFoundException, InvalidPluginDescriptorException {
 
         Map<String, List<MojoExecution>> pluginExecutions = new LinkedHashMap<String, List<MojoExecution>>();
 
@@ -56,8 +75,8 @@
 
         List<MojoExecution> result = new ArrayList<MojoExecution>();
 
-        List<MojoExecution> mojoExecutions = pluginExecutions
-                .get("org.apache.maven.plugins:maven-surefire-plugin:default-test");
+        List<MojoExecution> mojoExecutions =
+                pluginExecutions.get("org.apache.maven.plugins:maven-surefire-plugin:default-test");
         if (mojoExecutions != null) {
             result.addAll(mojoExecutions);
         }
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-a/pom.xml
index 017eeef..cd47126 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5591-workspace-reader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-b/pom.xml
index bb1a7f9..2b9a56e 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5591-workspace-reader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/pom.xml b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/pom.xml
index 2a1c0ea..c63fc3b 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/basic/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5591-workspace-reader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
index 71bfd39..1dcd82e 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5591-workspace-reader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/src/main/java/org/apache/maven/its/mng5591/workspacereader/EmptyWorkspaceReader.java b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/src/main/java/org/apache/maven/its/mng5591/workspacereader/EmptyWorkspaceReader.java
index f8080bc..b5f3ec7 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/src/main/java/org/apache/maven/its/mng5591/workspacereader/EmptyWorkspaceReader.java
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/src/main/java/org/apache/maven/its/mng5591/workspacereader/EmptyWorkspaceReader.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5591.workspacereader;
 
 /*
@@ -11,12 +29,12 @@
  * for the specific language governing permissions and limitations under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.File;
 import java.util.Collections;
 import java.util.List;
 
-import javax.inject.Named;
-
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.repository.WorkspaceReader;
 import org.eclipse.aether.repository.WorkspaceRepository;
@@ -24,17 +42,17 @@
 @Named("ide")
 public class EmptyWorkspaceReader implements WorkspaceReader {
 
-  WorkspaceRepository repository = new WorkspaceRepository("ide");
+    WorkspaceRepository repository = new WorkspaceRepository("ide");
 
-  public WorkspaceRepository getRepository() {
-    return repository;
-  }
+    public WorkspaceRepository getRepository() {
+        return repository;
+    }
 
-  public File findArtifact(Artifact artifact) {
-    return null;
-  }
+    public File findArtifact(Artifact artifact) {
+        return null;
+    }
 
-  public List<String> findVersions(Artifact artifact) {
-    return Collections.emptyList();
-  }
+    public List<String> findVersions(Artifact artifact) {
+        return Collections.emptyList();
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-5608-profile-activation-warning/pom.xml b/core-it-suite/src/test/resources/mng-5608-profile-activation-warning/pom.xml
index 29a2ee6..7863b37 100644
--- a/core-it-suite/src/test/resources/mng-5608-profile-activation-warning/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5608-profile-activation-warning/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -37,10 +35,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
@@ -62,7 +60,8 @@
             <groupId>org.apache.maven.its.plugins</groupId>
             <artifactId>maven-it-plugin-touch</artifactId>
             <configuration>
-              <fail>true</fail><!-- this profile should not be activated -->
+              <fail>true</fail>
+              <!-- this profile should not be activated -->
             </configuration>
           </plugin>
         </plugins>
@@ -121,7 +120,8 @@
             <groupId>org.apache.maven.its.plugins</groupId>
             <artifactId>maven-it-plugin-touch</artifactId>
             <configuration>
-              <fail>true</fail><!-- this profile should not be activated -->
+              <fail>true</fail>
+              <!-- this profile should not be activated -->
             </configuration>
           </plugin>
         </plugins>
diff --git a/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml b/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
index 1ee39c4..ee0ca56 100644
--- a/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,55 +17,52 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng5639</groupId>
-    <artifactId>test</artifactId>
-    <version>0.1</version>
-    <packaging>jar</packaging>
+  <groupId>org.apache.maven.its.mng5639</groupId>
+  <artifactId>test</artifactId>
+  <version>0.1</version>
+  <packaging>jar</packaging>
 
-    <name>Maven Integration Test :: MNG-5639</name>
-    <description>
-        Checks that an import POM in the dependencyManagement section can be successfully
-        resolved from a repository defining a URL that contains a property.
-    </description>
+  <name>Maven Integration Test :: MNG-5639</name>
+  <description>Checks that an import POM in the dependencyManagement section can be successfully
+        resolved from a repository defining a URL that contains a property.</description>
 
-    <properties>
-        <!-- Value corresponds to the folder name in this directory -->
-        <repository.url.suffix.property>repo-set-by-property</repository.url.suffix.property>
-    </properties>
+  <properties>
+    <!-- Value corresponds to the folder name in this directory -->
+    <repository.url.suffix.property>repo-set-by-property</repository.url.suffix.property>
+  </properties>
 
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <version>3.0.0-M7</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.apache.maven.its.mng5639</groupId>
-                <artifactId>a</artifactId>
-                <version>0.1</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
+  <dependencyManagement>
     <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng5639</groupId>
-            <artifactId>b</artifactId>
-        </dependency>
+      <dependency>
+        <groupId>org.apache.maven.its.mng5639</groupId>
+        <artifactId>a</artifactId>
+        <version>0.1</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
     </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng5639</groupId>
+      <artifactId>b</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>3.0.0-M7</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
index 6702735..d81afef 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -53,6 +50,12 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
         <version>3.6.4</version>
+        <configuration>
+          <!--
+          Works around bug in maven-plugin packaging lifecycle: https://issues.apache.org/jira/browse/MNG-5346
+          -->
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -60,12 +63,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <!--
-          Works around bug in maven-plugin packaging lifecycle: https://issues.apache.org/jira/browse/MNG-5346
-          -->
-          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojo.java b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojo.java
index 721f86a..94b36f4 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojo.java
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5640.lifecycleParticipantAfterSession;
 
 /*
@@ -26,13 +44,10 @@
 /**
  * A bad mojo that fails execution by throwing a MojoExecutionException.
  */
-@Mojo( name = "bad" )
-public class BadMojo
-    extends AbstractMojo
-{
+@Mojo(name = "bad")
+public class BadMojo extends AbstractMojo {
     @Override
-    public void execute() throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         throw new MojoExecutionException("Am being bad!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojoRt.java b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojoRt.java
index 257a3dd..d0a8086 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojoRt.java
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/BadMojoRt.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5640.lifecycleParticipantAfterSession;
 
 /*
@@ -20,19 +38,15 @@
  */
 
 import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * A bad mojo that fails execution by throwing a runtime exception.
  */
-@Mojo( name = "badrt" )
-public class BadMojoRt
-    extends AbstractMojo
-{
+@Mojo(name = "badrt")
+public class BadMojoRt extends AbstractMojo {
     @Override
-    public void execute()
-    {
+    public void execute() {
         throw new RuntimeException("Am being bad!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-mojoex/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-mojoex/pom.xml
index 458672b..944eb7a 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-mojoex/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-mojoex/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -37,13 +34,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
-        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -51,13 +41,20 @@
         <version>0.1</version>
         <executions>
           <execution>
-            <phase>compile</phase>
             <goals>
               <goal>bad</goal>
             </goals>
+            <phase>compile</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
+        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-runtimeex/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-runtimeex/pom.xml
index e4448b5..4e06c40 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-runtimeex/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/builderror-runtimeex/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -37,13 +34,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
-        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -51,13 +41,20 @@
         <version>0.1</version>
         <executions>
           <execution>
-            <phase>compile</phase>
             <goals>
               <goal>badrt</goal>
             </goals>
+            <phase>compile</phase>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
+        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/pom.xml
index 725b317..9f7483e 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/src/test/java/org/apache/maven/its/mng5640/FailingTest.java b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
index 3f2dd98..220e247 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-depmissing/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5640;
 
 import junit.framework.TestCase;
@@ -5,14 +23,11 @@
 /**
  * Always failing UT.
  */
-public class FailingTest
-    extends TestCase
-{
-  /**
-   * Rigourous Test :-)
-   */
-  public void testApp()
-  {
-    assertTrue( false );
-  }
+public class FailingTest extends TestCase {
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp() {
+        assertTrue(false);
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/pom.xml
index d5b8f59..007b9b9 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
@@ -37,13 +34,6 @@
   </dependencies>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
-        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
-        <version>0.1</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -51,5 +41,12 @@
         <version>3.0.0-M3</version>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
+        <artifactId>mng-5640-lifecycleParticipant-afterSession-extension</artifactId>
+        <version>0.1</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/src/test/java/org/apache/maven/its/mng5640/FailingTest.java b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
index 3f2dd98..220e247 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/buildfailure-utfail/src/test/java/org/apache/maven/its/mng5640/FailingTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5640;
 
 import junit.framework.TestCase;
@@ -5,14 +23,11 @@
 /**
  * Always failing UT.
  */
-public class FailingTest
-    extends TestCase
-{
-  /**
-   * Rigourous Test :-)
-   */
-  public void testApp()
-  {
-    assertTrue( false );
-  }
+public class FailingTest extends TestCase {
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp() {
+        assertTrue(false);
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
index 322bb4b..054ffbf 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5640.lifecycleParticipantAfterSession</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
index 017226a..cd82a49 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/src/main/java/org/apache/maven/its/mng5640/lifecycleParticipantAfterSession/LifecycleParticipantImpl.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5640.lifecycleParticipantAfterSession;
 
 /*
@@ -19,14 +37,14 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
 import org.apache.maven.AbstractMavenLifecycleParticipant;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
@@ -34,53 +52,42 @@
 
 @Named
 @Singleton
-public class LifecycleParticipantImpl
-    extends AbstractMavenLifecycleParticipant
-{
+public class LifecycleParticipantImpl extends AbstractMavenLifecycleParticipant {
     private final Logger log;
 
     @Inject
-    public LifecycleParticipantImpl( Logger log )
-    {
+    public LifecycleParticipantImpl(Logger log) {
         this.log = log;
     }
 
     @Override
-    public void afterProjectsRead( MavenSession session )
-    {
-        dropMarker( session, "afterProjectsRead.txt" );
+    public void afterProjectsRead(MavenSession session) {
+        dropMarker(session, "afterProjectsRead.txt");
     }
 
     @Override
-    public void afterSessionStart( MavenSession session )
-    {
-        dropMarker( session, "afterSessionStart.txt" );
+    public void afterSessionStart(MavenSession session) {
+        dropMarker(session, "afterSessionStart.txt");
     }
 
     @Override
-    public void afterSessionEnd( MavenSession session )
-    {
-        dropMarker( session, "afterSessionEnd.txt" );
+    public void afterSessionEnd(MavenSession session) {
+        dropMarker(session, "afterSessionEnd.txt");
     }
 
-    private void dropMarker( MavenSession session, String markerName )
-    {
-        MavenProject project = session.getProjects().get( 0 );
+    private void dropMarker(MavenSession session, String markerName) {
+        MavenProject project = session.getProjects().get(0);
 
-        File target = new File( project.getBuild().getDirectory() );
-        File marker = new File( target, markerName );
+        File target = new File(project.getBuild().getDirectory());
+        File marker = new File(target, markerName);
 
-        if ( !target.exists() && !target.mkdirs() )
-        {
-            log.error( "Could not create directory " + target );
+        if (!target.exists() && !target.mkdirs()) {
+            log.error("Could not create directory " + target);
         }
-        try
-        {
-            new FileOutputStream( marker ).close();
-        }
-        catch ( IOException e )
-        {
-            log.error( "Could not create marker file " + marker, e );
+        try {
+            new FileOutputStream(marker).close();
+        } catch (IOException e) {
+            log.error("Could not create marker file " + marker, e);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module1/pom.xml b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module1/pom.xml
index 6010dbc..0803773 100644
--- a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng5669</groupId>
@@ -29,4 +26,4 @@
   </parent>
   <artifactId>module1</artifactId>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module2/pom.xml b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module2/pom.xml
index 7983fbd..a6a8c60 100644
--- a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng5669</groupId>
@@ -36,4 +33,4 @@
       <version>0.0.1-SNAPSHOT</version>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module3/pom.xml b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module3/pom.xml
index 155046c..c6c5e09 100644
--- a/core-it-suite/src/test/resources/mng-5669-read-poms-once/module3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5669-read-poms-once/module3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng5669</groupId>
@@ -37,4 +34,4 @@
     </dependency>
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml b/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
index c764fc9..d052559 100644
--- a/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>mng5669</groupId>
   <artifactId>project</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-5716-toolchains-type/pom.xml b/core-it-suite/src/test/resources/mng-5716-toolchains-type/pom.xml
index 9c41b3d..c70d0f4 100644
--- a/core-it-suite/src/test/resources/mng-5716-toolchains-type/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5716-toolchains-type/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -30,13 +28,6 @@
   <description>Test Toolchain type returned by ToolchainManagerPrivate.getToolchainsForType()</description>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its</groupId>
-        <artifactId>core-it-toolchain</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
@@ -45,19 +36,28 @@
         <executions>
           <execution>
             <id>select-toolchain</id>
-            <phase>validate</phase>
             <goals>
               <goal>toolchain</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/toolchains.properties</outputFile>
-              <type>coreit</type><!-- no toolchain configured in toolchain.xml -->
-              <selected>0</selected><!-- then selecting should not be ok -->
+              <type>coreit</type>
+              <!-- no toolchain configured in toolchain.xml -->
+              <selected>0</selected>
+              <!-- then selecting should not be ok -->
               <tool>javac</tool>
             </configuration>
           </execution>
         </executions>
       </plugin>
     </plugins>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>core-it-toolchain</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
index 424c53e..a89f221 100644
--- a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5742-build-extension-classloader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderComponent.java b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderComponent.java
index 1a9a446..16fee17 100644
--- a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderComponent.java
+++ b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5742.build.extension.classloader.plugin;
 
 /*
@@ -19,6 +37,10 @@
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -26,66 +48,47 @@
 import java.io.Writer;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
 import org.apache.maven.AbstractMavenLifecycleParticipant;
 import org.apache.maven.MavenExecutionException;
 import org.apache.maven.execution.MavenSession;
 
 @Named
 @Singleton
-public class BuildExtensionClassloaderComponent
-    extends AbstractMavenLifecycleParticipant
-{
+public class BuildExtensionClassloaderComponent extends AbstractMavenLifecycleParticipant {
     public static final String FILE_PATH = "target/execution-success.txt";
 
     @Inject
-    public BuildExtensionClassloaderComponent()
-    {
-    }
+    public BuildExtensionClassloaderComponent() {}
 
     private final AtomicInteger pluginExecutionCount = new AtomicInteger();
 
     private final AtomicInteger extensionExecutionCount = new AtomicInteger();
 
-    public void invokedFromMojo()
-    {
+    public void invokedFromMojo() {
         pluginExecutionCount.incrementAndGet();
     }
 
     @Override
-    public void afterSessionEnd( MavenSession session )
-        throws MavenExecutionException
-    {
-        if ( extensionExecutionCount.incrementAndGet() != 1 )
-        {
+    public void afterSessionEnd(MavenSession session) throws MavenExecutionException {
+        if (extensionExecutionCount.incrementAndGet() != 1) {
             throw new IllegalStateException();
         }
 
-        if ( pluginExecutionCount.intValue() != 1 )
-        {
+        if (pluginExecutionCount.intValue() != 1) {
             throw new IllegalStateException();
         }
 
-        try
-        {
-            File file = new File( session.getTopLevelProject().getBasedir(), FILE_PATH );
+        try {
+            File file = new File(session.getTopLevelProject().getBasedir(), FILE_PATH);
             file.getParentFile().mkdirs();
-            Writer w = new OutputStreamWriter( new FileOutputStream( file, true ), "UTF-8" );
-            try
-            {
-                w.write( "executed" );
-            }
-            finally
-            {
+            Writer w = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");
+            try {
+                w.write("executed");
+            } finally {
                 w.close();
             }
-        }
-        catch ( IOException e )
-        {
-            throw new MavenExecutionException( e.getMessage(), e );
+        } catch (IOException e) {
+            throw new MavenExecutionException(e.getMessage(), e);
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderMojo.java b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderMojo.java
index de39ea2..91a732b 100644
--- a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderMojo.java
+++ b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/src/main/java/org/apache/maven/its/mng5742/build/extension/classloader/plugin/BuildExtensionClassloaderMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5742.build.extension.classloader.plugin;
 
 /*
@@ -28,20 +46,16 @@
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 
-@Mojo( name = "test" )
-public class BuildExtensionClassloaderMojo
-    extends AbstractMojo
-{
+@Mojo(name = "test")
+public class BuildExtensionClassloaderMojo extends AbstractMojo {
     @Component
     private BuildExtensionClassloaderComponent component;
 
-    @Parameter( defaultValue = "${project.basedir}", readonly = true )
+    @Parameter(defaultValue = "${project.basedir}", readonly = true)
     private File basedir;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        new File( basedir, BuildExtensionClassloaderComponent.FILE_PATH ).delete();
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        new File(basedir, BuildExtensionClassloaderComponent.FILE_PATH).delete();
         component.invokedFromMojo();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/project/pom.xml b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/project/pom.xml
index faf4202..6766a9d 100644
--- a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5742-build-extension-classloader</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
index b6c5474..3da24d3 100644
--- a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5753-custom-mojo-execution-configurator</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojo.java b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojo.java
index 08c5a56..8ac196e 100644
--- a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5753.plugin;
 
 /*
@@ -27,42 +45,30 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-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.project.MavenProject;
 
-@Mojo( name = "test", configurator = "test" )
-public class TestMojo
-    extends AbstractMojo
-{
-    @Parameter( defaultValue = "${project}", readonly = true )
+@Mojo(name = "test", configurator = "test")
+public class TestMojo extends AbstractMojo {
+    @Parameter(defaultValue = "${project}", readonly = true)
     private MavenProject project;
 
     @Parameter
     private String name;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        try
-        {
-            File file = new File( project.getBasedir(), "configuration.txt" );
+    public void execute() throws MojoExecutionException {
+        try {
+            File file = new File(project.getBasedir(), "configuration.txt");
             file.getParentFile().mkdirs();
-            Writer w = new OutputStreamWriter( new FileOutputStream( file, true ), "UTF-8" );
-            try
-            {
-                w.write( name );
-            }
-            finally
-            {
+            Writer w = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");
+            try {
+                w.write(name);
+            } finally {
                 w.close();
             }
+        } catch (IOException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
         }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojoExecutionConfigurator.java b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojoExecutionConfigurator.java
index d0d1e79..33be08d 100644
--- a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojoExecutionConfigurator.java
+++ b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/src/main/java/org/apache/maven/its/mng5753/plugin/TestMojoExecutionConfigurator.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5753.plugin;
 
 /*
@@ -24,19 +42,16 @@
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
-public class TestMojoExecutionConfigurator
-    extends DefaultMojoExecutionConfigurator
-{
+public class TestMojoExecutionConfigurator extends DefaultMojoExecutionConfigurator {
     @Override
-    public void configure( MavenProject project, MojoExecution mojoExecution, boolean allowPluginLevelConfig )
-    {
+    public void configure(MavenProject project, MojoExecution mojoExecution, boolean allowPluginLevelConfig) {
         // We do exactly what the default mojo execution configurator does
-        super.configure( project, mojoExecution, allowPluginLevelConfig );
+        super.configure(project, mojoExecution, allowPluginLevelConfig);
 
         // And now we'll insert some additional configuration that we can assert was placed
         // in the configuration in our test
         Xpp3Dom mojoConfiguration = mojoExecution.getConfiguration();
 
-        mojoConfiguration.getChild( "name" ).setValue( "TRANSFORMED" );
+        mojoConfiguration.getChild("name").setValue("TRANSFORMED");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/project/pom.xml b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/project/pom.xml
index 8e84a1e..a5a054b 100644
--- a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5753-custom-mojo-execution-configurator</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
index cb7b7de..e50b164 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/src/test/java/org/apache/maven/it/TestCase.java
index fcc1662..60903cf 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,15 +41,12 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase() throws Exception
-    {
-        Thread.sleep( Integer.getInteger( "module-a.delay", 0 ) );
-        if ( Boolean.getBoolean("module-a.fail") )
-        {
+    public void testCase() throws Exception {
+        Thread.sleep(Integer.getInteger("module-a.delay", 0));
+        if (Boolean.getBoolean("module-a.fail")) {
             fail("Deliberately fail test case in module A");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
index 4f6699d..37934e4 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-b</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/src/test/java/org/apache/maven/it/TestCase.java
index 454578a..36ab8f4 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,15 +41,12 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase() throws Exception
-    {
-        Thread.sleep( Integer.getInteger( "module-b.delay", 0 ) );
-        if ( Boolean.getBoolean("module-b.fail") )
-        {
+    public void testCase() throws Exception {
+        Thread.sleep(Integer.getInteger("module-b.delay", 0));
+        if (Boolean.getBoolean("module-b.fail")) {
             fail("Deliberately fail test case in module B");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
index 02581e3..64ad190 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,28 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-c</artifactId>
+  <artifactId>module-c</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng5760</groupId>
-            <artifactId>module-b</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng5760</groupId>
+      <artifactId>module-b</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/src/test/java/org/apache/maven/it/TestCase.java
index 6931a02..0197c42 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,15 +41,12 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase() throws Exception
-    {
-        Thread.sleep( Integer.getInteger( "module-c.delay", 0 ) );
-        if ( Boolean.getBoolean("module-c.fail") )
-        {
+    public void testCase() throws Exception {
+        Thread.sleep(Integer.getInteger("module-c.delay", 0));
+        if (Boolean.getBoolean("module-c.fail")) {
             fail("Deliberately fail test case in module C");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
index b193dd7..6aa01f8 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,28 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-d</artifactId>
+  <artifactId>module-d</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng5760</groupId>
-            <artifactId>module-a</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng5760</groupId>
+      <artifactId>module-a</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/src/test/java/org/apache/maven/it/TestCase.java
index 34f7752..5fe9225 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,15 +41,12 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase() throws Exception
-    {
-        Thread.sleep( Integer.getInteger( "module-d.delay", 0 ) );
-        if ( Boolean.getBoolean("module-d.fail") )
-        {
+    public void testCase() throws Exception {
+        Thread.sleep(Integer.getInteger("module-d.delay", 0));
+        if (Boolean.getBoolean("module-d.fail")) {
             fail("Deliberately fail test case in module D");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
index 831ad90..4103e73 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,43 +17,38 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng5760</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng5760</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-5760</name>
+  <description>Tests for the --resume flag.</description>
 
-    <name>Maven Integration Test :: MNG-5760</name>
-    <description>
-        Tests for the --resume flag.
-    </description>
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+    <module>module-c</module>
+    <module>module-d</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
-    <modules>
-        <module>module-a</module>
-        <module>module-b</module>
-        <module>module-c</module>
-        <module>module-d</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
index cb7b7de..e50b164 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java
index 503ccc6..c18b1e9 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,14 +41,11 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
-        if ( Boolean.getBoolean("module-a.fail") )
-        {
+    public void testCase() {
+        if (Boolean.getBoolean("module-a.fail")) {
             fail("Deliberately fail test case in module A");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
index 4f6699d..37934e4 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-b</artifactId>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java
index a624bcf..3991f60 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,14 +41,11 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
-        if ( Boolean.getBoolean("module-b.fail") )
-        {
+    public void testCase() {
+        if (Boolean.getBoolean("module-b.fail")) {
             fail("Deliberately fail test case in module B");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
index 02581e3..64ad190 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,28 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng5760</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-c</artifactId>
+  <artifactId>module-c</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng5760</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng5760</groupId>
-            <artifactId>module-b</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng5760</groupId>
+      <artifactId>module-b</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java
index 1cb0415..f0e4fe8 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,14 +41,11 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
-        if ( Boolean.getBoolean("module-c.fail") )
-        {
+    public void testCase() {
+        if (Boolean.getBoolean("module-c.fail")) {
             fail("Deliberately fail test case in module C");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
index ca797e0..549940f 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,42 +17,37 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng5760</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng5760</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-5760</name>
+  <description>Tests for the --resume flag.</description>
 
-    <name>Maven Integration Test :: MNG-5760</name>
-    <description>
-        Tests for the --resume flag.
-    </description>
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+    <module>module-c</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
-    <modules>
-        <module>module-a</module>
-        <module>module-b</module>
-        <module>module-c</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
index d92e689..952078d 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
+  <artifactId>module-a</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
-    <artifactId>module-a</artifactId>
-    <version>1.0</version>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java
index 503ccc6..c18b1e9 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,14 +41,11 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
-        if ( Boolean.getBoolean("module-a.fail") )
-        {
+    public void testCase() {
+        if (Boolean.getBoolean("module-a.fail")) {
             fail("Deliberately fail test case in module A");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
index 344f034..868d9e8 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
+  <artifactId>module-b</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
-    <artifactId>module-b</artifactId>
-    <version>1.0</version>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java
index a624bcf..3991f60 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/src/test/java/org/apache/maven/it/TestCase.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.it;
 
 /*
@@ -23,14 +41,11 @@
 
 import static org.junit.Assert.fail;
 
-public class TestCase
-{
+public class TestCase {
     @Test
-    public void testCase()
-    {
-        if ( Boolean.getBoolean("module-b.fail") )
-        {
+    public void testCase() {
+        if (Boolean.getBoolean("module-b.fail")) {
             fail("Deliberately fail test case in module B");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
index 45463c5..42abcd4 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,32 +17,27 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng5760.parentindependent</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-5760</name>
+  <description>Tests for the --resume flag.</description>
 
-    <name>Maven Integration Test :: MNG-5760</name>
-    <description>
-        Tests for the --resume flag.
-    </description>
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <modules>
-        <module>module-a</module>
-        <module>module-b</module>
-    </modules>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5768-cli-execution-id/pom.xml b/core-it-suite/src/test/resources/mng-5768-cli-execution-id/pom.xml
index 712c1c7..436d980 100644
--- a/core-it-suite/src/test/resources/mng-5768-cli-execution-id/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5768-cli-execution-id/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-5768</name>
-  <description>
-    Verify that plugin execution id can be specified from command line.
-  </description>
+  <description>Verify that plugin execution id can be specified from command line.</description>
 
   <build>
     <plugins>
@@ -43,10 +39,10 @@
         <executions>
           <execution>
             <id>test-execution-id</id>
-            <phase>validate</phase>
             <goals>
               <goal>config</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <beanParam>CONFIGURED</beanParam>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-config/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-config/pom.xml
index fa398ca..4a38f14 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-config/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-config/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <plugins>
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>validate-extensions</id>
-            <phase>validate</phase>
             <goals>
               <goal>validate-component</goal>
               <goal>validate-classpath</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-no-descriptor/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-no-descriptor/pom.xml
index e85d957..42fb985 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-no-descriptor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-no-descriptor/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>validate-extensions</id>
-            <phase>validate</phase>
             <goals>
               <goal>validate-component</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-properties/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-properties/pom.xml
index fa398ca..4a38f14 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/client-properties/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/client-properties/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <plugins>
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>validate-extensions</id>
-            <phase>validate</phase>
             <goals>
               <goal>validate-component</goal>
               <goal>validate-classpath</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/client/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/client/pom.xml
index fa398ca..4a38f14 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/client/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/client/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <plugins>
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>validate-extensions</id>
-            <phase>validate</phase>
             <goals>
               <goal>validate-component</goal>
               <goal>validate-classpath</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
index e993782..f1a2a4f 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: maven-it-core-extensions</name>
-  <description>
-    Maven core extensions components
-  </description>
+  <description>Maven core extensions components</description>
 
   <!--
     mvn clean deploy -DaltDeploymentRepository=default::default::file://
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
index 3b07479..edb262c 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.core_extensions;
 
 import org.apache.maven.classrealm.ClassRealmManagerDelegate;
@@ -5,11 +23,7 @@
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Component;
 
-@Component( role = ClassRealmManagerDelegate.class, hint = "TestClassRealmManagerDelegate" )
-public class TestClassRealmManagerDelegate
-    implements ClassRealmManagerDelegate
-{
-    public void setupRealm( ClassRealm classRealm, ClassRealmRequest request )
-    {
-    }
+@Component(role = ClassRealmManagerDelegate.class, hint = "TestClassRealmManagerDelegate")
+public class TestClassRealmManagerDelegate implements ClassRealmManagerDelegate {
+    public void setupRealm(ClassRealm classRealm, ClassRealmRequest request) {}
 }
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
index cef2b21..0591411 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
@@ -1,9 +1,24 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.core_extensions;
 
 import org.codehaus.plexus.component.annotations.Component;
 
-@Component( role = TestCoreExtensionComponent.class )
-public class TestCoreExtensionComponent
-{
-
-}
+@Component(role = TestCoreExtensionComponent.class)
+public class TestCoreExtensionComponent {}
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
index ac31d75..4a55eaa 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: maven-it-core-extensions</name>
-  <description>
-    Maven core extensions components
-  </description>
+  <description>Maven core extensions components</description>
 
   <!--
     mvn clean deploy -DaltDeploymentRepository=default::default::file://
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
index 3b07479..edb262c 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestClassRealmManagerDelegate.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.core_extensions;
 
 import org.apache.maven.classrealm.ClassRealmManagerDelegate;
@@ -5,11 +23,7 @@
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Component;
 
-@Component( role = ClassRealmManagerDelegate.class, hint = "TestClassRealmManagerDelegate" )
-public class TestClassRealmManagerDelegate
-    implements ClassRealmManagerDelegate
-{
-    public void setupRealm( ClassRealm classRealm, ClassRealmRequest request )
-    {
-    }
+@Component(role = ClassRealmManagerDelegate.class, hint = "TestClassRealmManagerDelegate")
+public class TestClassRealmManagerDelegate implements ClassRealmManagerDelegate {
+    public void setupRealm(ClassRealm classRealm, ClassRealmRequest request) {}
 }
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
index cef2b21..0591411 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/core_extensions/TestCoreExtensionComponent.java
@@ -1,9 +1,24 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.core_extensions;
 
 import org.codehaus.plexus.component.annotations.Component;
 
-@Component( role = TestCoreExtensionComponent.class )
-public class TestCoreExtensionComponent
-{
-
-}
+@Component(role = TestCoreExtensionComponent.class)
+public class TestCoreExtensionComponent {}
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
index 9f34696..96873a8 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: maven-it-plugin-core-extensions-client</name>
-  <description>
-    Maven plugin that fails if expected components were not contributed by the core extension
-  </description>
+  <description>Maven plugin that fails if expected components were not contributed by the core extension</description>
 
   <!--
     mvn clean deploy -DaltDeploymentRepository=default::default::file://
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateClasspathMojo.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateClasspathMojo.java
index 0eee806..2ea2f95 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateClasspathMojo.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateClasspathMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it_core_extensions.plugin;
 
 import org.apache.maven.its.core_extensions.TestCoreExtensionComponent;
@@ -7,20 +25,14 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "validate-classpath" )
-public class ValidateClasspathMojo
-    extends AbstractMojo
-{
+@Mojo(name = "validate-classpath")
+public class ValidateClasspathMojo extends AbstractMojo {
     @Component
     private TestCoreExtensionComponent component;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( this.component == null )
-        {
-            throw new MojoExecutionException( "Expected core extension component is not available" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (this.component == null) {
+            throw new MojoExecutionException("Expected core extension component is not available");
         }
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateComponentMojo.java b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateComponentMojo.java
index 22aa084..0a60a0b 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateComponentMojo.java
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/src/main/java/org/apache/maven/its/it_core_extensions/plugin/ValidateComponentMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.it_core_extensions.plugin;
 
 import java.util.Map;
@@ -9,20 +27,15 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "validate-component" )
-public class ValidateComponentMojo
-    extends AbstractMojo
-{
+@Mojo(name = "validate-component")
+public class ValidateComponentMojo extends AbstractMojo {
     @Component
     private Map<String, ClassRealmManagerDelegate> delegates;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        ClassRealmManagerDelegate delegate = delegates.get( "TestClassRealmManagerDelegate" );
-        if ( delegate == null )
-        {
-            throw new MojoExecutionException( "Expected core extension component is not available" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        ClassRealmManagerDelegate delegate = delegates.get("TestClassRealmManagerDelegate");
+        if (delegate == null) {
+            throw new MojoExecutionException("Expected core extension component is not available");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-one-processor-valid/pom.xml b/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-one-processor-valid/pom.xml
index 6e7109b..22dd1c3 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-one-processor-valid/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-one-processor-valid/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,16 +26,14 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <resources>
       <resource>
-        <directory>src/main/resources</directory>
         <filtering>true</filtering>
+        <directory>src/main/resources</directory>
       </resource>
     </resources>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-two-processors-invalid/pom.xml b/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-two-processors-invalid/pom.xml
index 8905056..5807bd3 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-two-processors-invalid/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/build-with-two-processors-invalid/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/pom.xml b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/pom.xml
index 77c3829..e50dca6 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorOne.java b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorOne.java
index 80c97bd..d22c131 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorOne.java
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-one/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorOne.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.configuration_processors;
 
 import org.apache.maven.cli.CliRequest;
@@ -6,16 +24,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component( role = ConfigurationProcessor.class, hint = "maven-core-it-one" )
-public class ConfigurationProcessorOne
-    implements ConfigurationProcessor
-{
-    private Logger logger = LoggerFactory.getLogger( ConfigurationProcessorOne.class );
+@Component(role = ConfigurationProcessor.class, hint = "maven-core-it-one")
+public class ConfigurationProcessorOne implements ConfigurationProcessor {
+    private Logger logger = LoggerFactory.getLogger(ConfigurationProcessorOne.class);
 
-    public void process( CliRequest request )
-        throws Exception
-    {
-        logger.info( "ConfigurationProcessorOne.process()" );
-        request.getUserProperties().put( "answer", "yes" );
+    public void process(CliRequest request) throws Exception {
+        logger.info("ConfigurationProcessorOne.process()");
+        request.getUserProperties().put("answer", "yes");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/pom.xml b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/pom.xml
index 9a80f12..c7eb323 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorTwo.java b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorTwo.java
index c98071e..773ef35 100644
--- a/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorTwo.java
+++ b/core-it-suite/src/test/resources/mng-5774-configuration-processors/configuration-processor-two/src/main/java/org/apache/maven/its/configuration_processors/ConfigurationProcessorTwo.java
@@ -1,15 +1,28 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.configuration_processors;
 
 import org.apache.maven.cli.CliRequest;
 import org.apache.maven.cli.configuration.ConfigurationProcessor;
 import org.codehaus.plexus.component.annotations.Component;
 
-@Component( role = ConfigurationProcessor.class, hint = "maven-core-it-two" )
-public class ConfigurationProcessorTwo
-    implements ConfigurationProcessor
-{
-    public void process( CliRequest request )
-        throws Exception
-    {
-    }
+@Component(role = ConfigurationProcessor.class, hint = "maven-core-it-two")
+public class ConfigurationProcessorTwo implements ConfigurationProcessor {
+    public void process(CliRequest request) throws Exception {}
 }
diff --git a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
index a205cc9..e6ff227 100644
--- a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5783-plugin-dependency-filtering</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/src/main/java/org/apache/maven/its/mng5783/plugin/TestMojo.java b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/src/main/java/org/apache/maven/its/mng5783/plugin/TestMojo.java
index 5707faf..16198e2 100644
--- a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/src/main/java/org/apache/maven/its/mng5783/plugin/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/src/main/java/org/apache/maven/its/mng5783/plugin/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5783.plugin;
 
 /*
@@ -32,41 +50,29 @@
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 
-@Mojo( name = "test" )
-public class TestMojo
-    extends AbstractMojo
-{
-    @Parameter( defaultValue = "${project.build.directory}", readonly = true )
+@Mojo(name = "test")
+public class TestMojo extends AbstractMojo {
+    @Parameter(defaultValue = "${project.build.directory}", readonly = true)
     private File target;
 
-    @Parameter( defaultValue = "${plugin.artifacts}", readonly = true )
+    @Parameter(defaultValue = "${plugin.artifacts}", readonly = true)
     private List<Artifact> artifacts;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        try
-        {
-            File file = new File( target, "dependencies.txt" );
+    public void execute() throws MojoExecutionException {
+        try {
+            File file = new File(target, "dependencies.txt");
             file.getParentFile().mkdirs();
-            BufferedWriter w = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), "UTF-8" ) );
-            try
-            {
-                for ( Artifact artifact : artifacts )
-                {
-                    w.write( artifact.getId() );
+            BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
+            try {
+                for (Artifact artifact : artifacts) {
+                    w.write(artifact.getId());
                     w.newLine();
                 }
-            }
-            finally
-            {
+            } finally {
                 w.close();
             }
+        } catch (IOException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
         }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/slf4j/pom.xml b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/slf4j/pom.xml
index 94164db..153f0eb 100644
--- a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/slf4j/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/slf4j/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5783-plugin-dependency-filtering</groupId>
@@ -33,6 +30,13 @@
         <groupId>mng-5783-plugin-dependency-filtering</groupId>
         <artifactId>mng-5783-plugin-dependency-filtering-plugin</artifactId>
         <version>0.1</version>
+        <dependencies>
+          <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.5</version>
+          </dependency>
+        </dependencies>
         <executions>
           <execution>
             <id>test</id>
@@ -42,13 +46,6 @@
             <phase>validate</phase>
           </execution>
         </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.7.5</version>
-          </dependency>
-        </dependencies>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5805-pkg-type-mojo-configuration2/pom.xml b/core-it-suite/src/test/resources/mng-5805-pkg-type-mojo-configuration2/pom.xml
index 927a8fc..705d71e 100644
--- a/core-it-suite/src/test/resources/mng-5805-pkg-type-mojo-configuration2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5805-pkg-type-mojo-configuration2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5805-pkg-type-mojo-configuration</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/child/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/child/pom.xml
index 3c123f2..82f7060 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/child/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -24,14 +24,14 @@
         <version>${maven-enforcer-plugin.version}</version>
         <executions>
           <execution>
-            <inherited>false</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>enforce</goal>
             </goals>
+            <phase>validate</phase>
+            <inherited>false</inherited>
             <configuration>
               <rules>
-                <alwaysFail/>
+                <alwaysFail />
               </rules>
             </configuration>
           </execution>
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent-1/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent-1/pom.xml
index 319f66d..3acabaf 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent-1/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent/pom.xml
index fb3e50e..3656858 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-negative/parent/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/child/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/child/pom.xml
index e956917..0c32dc6 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/child/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -24,14 +24,14 @@
         <version>${maven-enforcer-plugin.version}</version>
         <executions>
           <execution>
-            <inherited>false</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>enforce</goal>
             </goals>
+            <phase>validate</phase>
+            <inherited>false</inherited>
             <configuration>
               <rules>
-                <alwaysFail/>
+                <alwaysFail />
               </rules>
             </configuration>
           </execution>
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent-1/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent-1/pom.xml
index ed7b0ef..93449e9 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent-1/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent/pom.xml
index c4c0b47..d8da8f1 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-range-positive/parent/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/child/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/child/pom.xml
index 6a1fec6..b752ac2 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/child/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/child/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -24,14 +24,14 @@
         <version>${maven-enforcer-plugin.version}</version>
         <executions>
           <execution>
-            <inherited>false</inherited>
-            <phase>validate</phase>
             <goals>
               <goal>enforce</goal>
             </goals>
+            <phase>validate</phase>
+            <inherited>false</inherited>
             <configuration>
               <rules>
-                <alwaysFail/>
+                <alwaysFail />
               </rules>
             </configuration>
           </execution>
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent-1/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent-1/pom.xml
index 8c460bf..efad1ab 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent-1/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent/pom.xml b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent/pom.xml
index 87eef90..cc726df 100644
--- a/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5840-relative-path-reactor-matching/parent/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5868/pom.xml b/core-it-suite/src/test/resources/mng-5868/pom.xml
index c10fb55..948c428 100644
--- a/core-it-suite/src/test/resources/mng-5868/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5868/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng5868</groupId>
@@ -10,10 +10,6 @@
   <name>mng5338</name>
   <url>https://issues.apache.org/jira/browse/MNG-5868</url>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-
   <distributionManagement>
     <repository>
       <id>maven-core-it-mng-5868</id>
@@ -21,6 +17,18 @@
     </repository>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.2</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
   <build>
     <pluginManagement>
       <plugins>
@@ -47,10 +55,10 @@
         <executions>
           <execution>
             <id>attach-artifacts</id>
-            <phase>verify</phase>
             <goals>
               <goal>attach</goal>
             </goals>
+            <phase>verify</phase>
           </execution>
         </executions>
       </plugin>
@@ -67,10 +75,10 @@
             <executions>
               <execution>
                 <id>again-attach</id>
-                <phase>process-classes</phase>
                 <goals>
                   <goal>attach</goal>
                 </goals>
+                <phase>process-classes</phase>
               </execution>
             </executions>
           </plugin>
@@ -87,10 +95,10 @@
             <executions>
               <execution>
                 <id>and-again-attach</id>
-                <phase>process-sources</phase>
                 <goals>
                   <goal>attach</goal>
                 </goals>
+                <phase>process-sources</phase>
               </execution>
             </executions>
           </plugin>
@@ -98,13 +106,5 @@
       </build>
     </profile>
   </profiles>
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.2</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5868/src/main/java/org/apache/maven/its/mng5338/App.java b/core-it-suite/src/test/resources/mng-5868/src/main/java/org/apache/maven/its/mng5338/App.java
index 5329396..da8469d 100644
--- a/core-it-suite/src/test/resources/mng-5868/src/main/java/org/apache/maven/its/mng5338/App.java
+++ b/core-it-suite/src/test/resources/mng-5868/src/main/java/org/apache/maven/its/mng5338/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng5338;
 
 /*
@@ -23,10 +41,8 @@
  * Hello world!
  *
  */
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-5889-find.mvn/module/pom.xml b/core-it-suite/src/test/resources/mng-5889-find.mvn/module/pom.xml
index 5476f9a..1a7368d 100644
--- a/core-it-suite/src/test/resources/mng-5889-find.mvn/module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5889-find.mvn/module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-5889-find.mvn/pom.xml b/core-it-suite/src/test/resources/mng-5889-find.mvn/pom.xml
index 54375a5..de0c20a 100644
--- a/core-it-suite/src/test/resources/mng-5889-find.mvn/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5889-find.mvn/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-5889</name>
-  <description>
-    Verify that path/to/.mvn directory is found when using -f/--file path/to/[module/]pom.xml.
-  </description>
+  <description>Verify that path/to/.mvn directory is found when using -f/--file path/to/[module/]pom.xml.</description>
 
   <properties>
     <jvm-config>${jvm.config}</jvm-config>
@@ -57,10 +53,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-1/pom.xml b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-1/pom.xml
index 608fc55..332ee0d 100644
--- a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng-5895-ci-friendly-usage-with-property</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-2/pom.xml b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-2/pom.xml
index f2ac11c..a1f5cd2 100644
--- a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- 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
@@ -10,9 +9,7 @@
   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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-3/pom.xml b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-3/pom.xml
index 9c0aabf..3ee3b80 100644
--- a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- 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
@@ -10,9 +9,7 @@
   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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -38,10 +35,10 @@
         <executions>
           <execution>
             <id>assemblies</id>
-            <phase>package</phase>
             <goals>
               <goal>single</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <descriptors>
                 <descriptor>jar-with-prod.xml</descriptor>
diff --git a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
index 8ab6242..476e419 100644
--- a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,21 +17,25 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5895-ci-friendly-usage-with-property</groupId>
   <artifactId>base-project</artifactId>
   <version>${revision}</version>
   <packaging>pom</packaging>
+  <modules>
+    <module>module-3</module>
+    <module>module-1</module>
+    <module>module-2</module>
+  </modules>
 
   <properties>
     <revision>1.3.0-SNAPSHOT</revision>
   </properties>
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -52,9 +55,4 @@
       </plugins>
     </pluginManagement>
   </build>
-  <modules>
-    <module>module-3</module>
-    <module>module-1</module>
-    <module>module-2</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/ear/pom.xml b/core-it-suite/src/test/resources/mng-5898/ear/pom.xml
index 2eebe45..297a4e7 100644
--- a/core-it-suite/src/test/resources/mng-5898/ear/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/ear/pom.xml
@@ -1,47 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project</groupId>
-   <artifactId>ear</artifactId>
-   <packaging>ear</packaging>
-   <version>1.0</version>
-   <name>ear assembly</name>
-   <parent>
-      <groupId>root</groupId>
-      <artifactId>project</artifactId>
-      <version>1.0</version>
-   </parent>
-   <dependencies>
-      <dependency>
-         <groupId>root.project</groupId>
-         <artifactId>ejbs</artifactId>
-         <type>ejb</type>
-      </dependency>
-      <dependency>
-         <groupId>root.project.servlets</groupId>
-         <artifactId>servlet</artifactId>
-         <type>war</type>
-      </dependency>
-      <dependency>
-         <groupId>root.project</groupId>
-         <artifactId>primary-source</artifactId>
-      </dependency>
-      <dependency>
-         <groupId>root.project.projects</groupId>
-         <artifactId>logging</artifactId>
-      </dependency>
-   </dependencies>
-   <build>
-      <plugins>
-         <plugin>
-            <artifactId>maven-ear-plugin</artifactId>
-            <configuration>
-               <archive>
-                  <manifest>
-                     <addClasspath>true</addClasspath>
-                  </manifest>
-               </archive>
-            </configuration>
-         </plugin>
-      </plugins>
-   </build>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root</groupId>
+    <artifactId>project</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project</groupId>
+  <artifactId>ear</artifactId>
+  <version>1.0</version>
+  <packaging>ear</packaging>
+  <name>ear assembly</name>
+  <dependencies>
+    <dependency>
+      <groupId>root.project</groupId>
+      <artifactId>ejbs</artifactId>
+      <type>ejb</type>
+    </dependency>
+    <dependency>
+      <groupId>root.project.servlets</groupId>
+      <artifactId>servlet</artifactId>
+      <type>war</type>
+    </dependency>
+    <dependency>
+      <groupId>root.project</groupId>
+      <artifactId>primary-source</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>root.project.projects</groupId>
+      <artifactId>logging</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-ear-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifest>
+              <addClasspath>true</addClasspath>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/ejbs/pom.xml b/core-it-suite/src/test/resources/mng-5898/ejbs/pom.xml
index 3477dd7..d395078 100644
--- a/core-it-suite/src/test/resources/mng-5898/ejbs/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/ejbs/pom.xml
@@ -1,37 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project</groupId>
-   <artifactId>ejbs</artifactId>
-   <packaging>ejb</packaging>
-   <version>1.0</version>
-   <name>enterprise java beans</name>
-   <parent>
-      <groupId>root</groupId>
-      <artifactId>project</artifactId>
-      <version>1.0</version>
-   </parent>
-   <dependencies>
-      <dependency>
-         <groupId>root.project</groupId>
-         <artifactId>primary-source</artifactId>
-      </dependency>
-      <dependency>
-         <groupId>root.project.projects</groupId>
-         <artifactId>logging</artifactId>
-      </dependency>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root</groupId>
+    <artifactId>project</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project</groupId>
+  <artifactId>ejbs</artifactId>
+  <version>1.0</version>
+  <packaging>ejb</packaging>
+  <name>enterprise java beans</name>
+  <dependencies>
+    <dependency>
+      <groupId>root.project</groupId>
+      <artifactId>primary-source</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>root.project.projects</groupId>
+      <artifactId>logging</artifactId>
+    </dependency>
   </dependencies>
-   <build>
-      <plugins>
-         <plugin>
-            <artifactId>maven-ejb-plugin</artifactId>
-            <configuration>
-               <archive>
-                  <manifest>
-                     <addClasspath>true</addClasspath>
-                  </manifest>
-               </archive> 
-            </configuration>
-         </plugin>
-      </plugins>
-   </build>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-ejb-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifest>
+              <addClasspath>true</addClasspath>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/pom.xml b/core-it-suite/src/test/resources/mng-5898/pom.xml
index 05b0723..d9f75e9 100644
--- a/core-it-suite/src/test/resources/mng-5898/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/pom.xml
@@ -1,82 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root</groupId>
-   <version>1.0</version>
-   <artifactId>project</artifactId>
-   <packaging>pom</packaging>
-   <name>project</name>
-   <modules>
-      <module>projects</module>
-      <module>primary-source</module>
-      <module>servlets</module>
-      <module>ejbs</module>
-      <module>ear</module>
-    </modules>
-    <build>
-      <pluginManagement>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <version>3.10.1</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-ejb-plugin</artifactId>
-            <version>3.2.1</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-jar-plugin</artifactId>
-            <version>3.3.0</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-resources-plugin</artifactId>
-            <version>3.3.0</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-ear-plugin</artifactId>
-            <version>3.2.0</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-war-plugin</artifactId>
-            <version>3.3.2</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <version>3.0.0-M7</version>
-          </plugin>
-        </plugins>
-      </pluginManagement>
-    </build>
-   <dependencyManagement>
-      <dependencies>
-         <dependency>
-            <groupId>root.project.projects</groupId>
-            <artifactId>logging</artifactId>
-            <version>1.0</version>
-         </dependency>
-         <dependency>
-            <groupId>root.project</groupId>
-            <artifactId>primary-source</artifactId>
-            <version>1.0</version>
-         </dependency>
-         <dependency>
-            <groupId>root.project.servlets</groupId>
-            <artifactId>servlet</artifactId>
-            <version>1.0</version>
-            <type>war</type>
-         </dependency>
-         <dependency>
-            <groupId>root.project</groupId>
-            <artifactId>ejbs</artifactId>
-            <version>1.0</version>
-            <type>ejb</type>
-         </dependency>
-      </dependencies>
-   </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>root</groupId>
+  <artifactId>project</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>project</name>
+  <modules>
+    <module>projects</module>
+    <module>primary-source</module>
+    <module>servlets</module>
+    <module>ejbs</module>
+    <module>ear</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>root.project.projects</groupId>
+        <artifactId>logging</artifactId>
+        <version>1.0</version>
+      </dependency>
+      <dependency>
+        <groupId>root.project</groupId>
+        <artifactId>primary-source</artifactId>
+        <version>1.0</version>
+      </dependency>
+      <dependency>
+        <groupId>root.project.servlets</groupId>
+        <artifactId>servlet</artifactId>
+        <version>1.0</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>root.project</groupId>
+        <artifactId>ejbs</artifactId>
+        <version>1.0</version>
+        <type>ejb</type>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.10.1</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-ejb-plugin</artifactId>
+          <version>3.2.1</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>3.3.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.3.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-ear-plugin</artifactId>
+          <version>3.2.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>3.3.2</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>3.0.0-M7</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/primary-source/pom.xml b/core-it-suite/src/test/resources/mng-5898/primary-source/pom.xml
index 6537299..b93a381 100644
--- a/core-it-suite/src/test/resources/mng-5898/primary-source/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/primary-source/pom.xml
@@ -1,36 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project</groupId>
-   <artifactId>primary-source</artifactId>
-   <packaging>jar</packaging>
-   <name>core project classes</name>
-   <parent>
-      <groupId>root</groupId>
-      <artifactId>project</artifactId>
-      <version>1.0</version>
-   </parent>
-   <dependencies>
-      <dependency>
-         <groupId>root.project.projects</groupId>
-         <artifactId>logging</artifactId>
-      </dependency>                  
-   </dependencies>
-   <build>
-      <plugins>
-         <plugin>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <configuration>
-               <encoding>iso-8859-1</encoding>
-            </configuration>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <configuration>
-               <minmemory>128m</minmemory>
-               <maxmemory>512m</maxmemory>
-            </configuration>
-         </plugin>
-      </plugins>
-   </build>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root</groupId>
+    <artifactId>project</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project</groupId>
+  <artifactId>primary-source</artifactId>
+  <packaging>jar</packaging>
+  <name>core project classes</name>
+  <dependencies>
+    <dependency>
+      <groupId>root.project.projects</groupId>
+      <artifactId>logging</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <encoding>iso-8859-1</encoding>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <minmemory>128m</minmemory>
+          <maxmemory>512m</maxmemory>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/projects/logging/pom.xml b/core-it-suite/src/test/resources/mng-5898/projects/logging/pom.xml
index 4c426ea..824bdc3 100644
--- a/core-it-suite/src/test/resources/mng-5898/projects/logging/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/projects/logging/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project.projects</groupId>
-   <artifactId>logging</artifactId>
-   <packaging>jar</packaging>
-   <name>logging</name>
-   <parent>
-      <groupId>root.project</groupId>
-      <artifactId>projects</artifactId>
-      <version>1.0</version>
-   </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root.project</groupId>
+    <artifactId>projects</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project.projects</groupId>
+  <artifactId>logging</artifactId>
+  <packaging>jar</packaging>
+  <name>logging</name>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/projects/pom.xml b/core-it-suite/src/test/resources/mng-5898/projects/pom.xml
index a7774b6..9172f56 100644
--- a/core-it-suite/src/test/resources/mng-5898/projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/projects/pom.xml
@@ -1,16 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project</groupId>
-   <version>1.0</version>
-   <artifactId>projects</artifactId>
-   <packaging>pom</packaging>
-   <name>sub projects</name>
-   <parent>
-      <groupId>root</groupId>
-      <artifactId>project</artifactId>
-      <version>1.0</version>
-   </parent>
-   <modules>
-      <module>logging</module>
-   </modules>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root</groupId>
+    <artifactId>project</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project</groupId>
+  <artifactId>projects</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>sub projects</name>
+  <modules>
+    <module>logging</module>
+  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5898/servlets/pom.xml b/core-it-suite/src/test/resources/mng-5898/servlets/pom.xml
index a7e6302..4428141 100644
--- a/core-it-suite/src/test/resources/mng-5898/servlets/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/servlets/pom.xml
@@ -1,17 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project</groupId>
-   <artifactId>servlets</artifactId>
-   <packaging>pom</packaging>
-   <name>servlets</name>
-   <version>1.0</version>
-   <parent>
-      <groupId>root</groupId>
-      <artifactId>project</artifactId>
-      <version>1.0</version>
-   </parent>
-   <modules>
-      <module>servlet</module>
-   </modules>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root</groupId>
+    <artifactId>project</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project</groupId>
+  <artifactId>servlets</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <name>servlets</name>
+  <modules>
+    <module>servlet</module>
+  </modules>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-5898/servlets/servlet/pom.xml b/core-it-suite/src/test/resources/mng-5898/servlets/servlet/pom.xml
index b9ce63f..d55c8bf 100644
--- a/core-it-suite/src/test/resources/mng-5898/servlets/servlet/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/servlets/servlet/pom.xml
@@ -1,19 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>root.project.servlets</groupId>
-   <artifactId>servlet</artifactId>
-   <packaging>war</packaging>
-   <name>servlet</name>
-   <parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>root.project</groupId>
+    <artifactId>servlets</artifactId>
+    <version>1.0</version>
+  </parent>
+  <groupId>root.project.servlets</groupId>
+  <artifactId>servlet</artifactId>
+  <packaging>war</packaging>
+  <name>servlet</name>
+  <dependencies>
+    <dependency>
       <groupId>root.project</groupId>
-      <artifactId>servlets</artifactId>
-      <version>1.0</version>
-   </parent>
-   <dependencies>
-      <dependency>
-         <groupId>root.project</groupId>
-         <artifactId>primary-source</artifactId>
-         <scope>provided</scope>
-      </dependency>
-   </dependencies>
+      <artifactId>primary-source</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5935-optional-lost-in-transtive-managed-dependencies/pom.xml b/core-it-suite/src/test/resources/mng-5935-optional-lost-in-transtive-managed-dependencies/pom.xml
index 6e8426c..9d463de 100644
--- a/core-it-suite/src/test/resources/mng-5935-optional-lost-in-transtive-managed-dependencies/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5935-optional-lost-in-transtive-managed-dependencies/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,13 +25,11 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-5935</name>
-  <description>
-    Verify that optional state true does not get lost in managed dependencies when transitive.
-  </description>
+  <description>Verify that optional state true does not get lost in managed dependencies when transitive.</description>
 
   <dependencyManagement>
     <dependencies>
-        <dependency>
+      <dependency>
         <groupId>com.mysema.querydsl</groupId>
         <artifactId>querydsl-core</artifactId>
         <version>3.4.3</version>
@@ -71,10 +67,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>compile</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/bad/pom.xml b/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/bad/pom.xml
index 5ebe8c3..8b7494c 100644
--- a/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/bad/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/bad/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5958-lifecycle-phases</groupId>
@@ -29,13 +26,6 @@
   <packaging>mng5958-bad</packaging>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>mng-5958-pkg-type-extension</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -48,6 +38,13 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>mng-5958-pkg-type-extension</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/good/pom.xml b/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/good/pom.xml
index 64558f8..3c12463 100644
--- a/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/good/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5958-lifecycle-phases/good/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5958-lifecycle-phases</groupId>
@@ -29,13 +26,6 @@
   <packaging>mng5958-good</packaging>
 
   <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>mng-5958-pkg-type-extension</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </extension>
-    </extensions>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -48,6 +38,13 @@
         </plugin>
       </plugins>
     </pluginManagement>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>mng-5958-pkg-type-extension</artifactId>
+        <version>2.1-SNAPSHOT</version>
+      </extension>
+    </extensions>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-1/pom.xml b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-1/pom.xml
index 5c64b41..e22a9cb 100644
--- a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-2/pom.xml b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-2/pom.xml
index c4637ce..a3c827b 100644
--- a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/pom.xml b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/pom.xml
index 971ef54..eafe3e4 100644
--- a/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5965-parallel-build-multiplies-work/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-5965-parallel-build-multiplies-work</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-1/pom.xml
index d82ea65..5037654 100644
--- a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng-6057-check-reactor-order</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-2/pom.xml
index d82b1b9..b7d1cb8 100644
--- a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/pom.xml b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/pom.xml
index dbc9d39..0883c49 100644
--- a/core-it-suite/src/test/resources/mng-6057-check-reactor-order/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6057-check-reactor-order/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6057-check-reactor-order</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6065-fail-on-severity/pom.xml b/core-it-suite/src/test/resources/mng-6065-fail-on-severity/pom.xml
index d08153d..b1e776b 100644
--- a/core-it-suite/src/test/resources/mng-6065-fail-on-severity/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6065-fail-on-severity/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-6065</name>
-  <description>
-    An integration test to verify that builds fail when logs occur above or equal to the --fail-on-severity cli property.
-    An empty project like this will already log warnings about the platform encoding and the empty jar.
-  </description>
+  <description>An integration test to verify that builds fail when logs occur above or equal to the --fail-on-severity cli property.
+    An empty project like this will already log warnings about the platform encoding and the empty jar.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6071/pom.xml b/core-it-suite/src/test/resources/mng-6071/pom.xml
index 3ac27f9..cee6ebd 100644
--- a/core-it-suite/src/test/resources/mng-6071/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6071/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6071</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6071/src/test/java/com/mycompany/app/AppTest.java b/core-it-suite/src/test/resources/mng-6071/src/test/java/com/mycompany/app/AppTest.java
index 8e62a78..e023687 100644
--- a/core-it-suite/src/test/resources/mng-6071/src/test/java/com/mycompany/app/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-6071/src/test/java/com/mycompany/app/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package com.mycompany.app;
 
 /*
@@ -19,22 +37,20 @@
  * under the License.
  */
 
-import org.junit.Test;
-
 import java.net.URL;
 
+import org.junit.Test;
+
 import static org.junit.Assert.assertNotNull;
 
 /**
  * Unit test for simple App.
  */
-public class AppTest
-{
+public class AppTest {
     @Test
-    public void shouldAnswerWithTrue()
-    {
-        URL resource = getClass().getResource( "/" );
-        System.out.println( resource );
-        assertNotNull( resource );
+    public void shouldAnswerWithTrue() {
+        URL resource = getClass().getResource("/");
+        System.out.println(resource);
+        assertNotNull(resource);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6084-jsr250-support/pom.xml b/core-it-suite/src/test/resources/mng-6084-jsr250-support/pom.xml
index e5ffffe..ee43dba 100644
--- a/core-it-suite/src/test/resources/mng-6084-jsr250-support/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6084-jsr250-support/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng6084</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Component.java b/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Component.java
index 526e05c..3617b5c 100644
--- a/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Component.java
+++ b/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Component.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugins;
 
 /*
@@ -19,41 +37,38 @@
  * under the License.
  */
 
-import javax.inject.Named;
-import javax.inject.Singleton;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 @Named
 @Singleton
-public class Jsr250Component
-{
+public class Jsr250Component {
 
     @PostConstruct
-    public void init()
-    {
+    public void init() {
         System.out.println();
         System.out.println();
-        System.out.println( "Hello! I am a component using JSR 250 with @PostConstruct support" );
+        System.out.println("Hello! I am a component using JSR 250 with @PostConstruct support");
         System.out.println();
         System.out.println();
     }
 
-    public void hello()
-    {
+    public void hello() {
         System.out.println();
         System.out.println();
-        System.out.println( "Hello! I am a component that is being used via constructor injection! That's right, I'm a JSR 330 badass." );
+        System.out.println(
+                "Hello! I am a component that is being used via constructor injection! That's right, I'm a JSR 330 badass.");
         System.out.println();
         System.out.println();
     }
 
     @PreDestroy
-    public void cleanup()
-    {
+    public void cleanup() {
         System.out.println();
         System.out.println();
-        System.out.println( "Hello! I am a component using JSR 250 with @PreDestroy support" );
+        System.out.println("Hello! I am a component using JSR 250 with @PreDestroy support");
         System.out.println();
         System.out.println();
     }
diff --git a/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Mojo.java b/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Mojo.java
index 0f5cf12..3d70635 100644
--- a/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Mojo.java
+++ b/core-it-suite/src/test/resources/mng-6084-jsr250-support/src/main/java/org/apache/maven/plugins/Jsr250Mojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.plugins;
 
 /*
@@ -26,22 +44,17 @@
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "hello", defaultPhase = LifecyclePhase.VALIDATE, requiresProject = false )
-public class Jsr250Mojo
-    extends AbstractMojo
-{
+@Mojo(name = "hello", defaultPhase = LifecyclePhase.VALIDATE, requiresProject = false)
+public class Jsr250Mojo extends AbstractMojo {
 
     private Jsr250Component component;
 
     @Inject
-    public Jsr250Mojo( Jsr250Component component )
-    {
+    public Jsr250Mojo(Jsr250Component component) {
         this.component = component;
     }
 
-    public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         //
         // Say hello to the world, my little constructor-injected component!
         //
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-1/pom.xml
index f08d215..e5802d8 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng-6090-ci-friendly</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-2/pom.xml
index e29d71c..b79e3e9 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- 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
@@ -10,9 +9,7 @@
   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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
index b2656c8..e9a68cc 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- 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
@@ -10,13 +9,11 @@
   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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <groupId>mng-6090-ci-friendly</groupId>
+    <groupId>mng-6090-ci-friendly</groupId>
     <artifactId>base-project</artifactId>
     <version>${revision}</version>
   </parent>
@@ -24,7 +21,7 @@
 
   <dependencies>
     <dependency>
-        <groupId>mng-6090-ci-friendly</groupId>
+      <groupId>mng-6090-ci-friendly</groupId>
       <artifactId>module-2</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -39,10 +36,10 @@
         <executions>
           <execution>
             <id>assemblies</id>
-            <phase>package</phase>
             <goals>
               <goal>single</goal>
             </goals>
+            <phase>package</phase>
             <configuration>
               <descriptors>
                 <descriptor>jar-with-prod.xml</descriptor>
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
index bb4baf8..41c59a0 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,27 +17,26 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6090-ci-friendly</groupId>
   <artifactId>base-project</artifactId>
   <version>${revision}</version>
   <packaging>pom</packaging>
-
-  <properties>
-    <revision>1.3.0-SNAPSHOT</revision>
-  </properties>
   <modules>
     <module>module-3</module>
     <module>module-1</module>
     <module>module-2</module>
   </modules>
 
+  <properties>
+    <revision>1.3.0-SNAPSHOT</revision>
+  </properties>
+
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -72,17 +70,17 @@
         <executions>
           <execution>
             <id>flatten</id>
-            <phase>process-resources</phase>
             <goals>
               <goal>flatten</goal>
             </goals>
+            <phase>process-resources</phase>
           </execution>
           <execution>
             <id>flatten.clean</id>
-            <phase>clean</phase>
             <goals>
               <goal>clean</goal>
             </goals>
+            <phase>clean</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/pom.xml b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/pom.xml
index 88a6635..36d8c18 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,11 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.its.mng6118</groupId>
+    <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/main/java/org/apache/its/mng6118/App.java b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/main/java/org/apache/its/mng6118/App.java
index 77213e7..2bf72f6 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/main/java/org/apache/its/mng6118/App.java
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/main/java/org/apache/its/mng6118/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.its.mng6118;
 
 /*
@@ -19,11 +37,9 @@
  * under the License.
  */
 
-public class App
-{
-    public static void main( String[] args )
-    {
+public class App {
+    public static void main(String[] args) {
         new Helper().generateObject();
-        System.out.println( "Hello World!" );
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/test/java/org/apache/its/mng6118/AppTest.java b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/test/java/org/apache/its/mng6118/AppTest.java
index cea86af..333fdcf 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/test/java/org/apache/its/mng6118/AppTest.java
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/app/src/test/java/org/apache/its/mng6118/AppTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.its.mng6118;
 
 /*
@@ -19,15 +37,13 @@
  * under the License.
  */
 
-import static org.junit.Assert.assertTrue;
-
 import org.junit.Test;
 
-public class AppTest
-{
+import static org.junit.Assert.assertTrue;
+
+public class AppTest {
     @Test
-    public void shouldAnswerWithTrue()
-    {
-        assertTrue( true );
+    public void shouldAnswerWithTrue() {
+        assertTrue(true);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/pom.xml b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/pom.xml
index 5f1a103..a96f223 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,11 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.its.mng6118</groupId>
+    <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/main/java/org/apache/its/mng6118/Helper.java b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/main/java/org/apache/its/mng6118/Helper.java
index bb8ad0c..34cdcce 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/main/java/org/apache/its/mng6118/Helper.java
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/main/java/org/apache/its/mng6118/Helper.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.its.mng6118;
 
 /*
@@ -19,10 +37,8 @@
  * under the License.
  */
 
-public class Helper
-{
-    public Object generateObject()
-    {
+public class Helper {
+    public Object generateObject() {
         return new Object();
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/test/java/org/apache/its/mng6118/HelperTest.java b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/test/java/org/apache/its/mng6118/HelperTest.java
index 8ed8133..5e8d455 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/test/java/org/apache/its/mng6118/HelperTest.java
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/lib/src/test/java/org/apache/its/mng6118/HelperTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.its.mng6118;
 
 /*
@@ -19,19 +37,17 @@
  * under the License.
  */
 
-import static org.junit.Assert.assertThat;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-
 import org.junit.Test;
 
-public class HelperTest
-{
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+public class HelperTest {
     private final Helper helper = new Helper();
 
     @Test
-    public void shouldAnswerWithTrue()
-    {
-        assertThat( helper.generateObject(), is( notNullValue() ) );
+    public void shouldAnswerWithTrue() {
+        assertThat(helper.generateObject(), is(notNullValue()));
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
index 6dedae7..a7870ae 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.its.mng6118</groupId>
@@ -31,9 +27,12 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-6118</name>
-  <description>
-    Tests for invoking Maven in a submodule while having access to the full reactor.
-  </description>
+  <description>Tests for invoking Maven in a submodule while having access to the full reactor.</description>
+
+  <modules>
+    <module>lib</module>
+    <module>app</module>
+  </modules>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -41,10 +40,21 @@
     <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
-  <modules>
-    <module>lib</module>
-    <module>app</module>
-  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.its.mng6118</groupId>
+        <artifactId>lib</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>4.12</version>
+        <scope>test</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 
   <build>
     <pluginManagement>
@@ -68,20 +78,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.apache.its.mng6118</groupId>
-        <artifactId>lib</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.12</version>
-        <scope>test</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
index ed34ab5..0d440a4 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6127</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/src/main/java/org/apache/maven/its/mng6127/plugin/TestMojo.java b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/src/main/java/org/apache/maven/its/mng6127/plugin/TestMojo.java
index f5245ff..113c1d3 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/src/main/java/org/apache/maven/its/mng6127/plugin/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/src/main/java/org/apache/maven/its/mng6127/plugin/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng6127.plugin;
 
 /*
@@ -34,9 +52,7 @@
  *
  * @goal test
  */
-public class TestMojo
-    extends AbstractMojo
-{
+public class TestMojo extends AbstractMojo {
     /**
      * The Maven project.
      *
@@ -58,37 +74,25 @@
      */
     private String secondName;
 
-    public void execute()
-        throws MojoExecutionException
-    {
-        File file = new File( project.getBasedir(), "configuration.txt" );
+    public void execute() throws MojoExecutionException {
+        File file = new File(project.getBasedir(), "configuration.txt");
         file.getParentFile().mkdirs();
 
         Writer w = null;
 
-        try
-        {
-            w = new OutputStreamWriter( new FileOutputStream( file, true ), "UTF-8" );
-            if ( name != null )
-            {
-                w.write( "name=" + name + ", " );
+        try {
+            w = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");
+            if (name != null) {
+                w.write("name=" + name + ", ");
             }
-            w.write( "secondName=" + secondName );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("secondName=" + secondName);
+        } catch (IOException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                 }
             }
         }
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-a/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-a/pom.xml
index c87b8cc..dd06d14 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-b/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-b/pom.xml
index eae0055..424c9c0 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-c/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-c/pom.xml
index 6a8eae1..8185a35 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/mod-c/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/pom.xml
index e788fb2..031305f 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,15 +17,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6127</groupId>
   <artifactId>mng-6127-project</artifactId>
-  <packaging>pom</packaging>
   <version>0.1</version>
+  <packaging>pom</packaging>
 
   <modules>
     <module>mod-a</module>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-1/pom.xml
index 1379931..e77f616 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
@@ -46,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-2/pom.xml
index c807d40..718701e 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/pom.xml
index 91d5b06..c8fc22c 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-all-projects-in-reactor/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-1/pom.xml
index 6c583bb..a5ab157 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
@@ -46,10 +43,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-2/pom.xml
index c807d40..718701e 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/pom.xml b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/pom.xml
index 91d5b06..c8fc22c 100644
--- a/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6173-get-projects-and-dependency-graph/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6173-get-all-projects-in-reactor</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml b/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
index ade3ce5..e0d3266 100644
--- a/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-6189</name>
-  <description>
-    Check that using maven-site-plugin reportPlugins parameter causes a warning.
-  </description>
+  <description>Check that using maven-site-plugin reportPlugins parameter causes a warning.</description>
 
   <build>
     <plugins>
@@ -38,17 +34,9 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-site-plugin</artifactId>
         <version>0.1-stub-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>site</id>
-            <phase>site</phase>
-            <goals>
-              <goal>site</goal>
-            </goals>
-          </execution>
-        </executions>
         <configuration>
-          <reportPlugins><!-- reporting section is preferred -->
+          <reportPlugins>
+            <!-- reporting section is preferred -->
             <reportPlugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-report-plugin</artifactId>
@@ -56,6 +44,15 @@
             </reportPlugin>
           </reportPlugins>
         </configuration>
+        <executions>
+          <execution>
+            <id>site</id>
+            <goals>
+              <goal>site</goal>
+            </goals>
+            <phase>site</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/client/pom.xml b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/client/pom.xml
index 4e6a49c..8c00dd5 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/client/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/client/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,10 +26,8 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions-custom-scopes</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
   <build>
     <plugins>
@@ -42,11 +38,11 @@
         <executions>
           <execution>
             <id>validate-extensions</id>
-            <phase>validate</phase>
             <goals>
               <goal>validate-session-execution-scoped</goal>
               <goal>validate-session-scoped</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
index b3e276b..5c8c4bf 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: maven-it-core-extensions</name>
-  <description>
-    Maven core extensions components that use @SessionScope and @MojoExecutionScope Guice scopes
-  </description>
+  <description>Maven core extensions components that use @SessionScope and @MojoExecutionScope Guice scopes</description>
 
   <!--
     mvn clean deploy -DaltDeploymentRepository=default::default::file://
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestMojoExecutionScopedComponent.java b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestMojoExecutionScopedComponent.java
index 810b999..6d3bef7 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestMojoExecutionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestMojoExecutionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.extensions;
 
 import javax.inject.Named;
@@ -6,7 +24,4 @@
 
 @Named
 @MojoExecutionScoped
-public class TestMojoExecutionScopedComponent
-{
-
-}
+public class TestMojoExecutionScopedComponent {}
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestSessionScopedComponent.java b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestSessionScopedComponent.java
index 1f37691..e94864c 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestSessionScopedComponent.java
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/src/main/java/org/apache/maven/its/extensions/TestSessionScopedComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.extensions;
 
 import javax.inject.Named;
@@ -6,6 +24,4 @@
 
 @Named
 @SessionScoped
-public class TestSessionScopedComponent
-{
-}
+public class TestSessionScopedComponent {}
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
index 3ddccbf..c601c00 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>maven-plugin</packaging>
 
   <name>Maven Integration Test :: maven-it-plugin-core-extensions-custom-scopes-client</name>
-  <description>
-    Maven plugin that fails if expected components were not contributed by the core extension
-  </description>
+  <description>Maven plugin that fails if expected components were not contributed by the core extension</description>
 
   <!--
     mvn clean deploy -DaltDeploymentRepository=default::default::file://
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateMojoExecutionScopedMojo.java b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateMojoExecutionScopedMojo.java
index 83f7f65..7cee6af 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateMojoExecutionScopedMojo.java
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateMojoExecutionScopedMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.plugin;
 
 import org.apache.maven.its.extensions.TestMojoExecutionScopedComponent;
@@ -7,19 +25,14 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "validate-session-execution-scoped" )
-public class ValidateMojoExecutionScopedMojo
-    extends AbstractMojo
-{
+@Mojo(name = "validate-session-execution-scoped")
+public class ValidateMojoExecutionScopedMojo extends AbstractMojo {
     @Component
     private TestMojoExecutionScopedComponent component;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( this.component == null )
-        {
-            throw new MojoExecutionException( "Expected core extension component is not available" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (this.component == null) {
+            throw new MojoExecutionException("Expected core extension component is not available");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateSessionScopedMojo.java b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateSessionScopedMojo.java
index 38c0cf2..acc2008 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateSessionScopedMojo.java
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/src/main/java/org/apache/maven/its/plugin/ValidateSessionScopedMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.plugin;
 
 import org.apache.maven.its.extensions.TestSessionScopedComponent;
@@ -7,20 +25,14 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "validate-session-scoped" )
-public class ValidateSessionScopedMojo
-    extends AbstractMojo
-{
+@Mojo(name = "validate-session-scoped")
+public class ValidateSessionScopedMojo extends AbstractMojo {
     @Component
     private TestSessionScopedComponent component;
 
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( this.component == null )
-        {
-            throw new MojoExecutionException( "Expected core extension component is not available" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (this.component == null) {
+            throw new MojoExecutionException("Expected core extension component is not available");
         }
     }
-
 }
diff --git a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
index 89e08be..a8dfa38 100644
--- a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng6240</groupId>
   <artifactId>plugin-extension</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/src/main/java/org/apache/maven/its/plugin/TestMojo.java b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/src/main/java/org/apache/maven/its/plugin/TestMojo.java
index a16a27d..658ed53 100644
--- a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/src/main/java/org/apache/maven/its/plugin/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/src/main/java/org/apache/maven/its/plugin/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng6209.multiple.build.extensions.pluginb;
 
 /*
@@ -26,11 +44,6 @@
 /**
  * @goal test
  */
-public class TestMojo
-    extends AbstractMojo
-{
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-    }
+public class TestMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException, MojoFailureException {}
 }
diff --git a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/project/pom.xml b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/project/pom.xml
index 5b8ac7e..8882bdb 100644
--- a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,22 +17,20 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng6240</groupId>
   <artifactId>project</artifactId>
   <version>1.0-SNAPSHOT</version>
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
   <distributionManagement>
     <snapshotRepository>
       <id>local-repo</id>
       <url>file://${project.basedir}/repo</url>
     </snapshotRepository>
   </distributionManagement>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-6255/pom.xml b/core-it-suite/src/test/resources/mng-6255/pom.xml
index 90fe9e1..84944b6 100644
--- a/core-it-suite/src/test/resources/mng-6255/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6255/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-6255</name>
-  <description>
-    Verify that .mvn/jvm.config file is parsed correctly with different line endings
-  </description>
+  <description>Verify that .mvn/jvm.config file is parsed correctly with different line endings</description>
 
   <properties>
     <jvm-config>${jvm.config}</jvm-config>
@@ -55,10 +51,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with- -space/pom.xml b/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with- -space/pom.xml
index 1faf517..81d21c2 100644
--- a/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with- -space/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with- -space/pom.xml
@@ -1,8 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>scratch</groupId>
   <artifactId>scratch</artifactId>
   <version>0.0.1-SNAPSHOT</version>
-  <build>
-  </build>
+  <build />
 </project>
diff --git "a/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with-\051-closing-bracket/pom.xml" "b/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with-\051-closing-bracket/pom.xml"
index 1faf517..81d21c2 100644
--- "a/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with-\051-closing-bracket/pom.xml"
+++ "b/core-it-suite/src/test/resources/mng-6256-special-chars-alternate-pom-location/directory-with-\051-closing-bracket/pom.xml"
@@ -1,8 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>scratch</groupId>
   <artifactId>scratch</artifactId>
   <version>0.0.1-SNAPSHOT</version>
-  <build>
-  </build>
+  <build />
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6326-core-extensions-not-found/pom.xml b/core-it-suite/src/test/resources/mng-6326-core-extensions-not-found/pom.xml
index 8905056..5807bd3 100644
--- a/core-it-suite/src/test/resources/mng-6326-core-extensions-not-found/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6326-core-extensions-not-found/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: it-core-extensions</name>
-  <description>
-    Verify that Maven loads core extensions and components contributed by the extensions are available to regular
-    plugins.
-  </description>
+  <description>Verify that Maven loads core extensions and components contributed by the extensions are available to regular
+    plugins.</description>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6330-relative-path/pom.xml b/core-it-suite/src/test/resources/mng-6330-relative-path/pom.xml
index d4552d9..1e94171 100644
--- a/core-it-suite/src/test/resources/mng-6330-relative-path/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6330-relative-path/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
@@ -16,7 +17,6 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.its.mng6330</groupId>
@@ -25,7 +25,8 @@
   <packaging>pom</packaging>
 
   <modules>
-    <module>subproject1</module> <!-- caches parent -->
+    <module>subproject1</module>
+    <!-- caches parent -->
     <module>sub/subproject2</module>
   </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6330-relative-path/sub/subproject2/pom.xml b/core-it-suite/src/test/resources/mng-6330-relative-path/sub/subproject2/pom.xml
index 038cb79..4818395 100644
--- a/core-it-suite/src/test/resources/mng-6330-relative-path/sub/subproject2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6330-relative-path/sub/subproject2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
@@ -16,7 +17,6 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6330-relative-path/subproject1/pom.xml b/core-it-suite/src/test/resources/mng-6330-relative-path/subproject1/pom.xml
index 25a98d8..83d9adc 100644
--- a/core-it-suite/src/test/resources/mng-6330-relative-path/subproject1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6330-relative-path/subproject1/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
@@ -16,7 +17,6 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6352-print-version/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6352-print-version/module-1/pom.xml
index 822f847..509b518 100644
--- a/core-it-suite/src/test/resources/mng-6352-print-version/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6352-print-version/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng-6352-print-version</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6352-print-version/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6352-print-version/module-2/pom.xml
index 1a04229..82bcf85 100644
--- a/core-it-suite/src/test/resources/mng-6352-print-version/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6352-print-version/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6352-print-version/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6352-print-version/module-3/pom.xml
index dfad8a2..a5d4dda 100644
--- a/core-it-suite/src/test/resources/mng-6352-print-version/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6352-print-version/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml b/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
index 102381a..c2f0052 100644
--- a/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6352-print-version</groupId>
@@ -35,7 +32,8 @@
   </modules>
 
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git "a/core-it-suite/src/test/resources/mng-6386-\321\215\321\202\320\276 \320\277\320\276-\321\200\321\203\321\201\321\201\320\272\320\270\320\271/pom.xml" "b/core-it-suite/src/test/resources/mng-6386-\321\215\321\202\320\276 \320\277\320\276-\321\200\321\203\321\201\321\201\320\272\320\270\320\271/pom.xml"
index fe7dacf..0009e81 100644
--- "a/core-it-suite/src/test/resources/mng-6386-\321\215\321\202\320\276 \320\277\320\276-\321\200\321\203\321\201\321\201\320\272\320\270\320\271/pom.xml"
+++ "b/core-it-suite/src/test/resources/mng-6386-\321\215\321\202\320\276 \320\277\320\276-\321\200\321\203\321\201\321\201\320\272\320\270\320\271/pom.xml"
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,11 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-6386 (Unicode Chars)</name>
-  <description>
-    Test project.baseUri property (RFC 3986 compliance).
-  </description>
+  <description>Test project.baseUri property (RFC 3986 compliance).</description>
+
+  <properties>
+    <pomProperty>${project.baseUri}</pomProperty>
+  </properties>
 
   <build>
     <plugins>
@@ -39,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
@@ -54,8 +54,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <properties>
-    <pomProperty>${project.baseUri}</pomProperty>
-  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6386/pom.xml b/core-it-suite/src/test/resources/mng-6386/pom.xml
index 8ecb601..89ac8e0 100644
--- a/core-it-suite/src/test/resources/mng-6386/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6386/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,11 @@
   <version>0.1</version>
 
   <name>Maven Integration Test :: MNG-6386</name>
-  <description>
-    Test project.baseUri property (RFC 3986 compliance).
-  </description>
+  <description>Test project.baseUri property (RFC 3986 compliance).</description>
+
+  <properties>
+    <pomProperty>${project.baseUri}</pomProperty>
+  </properties>
 
   <build>
     <plugins>
@@ -39,10 +39,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
@@ -54,8 +54,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <properties>
-    <pomProperty>${project.baseUri}</pomProperty>
-  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-1/pom.xml
index f5cad17..a527cf2 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6352-print-version</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-2/pom.xml
index abc040e..c4295e4 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,12 +17,9 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-
   <groupId>mng-6352-print-version</groupId>
   <artifactId>module-2</artifactId>
   <version>7.5-SNAPSHOT</version>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-3/pom.xml
index b52cbec..486f562 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6352-print-version</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
index 66d7a95..f237c37 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6352-print-version</groupId>
@@ -35,7 +32,8 @@
   </modules>
 
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version/module-1/pom.xml
index 822f847..509b518 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>mng-6352-print-version</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version/module-2/pom.xml
index 1a04229..82bcf85 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version/module-3/pom.xml
index dfad8a2..a5d4dda 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
index 102381a..c2f0052 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6352-print-version</groupId>
@@ -35,7 +32,8 @@
   </modules>
 
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
index 7c812a2..fafbea1 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -41,4 +39,4 @@
       <scope>provided</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestAnnotation.java b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestAnnotation.java
index cd0ef05..ffe4467 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestAnnotation.java
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestAnnotation.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -19,12 +37,9 @@
  * under the License.
  */
 
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
 import java.lang.annotation.Retention;
 
-@Retention( RUNTIME )
-public @interface TestAnnotation
-{
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-}
+@Retention(RUNTIME)
+public @interface TestAnnotation {}
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestMojo.java b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestMojo.java
index d9aaa95..c758374 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -24,19 +42,14 @@
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test" )
-public class TestMojo extends AbstractMojo
-{
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        TestAnnotation ann = TestMojo.class.getPackage().getAnnotation( TestAnnotation.class );
-        if ( ann == null )
-        {
-            throw new MojoFailureException( "Failed to retrieve package annotation" );
-        }
-        else
-        {
-            getLog().info( "MNG-6506 check succeeded" );
+@Mojo(name = "test")
+public class TestMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        TestAnnotation ann = TestMojo.class.getPackage().getAnnotation(TestAnnotation.class);
+        if (ann == null) {
+            throw new MojoFailureException("Failed to retrieve package annotation");
+        } else {
+            getLog().info("MNG-6506 check succeeded");
         }
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/package-info.java b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/package-info.java
index 72ce6c6..d0b9f39 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/package-info.java
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/src/main/java/testmojo/package-info.java
@@ -18,4 +18,4 @@
  */
 
 @testmojo.TestAnnotation
-package testmojo;
\ No newline at end of file
+package testmojo;
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/project/pom.xml b/core-it-suite/src/test/resources/mng-6506-package-annotation/project/pom.xml
index 73d73c8..bd79f3d 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -35,10 +33,10 @@
         <version>0.1</version>
         <executions>
           <execution>
-            <phase>test</phase>
             <goals>
               <goal>test</goal>
             </goals>
+            <phase>test</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/pom.xml b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/pom.xml
index 15902f9..1ca128b 100644
--- a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,14 +17,11 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <artifactId>parent</artifactId>
     <groupId>org.apache.its.mng6511</groupId>
+    <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
@@ -44,10 +40,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/src/main/java/org/apache/its/mng6511/App.java b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/src/main/java/org/apache/its/mng6511/App.java
index bf99580..1cd4afb 100644
--- a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/src/main/java/org/apache/its/mng6511/App.java
+++ b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/existing-module/src/main/java/org/apache/its/mng6511/App.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.its.mng6511;
 
 /*
@@ -19,10 +37,8 @@
  * under the License.
  */
 
-public class App
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
+public class App {
+    public static void main(String[] args) {
+        System.out.println("Hello World!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
index ee5591b..235db14 100644
--- a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.its.mng6511</groupId>
@@ -31,9 +27,11 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-6511</name>
-  <description>
-    Tests for selecting and deselecting optional projects using the question mark classifier.
-  </description>
+  <description>Tests for selecting and deselecting optional projects using the question mark classifier.</description>
+
+  <modules>
+    <module>existing-module</module>
+  </modules>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -41,10 +39,6 @@
     <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
-  <modules>
-    <module>existing-module</module>
-  </modules>
-
   <build>
     <pluginManagement>
       <!-- maven-resources-plugin, maven-compiler-plugin -->
diff --git a/core-it-suite/src/test/resources/mng-6558/pom.xml b/core-it-suite/src/test/resources/mng-6558/pom.xml
index ad73a0a..ec0e9bf 100644
--- a/core-it-suite/src/test/resources/mng-6558/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6558/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,7 +26,5 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-6558</name>
-  <description>
-    Verify that ToolchainsBuildingRequest and ToolchainsBuildingResult events are emitted via event spy.
-  </description>
+  <description>Verify that ToolchainsBuildingRequest and ToolchainsBuildingResult events are emitted via event spy.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6562-default-bindings/pom.xml b/core-it-suite/src/test/resources/mng-6562-default-bindings/pom.xml
index 08bf499..46b0365 100644
--- a/core-it-suite/src/test/resources/mng-6562-default-bindings/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6562-default-bindings/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/consumer/pom.xml b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/consumer/pom.xml
index 07579f5..d05f780 100644
--- a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,6 +25,14 @@
   <version>1.0-SNAPSHOT</version>
 
   <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>0.1-stub-SNAPSHOT</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.its.mng6566</groupId>
@@ -42,13 +48,5 @@
         </executions>
       </plugin>
     </plugins>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <version>0.1-stub-SNAPSHOT</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
index cb0b7d1..c559fe6 100644
--- a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng6566</groupId>
@@ -49,4 +46,4 @@
     </dependency>
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
index d469e93..866ccb7 100644
--- a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
+++ b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -26,12 +44,10 @@
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "require-compile-phase" )
-@Execute( phase = LifecyclePhase.COMPILE )
-public class RequiresCompilePhaseMojo extends AbstractMojo
-{
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        getLog().info( "MNG-6566 plugin require-compile-phase goal executed" );
+@Mojo(name = "require-compile-phase")
+@Execute(phase = LifecyclePhase.COMPILE)
+public class RequiresCompilePhaseMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        getLog().info("MNG-6566 plugin require-compile-phase goal executed");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6609/jar-no-packaging/pom.xml b/core-it-suite/src/test/resources/mng-6609/jar-no-packaging/pom.xml
index 1563cac..4cf0573 100644
--- a/core-it-suite/src/test/resources/mng-6609/jar-no-packaging/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6609/jar-no-packaging/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,18 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>jar-no-packaging</artifactId>
-  <version>0.1</version>
-
-  <name>Maven Integration Test :: MNG-6609 :: Jar (no packaging)</name>
-
   <parent>
     <groupId>org.apache.maven.its.mng6609</groupId>
     <artifactId>test</artifactId>
     <version>0.1</version>
   </parent>
-</project>
\ No newline at end of file
+
+  <artifactId>jar-no-packaging</artifactId>
+  <version>0.1</version>
+
+  <name>Maven Integration Test :: MNG-6609 :: Jar (no packaging)</name>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6609/jar/pom.xml b/core-it-suite/src/test/resources/mng-6609/jar/pom.xml
index 4771eed..8849e20 100644
--- a/core-it-suite/src/test/resources/mng-6609/jar/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6609/jar/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,18 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>jar</artifactId>
-  <version>0.1</version>
-  <packaging>jar</packaging>
-
-  <name>Maven Integration Test :: MNG-6609 :: Jar</name>
-
   <parent>
     <groupId>org.apache.maven.its.mng6609</groupId>
     <artifactId>test</artifactId>
     <version>0.1</version>
   </parent>
-</project>
\ No newline at end of file
+
+  <artifactId>jar</artifactId>
+  <version>0.1</version>
+  <packaging>jar</packaging>
+
+  <name>Maven Integration Test :: MNG-6609 :: Jar</name>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6609/pom.xml b/core-it-suite/src/test/resources/mng-6609/pom.xml
index 8870c6b..77c8b48 100644
--- a/core-it-suite/src/test/resources/mng-6609/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6609/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,13 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-6609</name>
-  <description>
-    Test that profiles in the POM can be activated by the special propery "project.packaging" which contains the current project's packaging.
-  </description>
+  <description>Test that profiles in the POM can be activated by the special propery "project.packaging" which contains the current project's packaging.</description>
+
+  <modules>
+    <module>jar</module>
+    <module>jar-no-packaging</module>
+    <module>war</module>
+  </modules>
 
   <build>
     <plugins>
@@ -40,10 +42,10 @@
         <version>2.1-SNAPSHOT</version>
         <executions>
           <execution>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <outputFile>target/profile.properties</outputFile>
               <expressions>
@@ -56,12 +58,6 @@
     </plugins>
   </build>
 
-  <modules>
-    <module>jar</module>
-    <module>jar-no-packaging</module>
-    <module>war</module>
-  </modules>
-
   <profiles>
     <profile>
       <id>jar</id>
diff --git a/core-it-suite/src/test/resources/mng-6609/war/pom.xml b/core-it-suite/src/test/resources/mng-6609/war/pom.xml
index aa4c0fb..73801e2 100644
--- a/core-it-suite/src/test/resources/mng-6609/war/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6609/war/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,18 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>war</artifactId>
-  <version>0.1</version>
-  <packaging>war</packaging>
-
-  <name>Maven Integration Test :: MNG-6609 :: War</name>
-
   <parent>
     <groupId>org.apache.maven.its.mng6609</groupId>
     <artifactId>test</artifactId>
     <version>0.1</version>
   </parent>
-</project>
\ No newline at end of file
+
+  <artifactId>war</artifactId>
+  <version>0.1</version>
+  <packaging>war</packaging>
+
+  <name>Maven Integration Test :: MNG-6609 :: War</name>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/pom.xml b/core-it-suite/src/test/resources/mng-6656-buildconsumer/pom.xml
index 5060c68..2c66f72 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.sonatype.mavenbook.multi</groupId>
   <artifactId>parent</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/pom.xml b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/pom.xml
index 2fbd5b2..526699b 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
@@ -30,7 +26,7 @@
   <artifactId>simple-parent</artifactId>
   <packaging>pom</packaging>
   <name>Multi Chapter Simple Parent Project</name>
- 
+
   <modules>
     <module>simple-weather</module>
     <module>simple-webapp</module>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-weather/pom.xml b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-weather/pom.xml
index 4c19d0d..61e5091 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-weather/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-weather/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
index a1ac951..94e0ebe 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
index 9faeb73..b84b014 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6720-fail-fast</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/Module1Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/Module1Test.java
deleted file mode 100644
index 170c55d..0000000
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/Module1Test.java
+++ /dev/null
@@ -1,12 +0,0 @@
-import org.junit.Test;
-
-public class Module1Test
-{
-    @Test
-    public void test() throws Exception
-    {
-        Thread.sleep( 1000L );
-        System.out.println( "Module1" );
-        throw new RuntimeException();
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/mng6720/Module1Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/mng6720/Module1Test.java
new file mode 100644
index 0000000..adfe44e
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/src/test/java/mng6720/Module1Test.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package mng6720;
+
+import org.junit.Test;
+
+public class Module1Test {
+    @Test
+    public void test() throws Exception {
+        Thread.sleep(1000L);
+        System.out.println("Module1");
+        throw new RuntimeException();
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
index 483ac75..0513259 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6720-fail-fast</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/Module2Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/Module2Test.java
deleted file mode 100644
index 8dd7b50..0000000
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/Module2Test.java
+++ /dev/null
@@ -1,11 +0,0 @@
-import org.junit.Test;
-
-public class Module2Test
-{
-    @Test
-    public void test() throws Exception
-    {
-        Thread.sleep( 2000L );
-        System.out.println( "Module2" );
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/mng6720/Module2Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/mng6720/Module2Test.java
new file mode 100644
index 0000000..7056e6a
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/src/test/java/mng6720/Module2Test.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package mng6720;
+
+import org.junit.Test;
+
+public class Module2Test {
+    @Test
+    public void test() throws Exception {
+        Thread.sleep(2000L);
+        System.out.println("Module2");
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
index 6eb9d78..5a155c0 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6720-fail-fast</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/Module3Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/Module3Test.java
deleted file mode 100644
index 24f5f4a..0000000
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/Module3Test.java
+++ /dev/null
@@ -1,10 +0,0 @@
-import org.junit.Test;
-
-public class Module3Test
-{
-    @Test
-    public void test()
-    {
-        System.out.println( "Module3" );
-    }
-}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/mng6720/Module3Test.java b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/mng6720/Module3Test.java
new file mode 100644
index 0000000..9118076
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/src/test/java/mng6720/Module3Test.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package mng6720;
+
+import org.junit.Test;
+
+public class Module3Test {
+    @Test
+    public void test() {
+        System.out.println("Module3");
+    }
+}
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
index 6f71a65..e15ee22 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-6720-fail-fast</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
index ff1562d..6087edc 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng6754</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>child-a</artifactId>
-    <name>Maven Integration Test :: Child A</name>
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-    </dependencies>
+  <parent>
+    <groupId>org.apache.maven.its.mng6754</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>child-a</artifactId>
+  <name>Maven Integration Test :: Child A</name>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+  </dependencies>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
index 63536a0..1afc9dd 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng6754;
 
 /*
@@ -19,15 +37,13 @@
  * under the License.
  */
 
-import org.junit.Test;
-
 import java.util.concurrent.TimeUnit;
 
-public class DelayingTest
-{
+import org.junit.Test;
+
+public class DelayingTest {
     @Test
-    public void generateSomeDelay() throws InterruptedException
-    {
-        TimeUnit.SECONDS.sleep( 1 );
+    public void generateSomeDelay() throws InterruptedException {
+        TimeUnit.SECONDS.sleep(1);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
index 69cb4b2..a520d27 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng6754</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>child-b</artifactId>
-    <name>Maven Integration Test :: Child B</name>
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-    </dependencies>
+  <parent>
+    <groupId>org.apache.maven.its.mng6754</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>child-b</artifactId>
+  <name>Maven Integration Test :: Child B</name>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+  </dependencies>
   <build>
     <plugins>
       <plugin>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
index 63536a0..1afc9dd 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/src/test/java/org/apache/maven/its/mng6754/DelayingTest.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng6754;
 
 /*
@@ -19,15 +37,13 @@
  * under the License.
  */
 
-import org.junit.Test;
-
 import java.util.concurrent.TimeUnit;
 
-public class DelayingTest
-{
+import org.junit.Test;
+
+public class DelayingTest {
     @Test
-    public void generateSomeDelay() throws InterruptedException
-    {
-        TimeUnit.SECONDS.sleep( 1 );
+    public void generateSomeDelay() throws InterruptedException {
+        TimeUnit.SECONDS.sleep(1);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
index fcbb78d..9a9bc22 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,53 +17,48 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng6754</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0-SNAPSHOT</version>
 
-    <groupId>org.apache.maven.its.mng6754</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-6754</name>
+  <description>Test that version timestamp is equal for each module in the build.</description>
 
-    <name>Maven Integration Test :: MNG-6754</name>
-    <description>
-        Test that version timestamp is equal for each module in the build.
-    </description>
+  <modules>
+    <module>child-a</module>
+    <module>child-b</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
-        <timestamp>${maven.build.timestamp}</timestamp>
-    </properties>
+  <distributionManagement>
+    <repository>
+      <id>maven-core-it</id>
+      <url>file:///${repodir}</url>
+    </repository>
+  </distributionManagement>
 
-    <distributionManagement>
-        <repository>
-            <id>maven-core-it</id>
-            <url>file:///${repodir}</url>
-        </repository>
-    </distributionManagement>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
+    <timestamp>${maven.build.timestamp}</timestamp>
+  </properties>
 
-    <modules>
-        <module>child-a</module>
-        <module>child-b</module>
-    </modules>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>junit</groupId>
-                <artifactId>junit</artifactId>
-                <version>4.12</version>
-                <scope>test</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>4.12</version>
+        <scope>test</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 
   <build>
     <plugins>
@@ -81,10 +75,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>eval</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/dependency-in-custom-repo/pom.xml b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/dependency-in-custom-repo/pom.xml
index 2089f05..476f685 100644
--- a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/dependency-in-custom-repo/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/dependency-in-custom-repo/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>mng-6759-transitive-dependency-repositories</groupId>
-    <artifactId>dependency-in-custom-repo</artifactId>
-    <version>1.0</version>
-    <packaging>jar</packaging>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-install-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>mng-6759-transitive-dependency-repositories</groupId>
+  <artifactId>dependency-in-custom-repo</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module1/pom.xml b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module1/pom.xml
index 3c655d7..55ad530 100644
--- a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module1/pom.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>mng-6759-transitive-dependency-repositories</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-    <artifactId>module1</artifactId>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>mng-6759-transitive-dependency-repositories</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
+  <artifactId>module1</artifactId>
 
-    <dependencies>
-        <dependency>
-            <groupId>mng-6759-transitive-dependency-repositories</groupId>
-            <artifactId>module2</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
+  <dependencies>
+    <dependency>
+      <groupId>mng-6759-transitive-dependency-repositories</groupId>
+      <artifactId>module2</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module2/pom.xml b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module2/pom.xml
index d2bf124..e75758f 100644
--- a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/module2/pom.xml
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>mng-6759-transitive-dependency-repositories</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-    <artifactId>module2</artifactId>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>mng-6759-transitive-dependency-repositories</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
+  <artifactId>module2</artifactId>
 
-    <repositories>
-        <repository>
-            <id>customRepo</id>
-            <url>file:///${basedir}/../dependency-in-custom-repo/target/repo</url>
-        </repository>
-    </repositories>
+  <dependencies>
+    <dependency>
+      <groupId>mng-6759-transitive-dependency-repositories</groupId>
+      <artifactId>dependency-in-custom-repo</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
 
-    <dependencies>
-        <dependency>
-            <groupId>mng-6759-transitive-dependency-repositories</groupId>
-            <artifactId>dependency-in-custom-repo</artifactId>
-            <version>1.0</version>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
+  <repositories>
+    <repository>
+      <id>customRepo</id>
+      <url>file:///${basedir}/../dependency-in-custom-repo/target/repo</url>
+    </repository>
+  </repositories>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/pom.xml b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/pom.xml
index e75beb7..f25f643 100644
--- a/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6759-transitive-dependency-repositories/pom.xml
@@ -1,32 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>mng-6759-transitive-dependency-repositories</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
-    <packaging>pom</packaging>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>mng-6759-transitive-dependency-repositories</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <modules>
-        <module>module1</module>
-        <module>module2</module>
-    </modules>
+  <modules>
+    <module>module1</module>
+    <module>module2</module>
+  </modules>
 
-    <build>
-        <plugins>
-            <plugin>
-                <!-- This plugin resolves dependencies via DefaultLegacyArtifactCollector, which hits the buggy code in MavenMetadataSource -->
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>mng-6759-resolves-project-dependencies-plugin</artifactId>
-                <version>2.1-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>resolve</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
+  <build>
+    <plugins>
+      <plugin>
+        <!-- This plugin resolves dependencies via DefaultLegacyArtifactCollector, which hits the buggy code in MavenMetadataSource -->
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>mng-6759-resolves-project-dependencies-plugin</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>resolve</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/pom.xml
index 46c4767..bc932c6 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.sonatype.mavenbook.multi</groupId>
   <artifactId>parent</artifactId>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/pom.xml
index 40c8b0f..89ee52c 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
@@ -30,7 +26,7 @@
   <artifactId>simple-parent</artifactId>
   <packaging>pom</packaging>
   <name>Multi Chapter Simple Parent Project</name>
- 
+
   <modules>
     <module>simple-weather</module>
     <module>simple-webapp</module>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-testutils/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-testutils/pom.xml
index 3fab2e6..75de31c 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-testutils/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-testutils/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-weather/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-weather/pom.xml
index 800d680..7fbe5bf 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-weather/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-weather/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
@@ -31,7 +27,7 @@
   <packaging>jar</packaging>
 
   <name>Multi Chapter Simple Weather API</name>
-  
+
   <dependencies>
     <dependency>
       <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
index cc92c4b..655d0cc 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/utils-parent/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/utils-parent/pom.xml
index cff9f65..933db5c 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/utils-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/utils-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.sonatype.mavenbook.multi</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
index 501e6c7..9fb27ba 100644
--- a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/src/main/java/com/example/BuildExtensionUsingGraphPackage.java b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/src/main/java/com/example/BuildExtensionUsingGraphPackage.java
index d3889d4..d2f3395 100644
--- a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/src/main/java/com/example/BuildExtensionUsingGraphPackage.java
+++ b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/src/main/java/com/example/BuildExtensionUsingGraphPackage.java
@@ -1,6 +1,23 @@
+/*
+ * 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.
+ */
 package com.example;
 
-import java.lang.IllegalStateException;
 import java.util.Objects;
 
 import org.apache.maven.AbstractMavenLifecycleParticipant;
@@ -10,34 +27,27 @@
 import org.apache.maven.graph.GraphBuilder;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.Result;
-import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
-@Component( role = AbstractMavenLifecycleParticipant.class )
-public class BuildExtensionUsingGraphPackage extends AbstractMavenLifecycleParticipant
-{
+@Component(role = AbstractMavenLifecycleParticipant.class)
+public class BuildExtensionUsingGraphPackage extends AbstractMavenLifecycleParticipant {
 
-    @Requirement( hint = GraphBuilder.HINT )
+    @Requirement(hint = GraphBuilder.HINT)
     private GraphBuilder graphBuilder;
 
     @Override
-    public void afterProjectsRead( final MavenSession session ) throws MavenExecutionException
-    {
-        Objects.requireNonNull( graphBuilder, "graphBuilder should be available in build extension" );
+    public void afterProjectsRead(final MavenSession session) throws MavenExecutionException {
+        Objects.requireNonNull(graphBuilder, "graphBuilder should be available in build extension");
 
-        Result<? extends ProjectDependencyGraph> graphResult = graphBuilder.build( session );
-        Objects.requireNonNull( graphResult, "graphResult should have been built" );
+        Result<? extends ProjectDependencyGraph> graphResult = graphBuilder.build(session);
+        Objects.requireNonNull(graphResult, "graphResult should have been built");
 
-        for ( ModelProblem problem : graphResult.getProblems() )
-        {
-            if ( problem.getSeverity() == ModelProblem.Severity.WARNING )
-            {
-                throw new IllegalStateException( "unexpected WARNING found: " + problem );
-            }
-            else
-            {
-                throw new IllegalStateException( "unexpected Problem found: " + problem );
+        for (ModelProblem problem : graphResult.getProblems()) {
+            if (problem.getSeverity() == ModelProblem.Severity.WARNING) {
+                throw new IllegalStateException("unexpected WARNING found: " + problem);
+            } else {
+                throw new IllegalStateException("unexpected Problem found: " + problem);
             }
         }
     }
diff --git a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/using-module/pom.xml b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/using-module/pom.xml
index a91056b..9d13c68 100644
--- a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/using-module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/using-module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/module-a-1/pom.xml b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/module-a-1/pom.xml
index f004e69..a4db5d0 100644
--- a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/module-a-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/module-a-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng6981</groupId>
+    <artifactId>module-a</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a-1</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng6981</groupId>
-        <artifactId>module-a</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a-1</artifactId>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/pom.xml b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/pom.xml
index 2b1c7fa..557f894 100644
--- a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng6981</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
+  <artifactId>module-a</artifactId>
 
-    <packaging>pom</packaging>
+  <packaging>pom</packaging>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng6981</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <modules>
-        <module>module-a-1</module>
-    </modules>
+  <modules>
+    <module>module-a-1</module>
+  </modules>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
index 0d23baf..b45f5ab 100644
--- a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,31 +17,26 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng6981</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng6981</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-6981</name>
+  <description>Test that the --projects flag will include the target project's children in the reactor.</description>
 
-    <name>Maven Integration Test :: MNG-6981</name>
-    <description>
-        Test that the --projects flag will include the target project's children in the reactor.
-    </description>
+  <modules>
+    <module>module-a</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <modules>
-        <module>module-a</module>
-    </modules>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/module-a-1/pom.xml b/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/module-a-1/pom.xml
index 4bccde2..7b63da8 100644
--- a/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/module-a-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/module-a-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7038</groupId>
+    <artifactId>module-a</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a-1</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng7038</groupId>
-        <artifactId>module-a</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-a-1</artifactId>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/pom.xml b/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/pom.xml
index 4b700d8..5b4ada9 100644
--- a/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7038-rootdir/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,26 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" root="true" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project root="true"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7038</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
+  <artifactId>module-a</artifactId>
 
-    <packaging>pom</packaging>
+  <packaging>pom</packaging>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7038</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <modules>
-        <module>module-a-1</module>
-    </modules>
+  <modules>
+    <module>module-a-1</module>
+  </modules>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/module-b-1/pom.xml b/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/module-b-1/pom.xml
index 4dcdfd1..1521328 100644
--- a/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/module-b-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/module-b-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,19 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7038</groupId>
+    <artifactId>module-b</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b-1</artifactId>
-
-    <parent>
-        <groupId>org.apache.maven.its.mng7038</groupId>
-        <artifactId>module-b</artifactId>
-        <version>1.0</version>
-    </parent>
+  <artifactId>module-b-1</artifactId>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/pom.xml b/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/pom.xml
index 137cb90..f657609 100644
--- a/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7038-rootdir/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,25 +17,22 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7038</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
+  <artifactId>module-b</artifactId>
 
-    <packaging>pom</packaging>
+  <packaging>pom</packaging>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7038</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <modules>
-        <module>module-b-1</module>
-    </modules>
+  <modules>
+    <module>module-b-1</module>
+  </modules>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7038-rootdir/pom.xml b/core-it-suite/src/test/resources/mng-7038-rootdir/pom.xml
index 47f6c8d..4228989 100644
--- a/core-it-suite/src/test/resources/mng-7038-rootdir/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7038-rootdir/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,75 +17,70 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng7038</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng7038</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-7038</name>
+  <description>Test project.rootDirectory, session.topDirectory and session.rootDirectory properties.</description>
 
-    <name>Maven Integration Test :: MNG-7038</name>
-    <description>
-        Test project.rootDirectory, session.topDirectory and session.rootDirectory properties.
-    </description>
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+  </modules>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <rootdir>${project.rootDirectory}</rootdir>
-        <activated>false</activated>
-    </properties>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <rootdir>${project.rootDirectory}</rootdir>
+    <activated>false</activated>
+  </properties>
 
-    <modules>
-        <module>module-a</module>
-        <module>module-b</module>
-    </modules>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <outputFile>target/pom.properties</outputFile>
+              <expressions>
+                <expression>project/properties</expression>
+                <expression>project/rootDirectory</expression>
+                <expression>session/rootDirectory</expression>
+                <expression>session/topDirectory</expression>
+              </expressions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-expression</artifactId>
-                <version>2.1-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>eval</goal>
-                        </goals>
-                        <configuration>
-                            <outputFile>target/pom.properties</outputFile>
-                            <expressions>
-                                <expression>project/properties</expression>
-                                <expression>project/rootDirectory</expression>
-                                <expression>session/rootDirectory</expression>
-                                <expression>session/topDirectory</expression>
-                            </expressions>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>rootdir-profile-activation</id>
-            <activation>
-                <file>
-                    <exists>${rootDirectory}/.mvn/.gitkeep</exists>
-                </file>
-            </activation>
-            <properties>
-                <activated>true</activated>
-            </properties>
-        </profile>
-    </profiles>
+  <profiles>
+    <profile>
+      <id>rootdir-profile-activation</id>
+      <activation>
+        <file>
+          <exists>${rootDirectory}/.mvn/.gitkeep</exists>
+        </file>
+      </activation>
+      <properties>
+        <activated>true</activated>
+      </properties>
+    </profile>
+  </profiles>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7045/pom.xml b/core-it-suite/src/test/resources/mng-7045/pom.xml
index 1b80c69..2071b78 100644
--- a/core-it-suite/src/test/resources/mng-7045/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7045/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -6,9 +7,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-7045</name>
-  <description>
-    Runs a Groovy script which refers some CDI 2.0 code. The script fails if Maven would leak CDI API 1.0.
-  </description>
+  <description>Runs a Groovy script which refers some CDI 2.0 code. The script fails if Maven would leak CDI API 1.0.</description>
 
   <dependencies>
     <dependency>
@@ -34,21 +33,10 @@
         <groupId>org.codehaus.gmavenplus</groupId>
         <artifactId>gmavenplus-plugin</artifactId>
         <version>1.11.0</version>
-        <executions>
-          <execution>
-            <id>run</id>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-          </execution>
-        </executions>
         <configuration>
           <scripts>
-            <script><![CDATA[
-println("InstanceSource=" + javax.enterprise.inject.Instance.class.getProtectionDomain().getCodeSource())
-javax.enterprise.inject.Instance.class.getDeclaredMethod("stream")
-          ]]></script>
+            <script><![CDATA[println("InstanceSource=" + javax.enterprise.inject.Instance.class.getProtectionDomain().getCodeSource())
+javax.enterprise.inject.Instance.class.getDeclaredMethod("stream")]]></script>
           </scripts>
         </configuration>
         <dependencies>
@@ -65,8 +53,16 @@
             <scope>runtime</scope>
           </dependency>
         </dependencies>
+        <executions>
+          <execution>
+            <id>run</id>
+            <goals>
+              <goal>execute</goal>
+            </goals>
+            <phase>process-classes</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml b/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml
index 0963c0b..97f2b0e 100644
--- a/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,20 +17,17 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng7051</groupId>
+  <artifactId>profile-selection</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng7051</groupId>
-    <artifactId>profile-selection</artifactId>
-    <version>1.0</version>
+  <profiles>
+    <profile>
+      <id>existing</id>
+    </profile>
+  </profiles>
 
-    <profiles>
-        <profile>
-            <id>existing</id>
-        </profile>
-    </profiles>
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/bom/pom.xml b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/bom/pom.xml
index 96f011a..c54e8f0 100644
--- a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/bom/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/bom/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,9 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7110</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/extension/pom.xml b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/extension/pom.xml
index c66323b..d37aeb5 100644
--- a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7110</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/lib/pom.xml b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/lib/pom.xml
index 634db8c..be51e7f 100644
--- a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/lib/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/lib/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7110</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/module/pom.xml b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/module/pom.xml
index 6e720e0..c2ec8cb 100644
--- a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,21 +17,18 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-      <!-- to reproduce the original issue, the parent must NOT be part of the reactor -->
-      <groupId>org.apache.maven.its.mng7110</groupId>
-      <artifactId>parent</artifactId>
-      <version>1.0</version>
-      <relativePath>../parent</relativePath>
+    <!-- to reproduce the original issue, the parent must NOT be part of the reactor -->
+    <groupId>org.apache.maven.its.mng7110</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0</version>
+    <relativePath>../parent</relativePath>
   </parent>
   <artifactId>module</artifactId>
-  
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.its.mng7110</groupId>
@@ -40,7 +36,7 @@
       <version>1.0</version>
     </dependency>
   </dependencies>
-  
+
   <build>
     <pluginManagement>
       <plugins>
@@ -50,10 +46,10 @@
           <version>2.1-SNAPSHOT</version>
           <executions>
             <execution>
-              <phase>verify</phase>
               <goals>
                 <goal>load-dependencies</goal>
               </goals>
+              <phase>verify</phase>
               <configuration>
                 <projectClassLoaderOutput>out.txt</projectClassLoaderOutput>
                 <resourcePaths>lib.txt,extension.txt</resourcePaths>
diff --git a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/parent/pom.xml b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/parent/pom.xml
index c08642c..035d6a6 100644
--- a/core-it-suite/src/test/resources/mng-7110-extensionclassloader/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7110-extensionclassloader/parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,37 +17,34 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    
-    <groupId>org.apache.maven.its.mng7110</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
-    <packaging>pom</packaging>
-    
-    <dependencyManagement>
-      <dependencies>
-        <dependency>
-          <groupId>org.apache.maven.its.mng7110</groupId>
-          <artifactId>bom</artifactId>
-          <version>1.0</version>
-          <type>pom</type>
-          <scope>import</scope>
-        </dependency>
-      </dependencies>
-    </dependencyManagement>
+  <groupId>org.apache.maven.its.mng7110</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <build>
-      <extensions>
-        <extension>
-          <groupId>org.apache.maven.its.mng7110</groupId>
-          <artifactId>extension</artifactId>
-          <version>1.0</version>
-        </extension>
-      </extensions>
-    </build>
-    
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven.its.mng7110</groupId>
+        <artifactId>bom</artifactId>
+        <version>1.0</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.its.mng7110</groupId>
+        <artifactId>extension</artifactId>
+        <version>1.0</version>
+      </extension>
+    </extensions>
+  </build>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/module-a/pom.xml b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/module-a/pom.xml
index 5be4706..8c6faa3 100644
--- a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,27 +17,24 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7112</groupId>
+    <artifactId>aggregator-a</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-a</artifactId>
+  <artifactId>module-a</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7112</groupId>
-        <artifactId>aggregator-a</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-log-file</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log-file</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/pom.xml b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/pom.xml
index 81fbb54..faf6226 100644
--- a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,33 +17,30 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>aggregator-a</artifactId>
+  <parent>
+    <groupId>org.apache.maven.its.mng7112</groupId>
+    <artifactId>aggregator</artifactId>
     <version>1.0</version>
+  </parent>
 
-    <packaging>pom</packaging>
+  <artifactId>aggregator-a</artifactId>
+  <version>1.0</version>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7112</groupId>
-        <artifactId>aggregator</artifactId>
-        <version>1.0</version>
-    </parent>
+  <packaging>pom</packaging>
 
-    <modules>
-        <module>module-a</module>
-    </modules>
+  <modules>
+    <module>module-a</module>
+  </modules>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-log-file</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log-file</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/module-b/pom.xml b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/module-b/pom.xml
index dfe26dc..5b601ea 100644
--- a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,27 +17,24 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.its.mng7112</groupId>
+    <artifactId>aggregator-b</artifactId>
+    <version>1.0</version>
+  </parent>
 
-    <artifactId>module-b</artifactId>
+  <artifactId>module-b</artifactId>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7112</groupId>
-        <artifactId>aggregator-b</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-log-file</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log-file</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/pom.xml b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/pom.xml
index 0220935..67d8ccc 100644
--- a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/aggregator-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,33 +17,30 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>aggregator-b</artifactId>
+  <parent>
+    <groupId>org.apache.maven.its.mng7112</groupId>
+    <artifactId>aggregator</artifactId>
     <version>1.0</version>
+  </parent>
 
-    <packaging>pom</packaging>
+  <artifactId>aggregator-b</artifactId>
+  <version>1.0</version>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7112</groupId>
-        <artifactId>aggregator</artifactId>
-        <version>1.0</version>
-    </parent>
+  <packaging>pom</packaging>
 
-    <modules>
-        <module>module-b</module>
-    </modules>
+  <modules>
+    <module>module-b</module>
+  </modules>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-log-file</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log-file</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/pom.xml b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/pom.xml
index 149b381..3bff707 100644
--- a/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7112-projects-with-non-recursive/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,56 +17,51 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng7112</groupId>
+  <artifactId>aggregator</artifactId>
+  <version>1.0</version>
 
-    <groupId>org.apache.maven.its.mng7112</groupId>
-    <artifactId>aggregator</artifactId>
-    <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-7112</name>
+  <description>Test that --non-recursive can be used together with --projects to just build the aggregator project.</description>
 
-    <name>Maven Integration Test :: MNG-7112</name>
-    <description>
-        Test that --non-recursive can be used together with --projects to just build the aggregator project.
-    </description>
+  <modules>
+    <module>aggregator-a</module>
+    <module>aggregator-b</module>
+  </modules>
 
-    <modules>
-        <module>aggregator-a</module>
-        <module>aggregator-b</module>
-    </modules>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.its.plugins</groupId>
+          <artifactId>maven-it-plugin-log-file</artifactId>
+          <version>2.1-SNAPSHOT</version>
+          <configuration>
+            <logFile>target/touch.txt</logFile>
+          </configuration>
+          <executions>
+            <execution>
+              <id>test</id>
+              <goals>
+                <goal>reset</goal>
+              </goals>
+              <phase>validate</phase>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
 
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.its.plugins</groupId>
-                    <artifactId>maven-it-plugin-log-file</artifactId>
-                    <version>2.1-SNAPSHOT</version>
-                    <configuration>
-                        <logFile>target/touch.txt</logFile>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <id>test</id>
-                            <phase>validate</phase>
-                            <goals>
-                                <goal>reset</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.plugins</groupId>
-                <artifactId>maven-it-plugin-log-file</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-log-file</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml b/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
index b0eb756..51455c9 100644
--- a/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -6,18 +7,26 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: MNG-7128</name>
-  <description>
-    Define a HTTP repository in this reactor pom.xml: check that it is blocked.
-  </description>
+  <description>Define a HTTP repository in this reactor pom.xml: check that it is blocked.</description>
 
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>1.3</version><!-- version intentionally not available in central to trigger download from defined repository -->
+      <version>1.3</version>
+      <!-- version intentionally not available in central to trigger download from defined repository -->
     </dependency>
   </dependencies>
 
+  <repositories>
+    <repository>
+      <id>insecure-http-repo</id>
+      <name>HTTP repository: should be blocked</name>
+      <url>http://repo.maven.apache.org/</url>
+      <!-- intentionally insecure HTTP -->
+    </repository>
+  </repositories>
+
   <build>
     <plugins>
       <plugin>
@@ -32,13 +41,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <repositories>
-    <repository>
-      <id>insecure-http-repo</id>
-      <name>HTTP repository: should be blocked</name>
-      <url>http://repo.maven.apache.org/</url><!-- intentionally insecure HTTP -->
-    </repository>
-  </repositories>
 </project>
-
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
index 555a103..084bf78 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7160</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/src/main/java/org/apache/maven/its/mng7160/Extension.java b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/src/main/java/org/apache/maven/its/mng7160/Extension.java
index 62d2c22..f82fd30 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/src/main/java/org/apache/maven/its/mng7160/Extension.java
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/src/main/java/org/apache/maven/its/mng7160/Extension.java
@@ -1,48 +1,56 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng7160;
 
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
+import org.apache.maven.AbstractMavenLifecycleParticipant;
 import org.codehaus.plexus.util.Base64;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.apache.maven.AbstractMavenLifecycleParticipant;
 
 @Singleton
 @Named
-public class Extension extends AbstractMavenLifecycleParticipant
-{
+public class Extension extends AbstractMavenLifecycleParticipant {
 
     @Inject
-    public Extension()
-    {
+    public Extension() {
         ClassLoader ext = getClass().getClassLoader();
 
-        testClass( "xpp3", Xpp3Dom.class.getName() );
-        testClass( "base64", Base64.class.getName() );
+        testClass("xpp3", Xpp3Dom.class.getName());
+        testClass("base64", Base64.class.getName());
     }
 
-    private void testClass( String shortName, String className )
-    {
-        try
-        {
+    private void testClass(String shortName, String className) {
+        try {
             ClassLoader mvn = AbstractMavenLifecycleParticipant.class.getClassLoader();
             ClassLoader ext = getClass().getClassLoader();
-            Class<?> clsMvn = mvn.loadClass( className );
-            Class<?> clsExt = ext.loadClass( className );
-            if ( clsMvn != clsExt )
-            {
-                System.out.println( shortName + " -> ext" );
+            Class<?> clsMvn = mvn.loadClass(className);
+            Class<?> clsExt = ext.loadClass(className);
+            if (clsMvn != clsExt) {
+                System.out.println(shortName + " -> ext");
+            } else {
+                System.out.println(shortName + " -> mvn");
             }
-            else
-            {
-                System.out.println( shortName + " -> mvn" );
-            }
-        }
-        catch ( Throwable t )
-        {
-            System.out.println( shortName + " -> " + t );
+        } catch (Throwable t) {
+            System.out.println(shortName + " -> " + t);
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-build/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-build/pom.xml
index a7ad413..a44ba52 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-build/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-build/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7160</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-parent-first/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-parent-first/pom.xml
index c6e1592..7a9150d 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-parent-first/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-parent-first/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7160</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-plugin/pom.xml
index c6e1592..7a9150d 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7160</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-self-first/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-self-first/pom.xml
index c6e1592..7a9150d 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-self-first/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/project-core-self-first/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,10 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7160</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7244-ignore-pom-prefix-in-expressions/pom.xml b/core-it-suite/src/test/resources/mng-7244-ignore-pom-prefix-in-expressions/pom.xml
index 2f034e1..9d7b5a8 100644
--- a/core-it-suite/src/test/resources/mng-7244-ignore-pom-prefix-in-expressions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7244-ignore-pom-prefix-in-expressions/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7244</groupId>
-    <artifactId>deprecated-pom-placeholders-should-be-ignored</artifactId>
-    <version>1.0</version>
+  <groupId>org.apache.maven.its.mng7244</groupId>
+  <artifactId>deprecated-pom-placeholders-should-be-ignored</artifactId>
+  <version>1.0</version>
 
-    <properties>
-        <projectVersion>${pom.version}</projectVersion>
-    </properties>
+  <properties>
+    <projectVersion>${pom.version}</projectVersion>
+  </properties>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/pom.xml b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/pom.xml
index ad873b6..f552eb4 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>mng-7310-lifecycle-activated-in-specified-module</groupId>
@@ -101,4 +98,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/src/main/java/testmojo/TestMojo.java b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/src/main/java/testmojo/TestMojo.java
index 4182e1b..66f5350 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/src/main/java/testmojo/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/extension/src/main/java/testmojo/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -24,12 +42,10 @@
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test-mojo" )
-public class TestMojo extends AbstractMojo
-{
+@Mojo(name = "test-mojo")
+public class TestMojo extends AbstractMojo {
 
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        getLog().info( "MNG-7310 plugin test-mojo goal executed" );
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        getLog().info("MNG-7310 plugin test-mojo goal executed");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/extension-user/pom.xml b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/extension-user/pom.xml
index 02cdbdb..32e5e8f 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/extension-user/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/extension-user/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>com.example</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/other-module/pom.xml b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/other-module/pom.xml
index c1863a4..abee6d0 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/other-module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/other-module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>com.example</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
index c511291..92499be 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>com.example</groupId>
@@ -29,10 +26,8 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-7310</name>
-  <description>
-    Build two submodules, where one activates the extension and the other does not.
-    This test proves that the latter module build does not fail because it does not activate that extension.
-  </description>
+  <description>Build two submodules, where one activates the extension and the other does not.
+    This test proves that the latter module build does not fail because it does not activate that extension.</description>
 
   <modules>
     <module>extension-user</module>
@@ -40,7 +35,8 @@
   </modules>
 
   <build>
-    <pluginManagement><!-- see bootstrap for plugins versions -->
+    <pluginManagement>
+      <!-- see bootstrap for plugins versions -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/pom.xml
index 986a3c0..651a1e9 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child1</artifactId>
+  <artifactId>child1</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child1/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/pom.xml
index fe14544..70451cd 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child10</artifactId>
+  <artifactId>child10</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child10/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/pom.xml
index df52e49..3f9a2b9 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child11</artifactId>
+  <artifactId>child11</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child11/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/pom.xml
index 7b4252e..0960157 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child12</artifactId>
+  <artifactId>child12</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child12/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/pom.xml
index b34b403..56c496e 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child13</artifactId>
+  <artifactId>child13</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child13/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/pom.xml
index 45bfe2f..c2f440f 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child14</artifactId>
+  <artifactId>child14</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child14/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/pom.xml
index 5e1f68c..9486ade 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child15</artifactId>
+  <artifactId>child15</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child15/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/pom.xml
index 67c63ac..d4aaa35 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child16</artifactId>
+  <artifactId>child16</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child16/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/pom.xml
index b815219..1f81078 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child17</artifactId>
+  <artifactId>child17</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child17/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/pom.xml
index 7cbbacf..5c0b74d 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child18</artifactId>
+  <artifactId>child18</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child18/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/pom.xml
index 818ea91..6cf8393 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child19</artifactId>
+  <artifactId>child19</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child19/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/pom.xml
index ff6982a..2ee25d2 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child2</artifactId>
+  <artifactId>child2</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child2/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/pom.xml
index 833e17a..34a3dd3 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child20</artifactId>
+  <artifactId>child20</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child20/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/pom.xml
index c12ffa0..a6c3ad6 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child21</artifactId>
+  <artifactId>child21</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child21/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/pom.xml
index fbb7d21..e353dbe 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child22</artifactId>
+  <artifactId>child22</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child22/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/pom.xml
index 741096c..3939b58 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child23</artifactId>
+  <artifactId>child23</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child23/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/pom.xml
index b56997b..a1adef3 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child24</artifactId>
+  <artifactId>child24</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child24/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/pom.xml
index 1635c0d..dace50c 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child25</artifactId>
+  <artifactId>child25</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child25/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/pom.xml
index 7e7f3ec..5bd84b1 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child26</artifactId>
+  <artifactId>child26</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child26/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/pom.xml
index d7146f0..725206b 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child27</artifactId>
+  <artifactId>child27</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child27/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/pom.xml
index 77b43d1..58701e4 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child28</artifactId>
+  <artifactId>child28</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child28/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/pom.xml
index fa74b3b..20c59f3 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child29</artifactId>
+  <artifactId>child29</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child29/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/pom.xml
index b815df9..4533dd2 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child3</artifactId>
+  <artifactId>child3</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child3/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/pom.xml
index 3d96e0a..d71212b1 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child30</artifactId>
+  <artifactId>child30</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child30/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/pom.xml
index 01af4ae..858dcc8 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child31</artifactId>
+  <artifactId>child31</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child31/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/pom.xml
index f8859a9..6ebaefd 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child32</artifactId>
+  <artifactId>child32</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child32/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/pom.xml
index 44619b7..cdb58b6 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child33</artifactId>
+  <artifactId>child33</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child33/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/pom.xml
index be2fc70..dbe21ee 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child34</artifactId>
+  <artifactId>child34</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child34/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/pom.xml
index 40fbed4..1e8d6fd 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child35</artifactId>
+  <artifactId>child35</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child35/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/pom.xml
index bb1a3c0..33bb9eb 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child36</artifactId>
+  <artifactId>child36</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child36/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/pom.xml
index 85dbf5c..dbe5f06 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child37</artifactId>
+  <artifactId>child37</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child37/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/pom.xml
index 42c08c6..6bf365c 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child38</artifactId>
+  <artifactId>child38</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child38/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/pom.xml
index d1274b1..35d6699 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child39</artifactId>
+  <artifactId>child39</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child39/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/pom.xml
index 22856ad..d3fd602 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child4</artifactId>
+  <artifactId>child4</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child4/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/pom.xml
index 975a29b..0d789a5 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child5</artifactId>
+  <artifactId>child5</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child5/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/pom.xml
index 3713aaf..6be96c3 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child6</artifactId>
+  <artifactId>child6</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child6/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/pom.xml
index 7a5c953..10f9715 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child7</artifactId>
+  <artifactId>child7</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child7/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/pom.xml
index 315642a..3493095 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child8</artifactId>
+  <artifactId>child8</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child8/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/pom.xml
index 7169359..1f1fc31 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/pom.xml
@@ -1,15 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<artifactId>parallel-testbed</artifactId>
-		<groupId>org.example</groupId>
-		<version>1.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.example</groupId>
+    <artifactId>parallel-testbed</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-	<artifactId>child9</artifactId>
+  <artifactId>child9</artifactId>
 
-
-</project>
\ No newline at end of file
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/src/main/java/com/example/Example.java b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/src/main/java/com/example/Example.java
index 8c561d4..2994161 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/src/main/java/com/example/Example.java
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/child9/src/main/java/com/example/Example.java
@@ -1,9 +1,27 @@
+/*
+ * 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.
+ */
 package com.example;
 
 import org.apache.commons.lang.StringUtils;
 
 public class Example {
-	public static void main(String[] args) {
-		StringUtils.trim("");
-	}
+    public static void main(String[] args) {
+        StringUtils.trim("");
+    }
 }
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
index 3ca74c5..8a45ca0 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
@@ -1,85 +1,83 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.example</groupId>
-    <artifactId>parallel-testbed</artifactId>
-    <version>1.0-SNAPSHOT</version>
+  <groupId>org.example</groupId>
+  <artifactId>parallel-testbed</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
+  <modules>
+    <module>child1</module>
+    <module>child2</module>
+    <module>child3</module>
+    <module>child4</module>
+    <module>child5</module>
+    <module>child6</module>
+    <module>child7</module>
+    <module>child8</module>
+    <module>child9</module>
+    <module>child10</module>
+    <module>child11</module>
+    <module>child12</module>
+    <module>child13</module>
+    <module>child14</module>
+    <module>child15</module>
+    <module>child16</module>
+    <module>child17</module>
+    <module>child18</module>
+    <module>child19</module>
+    <module>child20</module>
+    <module>child21</module>
+    <module>child22</module>
+    <module>child23</module>
+    <module>child24</module>
+    <module>child25</module>
+    <module>child26</module>
+    <module>child27</module>
+    <module>child28</module>
+    <module>child29</module>
+    <module>child30</module>
+    <module>child31</module>
+    <module>child32</module>
+    <module>child33</module>
+    <module>child34</module>
+    <module>child35</module>
+    <module>child36</module>
+    <module>child37</module>
+    <module>child38</module>
+    <module>child39</module>
+  </modules>
 
-    <modules>
-        <module>child1</module>
-        <module>child2</module>
-        <module>child3</module>
-        <module>child4</module>
-        <module>child5</module>
-        <module>child6</module>
-        <module>child7</module>
-        <module>child8</module>
-        <module>child9</module>
-        <module>child10</module>
-        <module>child11</module>
-        <module>child12</module>
-        <module>child13</module>
-        <module>child14</module>
-        <module>child15</module>
-        <module>child16</module>
-        <module>child17</module>
-        <module>child18</module>
-        <module>child19</module>
-        <module>child20</module>
-        <module>child21</module>
-        <module>child22</module>
-        <module>child23</module>
-        <module>child24</module>
-        <module>child25</module>
-        <module>child26</module>
-        <module>child27</module>
-        <module>child28</module>
-        <module>child29</module>
-        <module>child30</module>
-        <module>child31</module>
-        <module>child32</module>
-        <module>child33</module>
-        <module>child34</module>
-        <module>child35</module>
-        <module>child36</module>
-        <module>child37</module>
-        <module>child38</module>
-        <module>child39</module>
-    </modules>
-    <packaging>pom</packaging>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.6</version>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.6</version>
+    </dependency>
+  </dependencies>
 
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-resources-plugin</artifactId>
-                    <version>3.3.0</version>
-                </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-clean-plugin</artifactId>
-                    <version>3.2.0</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.3.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>3.2.0</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
index e6c90c7..3f732f6 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
index c96ed25..c6d42f2 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
index ff6c590..744e211 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
index b9971e7..99e9655 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
index f89cb79..6270125 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
@@ -1,27 +1,42 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng7349;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-
-import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
-@Mojo( name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true )
-public class EchoMojo extends AbstractMojo
-{
-    @Parameter( defaultValue = "World!" )
+@Mojo(name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true)
+public class EchoMojo extends AbstractMojo {
+    @Parameter(defaultValue = "World!")
     String helloString;
 
-    @Parameter( defaultValue = "${project}", readonly = true )
+    @Parameter(defaultValue = "${project}", readonly = true)
     protected MavenProject mavenProject;
 
     @Override
-    public void execute() throws MojoExecutionException
-    {
-        getLog().warn( "=====================================================================================" );
-        getLog().warn( "Hello " + helloString );
-        getLog().warn( "=====================================================================================" );
+    public void execute() throws MojoExecutionException {
+        getLog().warn("=====================================================================================");
+        getLog().warn("Hello " + helloString);
+        getLog().warn("=====================================================================================");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
index 02c6096..85870ef 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>jar</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.8.6</maven-version>
-  </properties>
-
   <distributionManagement>
     <relocation>
       <groupId>org.apache.maven.its.mng7349</groupId>
@@ -22,6 +15,13 @@
     </relocation>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
index 766b9fd..cc020d5 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>jar</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.8.6</maven-version>
-  </properties>
-
   <distributionManagement>
     <relocation>
       <groupId>org.apache.maven.its.mng7349</groupId>
@@ -22,6 +15,13 @@
     </relocation>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
index 9ab2f5e..7bc1248 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>jar</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.8.6</maven-version>
-  </properties>
-
   <distributionManagement>
     <relocation>
       <groupId>org.apache.maven.its.mng7349</groupId>
@@ -22,6 +15,13 @@
     </relocation>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
index 3bc7ae4..6ad9f09 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.8.6</maven-version>
-  </properties>
-
   <distributionManagement>
     <relocation>
       <groupId>org.apache.maven.its.mng7349</groupId>
@@ -22,6 +15,13 @@
     </relocation>
   </distributionManagement>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
index f89cb79..6270125 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/src/main/java/org/apache/maven/its/mng7349/EchoMojo.java
@@ -1,27 +1,42 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng7349;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-
-import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
-@Mojo( name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true )
-public class EchoMojo extends AbstractMojo
-{
-    @Parameter( defaultValue = "World!" )
+@Mojo(name = "echoMojo", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true)
+public class EchoMojo extends AbstractMojo {
+    @Parameter(defaultValue = "World!")
     String helloString;
 
-    @Parameter( defaultValue = "${project}", readonly = true )
+    @Parameter(defaultValue = "${project}", readonly = true)
     protected MavenProject mavenProject;
 
     @Override
-    public void execute() throws MojoExecutionException
-    {
-        getLog().warn( "=====================================================================================" );
-        getLog().warn( "Hello " + helloString );
-        getLog().warn( "=====================================================================================" );
+    public void execute() throws MojoExecutionException {
+        getLog().warn("=====================================================================================");
+        getLog().warn("Hello " + helloString);
+        getLog().warn("=====================================================================================");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
index 7b9bd61..a1ae7ba 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -7,13 +7,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-version>3.8.6</maven-version>
-  </properties>
-
   <modules>
     <module>new-dep-dep</module>
     <module>new-dep</module>
@@ -24,4 +17,11 @@
     <module>old-dep</module>
     <module>old-plugin</module>
   </modules>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
+  </properties>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
index 3a56cfb..883a4e2 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7349</groupId>
@@ -33,10 +33,10 @@
         <executions>
           <execution>
             <id>echoMojo</id>
-            <phase>initialize</phase>
             <goals>
               <goal>echoMojo</goal>
             </goals>
+            <phase>initialize</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-7353-cli-goal-invocation/pom.xml b/core-it-suite/src/test/resources/mng-7353-cli-goal-invocation/pom.xml
index 476dd6f..78a557c 100644
--- a/core-it-suite/src/test/resources/mng-7353-cli-goal-invocation/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7353-cli-goal-invocation/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1</version>
 
   <name>Maven Integration Test :: MNG-7353</name>
-  <description>
-    Verify that "mvn pluginPrefix:version:goal" works and does not break any other goal invocation format
-  </description>
+  <description>Verify that "mvn pluginPrefix:version:goal" works and does not break any other goal invocation format</description>
 
   <build>
     <pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-7360-build-consumer/pom.xml b/core-it-suite/src/test/resources/mng-7360-build-consumer/pom.xml
index 123af2c..09e34ec 100644
--- a/core-it-suite/src/test/resources/mng-7360-build-consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7360-build-consumer/pom.xml
@@ -18,25 +18,25 @@
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7360</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
+  <groupId>org.apache.maven.its.mng7360</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0-SNAPSHOT</version>
 
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.its.plugins</groupId>
-                    <artifactId>maven-it-plugin-log-file</artifactId>
-                    <version>2.1-SNAPSHOT</version>
-                    <configuration>
-                        <parent>expand</parent>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.its.plugins</groupId>
+          <artifactId>maven-it-plugin-log-file</artifactId>
+          <version>2.1-SNAPSHOT</version>
+          <configuration>
+            <parent>expand</parent>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-a/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-a/pom.xml
index ae48d0a..4b2b164 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,17 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
 
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>module-a</artifactId>
-
   <parent>
     <groupId>org.apache.maven.its.mng7390</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
+  <artifactId>module-a</artifactId>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-b/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-b/pom.xml
index f91ebc2..a9d9f7e 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,17 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
 
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>module-b</artifactId>
-
   <parent>
     <groupId>org.apache.maven.its.mng7390</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
+  <artifactId>module-b</artifactId>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
index e8b6829..7a34ff9 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,10 +27,13 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-7390</name>
-  <description>
-    This test suite verifies that other modules in the same multi-module project cannot be selected when invoking Maven
-    from a submodule, when the .mvn directory in the root is missing.
-  </description>
+  <description>This test suite verifies that other modules in the same multi-module project cannot be selected when invoking Maven
+    from a submodule, when the .mvn directory in the root is missing.</description>
+
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+  </modules>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -40,11 +41,6 @@
     <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
-  <modules>
-    <module>module-a</module>
-    <module>module-b</module>
-  </modules>
-
   <build>
     <plugins>
       <plugin>
@@ -57,10 +53,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-a/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-a/pom.xml
index ae48d0a..4b2b164 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-a/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,17 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
 
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>module-a</artifactId>
-
   <parent>
     <groupId>org.apache.maven.its.mng7390</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
+  <artifactId>module-a</artifactId>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-b/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-b/pom.xml
index f91ebc2..a9d9f7e 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/module-b/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,17 +17,16 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
 
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>module-b</artifactId>
-
   <parent>
     <groupId>org.apache.maven.its.mng7390</groupId>
     <artifactId>parent</artifactId>
     <version>1.0</version>
   </parent>
 
+  <artifactId>module-b</artifactId>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
index 0d4407a..d353c25 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0">
   <modelVersion>4.0.0</modelVersion>
 
@@ -29,10 +27,13 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: MNG-7390</name>
-  <description>
-    This test suite tests whether other modules in the same multi-module project can be selected when invoking Maven
-    from a submodule.
-  </description>
+  <description>This test suite tests whether other modules in the same multi-module project can be selected when invoking Maven
+    from a submodule.</description>
+
+  <modules>
+    <module>module-a</module>
+    <module>module-b</module>
+  </modules>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -40,11 +41,6 @@
     <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
-  <modules>
-    <module>module-a</module>
-    <module>module-b</module>
-  </modules>
-
   <build>
     <plugins>
       <plugin>
@@ -57,10 +53,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>reset</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-7404-ignore-prefixless-expressions/pom.xml b/core-it-suite/src/test/resources/mng-7404-ignore-prefixless-expressions/pom.xml
index 7906779..04f60e5 100644
--- a/core-it-suite/src/test/resources/mng-7404-ignore-prefixless-expressions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7404-ignore-prefixless-expressions/pom.xml
@@ -1,12 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7404</groupId>
-    <artifactId>prefixless-placeholders-should-be-ignored</artifactId>
-    <version>1.0</version>
+  <groupId>org.apache.maven.its.mng7404</groupId>
+  <artifactId>prefixless-placeholders-should-be-ignored</artifactId>
+  <version>1.0</version>
 
-    <properties>
-        <projectVersion>${version}</projectVersion>
-    </properties>
+  <properties>
+    <projectVersion>${version}</projectVersion>
+  </properties>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7443-consistency-of-optional-profiles-and-projects/pom.xml b/core-it-suite/src/test/resources/mng-7443-consistency-of-optional-profiles-and-projects/pom.xml
index c2de91f..a9aa1e4 100644
--- a/core-it-suite/src/test/resources/mng-7443-consistency-of-optional-profiles-and-projects/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7443-consistency-of-optional-profiles-and-projects/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
diff --git a/core-it-suite/src/test/resources/mng-7464-mojo-read-only-params/pom.xml b/core-it-suite/src/test/resources/mng-7464-mojo-read-only-params/pom.xml
index 5278a3e..d42d8e9 100644
--- a/core-it-suite/src/test/resources/mng-7464-mojo-read-only-params/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7464-mojo-read-only-params/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7464</name>
-  <description>
-    Test that ensures that warning about read-only mojo params are generated.
-  </description>
+  <description>Test that ensures that warning about read-only mojo params are generated.</description>
 
   <build>
     <plugins>
@@ -51,28 +47,28 @@
   <profiles>
     <profile>
       <id>config-values</id>
-    <build>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.its.plugins</groupId>
-          <artifactId>maven-it-plugin-configuration</artifactId>
-          <version>2.1-SNAPSHOT</version>
-          <executions>
-            <execution>
-              <goals>
-                <goal>read-only-config</goal>
-              </goals>
-            </execution>
-          </executions>
-          <configuration>
-            <readOnlyWithDefault>value1</readOnlyWithDefault>
-            <readOnlyWithOutDefaults>value2</readOnlyWithOutDefaults>
-            <readOnlyWithProperty>value3</readOnlyWithProperty>
-            <readOnlyWithUserProperty>value4</readOnlyWithUserProperty>
-          </configuration>
-        </plugin>
-      </plugins>
-    </build>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.its.plugins</groupId>
+            <artifactId>maven-it-plugin-configuration</artifactId>
+            <version>2.1-SNAPSHOT</version>
+            <configuration>
+              <readOnlyWithDefault>value1</readOnlyWithDefault>
+              <readOnlyWithOutDefaults>value2</readOnlyWithOutDefaults>
+              <readOnlyWithProperty>value3</readOnlyWithProperty>
+              <readOnlyWithUserProperty>value4</readOnlyWithUserProperty>
+            </configuration>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>read-only-config</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
     </profile>
   </profiles>
 
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-execution/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-execution/pom.xml
index 6125d0b..67830bc 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-execution/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-execution/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-mixed/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-mixed/pom.xml
index 4ebbdf9..2e2c448 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-mixed/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-mixed/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,9 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <invalidParam>value</invalidParam>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -49,9 +48,6 @@
             </configuration>
           </execution>
         </executions>
-        <configuration>
-          <invalidParam>value</invalidParam>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-plugin/pom.xml
index ac0c97e..19fd940 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-build-plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,12 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <invalidParam>value</invalidParam>
+          <invalidXml>
+            <item>value</item>
+          </invalidXml>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -44,12 +46,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <invalidParam>value</invalidParam>
-          <invalidXml>
-            <item>value</item>
-          </invalidXml>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/module/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/module/pom.xml
index f6378d0..e23a8a7 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/module/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/module/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -35,6 +33,11 @@
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
+        <configuration>
+          <invalidXml>
+            <item>value</item>
+          </invalidXml>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -43,11 +46,6 @@
             <phase>validate</phase>
           </execution>
         </executions>
-        <configuration>
-          <invalidXml>
-            <item>value</item>
-          </invalidXml>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/pom.xml
index b1d0120..32efc58 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management-parent/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <modules>
     <module>module</module>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management/pom.xml
index 1169e15..011f7b4 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-plugin-management/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <pluginManagement>
@@ -49,6 +45,11 @@
       <plugin>
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
+        <configuration>
+          <invalidXml>
+            <item>value</item>
+          </invalidXml>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -57,11 +58,6 @@
             <phase>validate</phase>
           </execution>
         </executions>
-        <configuration>
-          <invalidXml>
-            <item>value</item>
-          </invalidXml>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-with-fork-goal/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-with-fork-goal/pom.xml
index 2d8d2bd..43c54cb 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-with-fork-goal/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/config-with-fork-goal/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>pom</packaging>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -38,21 +34,21 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-fork</artifactId>
         <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>fork</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>fork-goal</goal>
-            </goals>
-          </execution>
-        </executions>
         <configuration>
           <invalidParam>value</invalidParam>
           <invalidXml>
             <item>value</item>
           </invalidXml>
         </configuration>
+        <executions>
+          <execution>
+            <id>fork</id>
+            <goals>
+              <goal>fork-goal</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/no-config/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/no-config/pom.xml
index ac7841d..f91c02b 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/no-config/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/no-config/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-alias/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-alias/pom.xml
index b2b5700..da94b16 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-alias/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-alias/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,9 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <validParameterAlias>value</validParameterAlias>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -44,9 +43,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <validParameterAlias>value</validParameterAlias>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-other-goal/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-other-goal/pom.xml
index b135cae..7f7b749 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-other-goal/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter-other-goal/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,9 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <booleanParam>true</booleanParam>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -44,9 +43,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <booleanParam>true</booleanParam>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter/pom.xml b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter/pom.xml
index fca9bb0..8996a66 100644
--- a/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7468-unsupported-params/valid-parameter/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -27,9 +25,7 @@
   <version>1.0</version>
 
   <name>Maven Integration Test :: mng7468</name>
-  <description>
-    Test that ensures that warning about unsupported mojo parameters are generated.
-  </description>
+  <description>Test that ensures that warning about unsupported mojo parameters are generated.</description>
 
   <build>
     <plugins>
@@ -37,6 +33,9 @@
         <groupId>org.apache.maven.its.plugins</groupId>
         <artifactId>maven-it-plugin-configuration</artifactId>
         <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <validParameter>value</validParameter>
+        </configuration>
         <executions>
           <execution>
             <goals>
@@ -44,9 +43,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <validParameter>value</validParameter>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7470-resolver-transport/project/pom.xml b/core-it-suite/src/test/resources/mng-7470-resolver-transport/project/pom.xml
index c9dbca2..a9f2930 100644
--- a/core-it-suite/src/test/resources/mng-7470-resolver-transport/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7470-resolver-transport/project/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: resolver-transport</name>
-  <description>
-    Verify that Maven transport works.
-  </description>
+  <description>Verify that Maven transport works.</description>
 
   <build>
     <plugins>
@@ -46,10 +42,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve-artifact</goal>
             </goals>
+            <phase>validate</phase>
             <configuration>
               <artifactCoords>org.apache.maven.its.resolver-transport:dependency:1.0</artifactCoords>
             </configuration>
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
index c3846c7..b900f7e 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
@@ -1,59 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7474</groupId>
-    <artifactId>plugin</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>maven-plugin</packaging>
+  <groupId>org.apache.maven.its.mng7474</groupId>
+  <artifactId>plugin</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
 
-    <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven-version>3.2.5</maven-version>
-    </properties>
+  <properties>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.2.5</maven-version>
+  </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>javax.inject</groupId>
-            <artifactId>javax.inject</artifactId>
-            <version>1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-core</artifactId>
-            <version>${maven-version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven.plugin-tools</groupId>
-            <artifactId>maven-plugin-annotations</artifactId>
-            <version>3.3</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <version>${maven-version}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <version>1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>${maven-version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.3</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>${maven-version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.eclipse.sisu</groupId>
-                <artifactId>sisu-maven-plugin</artifactId>
-                <version>0.3.5</version>
-                <executions>
-                    <execution>
-                        <id>generate-index</id>
-                        <goals>
-                            <goal>main-index</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.sisu</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+        <version>0.3.5</version>
+        <executions>
+          <execution>
+            <id>generate-index</id>
+            <goals>
+              <goal>main-index</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestComponent.java b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestComponent.java
index d6d8eef..60b190c 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestComponent.java
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestComponent.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng7474;
 
 /*
@@ -28,13 +46,11 @@
 
 @SessionScoped
 @Named
-public class TestComponent
-{
+public class TestComponent {
 
     public static List<TestComponent> allInstances = new CopyOnWriteArrayList<>();
 
-    public TestComponent()
-    {
-        allInstances.add( this );
+    public TestComponent() {
+        allInstances.add(this);
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestMojo.java b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestMojo.java
index 3d90092..f46e67a 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestMojo.java
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/src/main/java/org/apache/maven/its/mng7474/TestMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.maven.its.mng7474;
 
 /*
@@ -25,20 +43,16 @@
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 
-@Mojo( name = "test" )
-public class TestMojo
-        extends AbstractMojo
-{
+@Mojo(name = "test")
+public class TestMojo extends AbstractMojo {
 
     @Component
     TestComponent component;
 
     @Override
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        if ( TestComponent.allInstances.size() > 1 )
-        {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (TestComponent.allInstances.size() > 1) {
             throw new IllegalStateException();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/project/pom.xml b/core-it-suite/src/test/resources/mng-7474-session-scope/project/pom.xml
index 3ab320e..bd4aaf5 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/project/pom.xml
@@ -1,15 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7474</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+  <groupId>org.apache.maven.its.mng7474</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
-    <modules>
-        <module>project-a</module>
-        <module>project-b</module>
-    </modules>
-
+  <modules>
+    <module>project-a</module>
+    <module>project-b</module>
+  </modules>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-a/pom.xml b/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-a/pom.xml
index e9494f0..8b30825 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-a/pom.xml
@@ -1,34 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7474</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>project-a</artifactId>
+  <parent>
+    <groupId>org.apache.maven.its.mng7474</groupId>
+    <artifactId>parent</artifactId>
     <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
+  </parent>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.mng7474</groupId>
-                <artifactId>plugin</artifactId>
-                <version>1.0-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <id>test</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>test</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <artifactId>project-a</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.mng7474</groupId>
+        <artifactId>plugin</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-b/pom.xml b/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-b/pom.xml
index 28fd8b0..ba1fd47 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/project/project-b/pom.xml
@@ -1,34 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7474</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>project-b</artifactId>
+  <parent>
+    <groupId>org.apache.maven.its.mng7474</groupId>
+    <artifactId>parent</artifactId>
     <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
+  </parent>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.its.mng7474</groupId>
-                <artifactId>plugin</artifactId>
-                <version>1.0-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <id>test</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>test</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <artifactId>project-b</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.mng7474</groupId>
+        <artifactId>plugin</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
index 9bb14e3..85afe44 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -26,6 +24,12 @@
   <artifactId>consumer</artifactId>
   <version>1.0-SNAPSHOT</version>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
+
   <build>
     <plugins>
       <plugin>
@@ -50,10 +54,4 @@
     </plugins>
   </build>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-  </properties>
-
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/src/main/java/com/example/demo/DemoApplication.java b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/src/main/java/com/example/demo/DemoApplication.java
index 1c20936..8a3ce70 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/src/main/java/com/example/demo/DemoApplication.java
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/src/main/java/com/example/demo/DemoApplication.java
@@ -1,9 +1,25 @@
+/*
+ * 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.
+ */
 package com.example.demo;
 
-public class DemoApplication
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello world!" );
+public class DemoApplication {
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
index cc59e64..772f38e 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,9 +17,7 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7487</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/AggregatorMojo.java b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/AggregatorMojo.java
index 63f5097..2435f34 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/AggregatorMojo.java
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/AggregatorMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -22,16 +40,12 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.Execute;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.ResolutionScope;
 
-@Mojo( name = "aggregator", requiresProject = true, defaultPhase = LifecyclePhase.COMPILE, aggregator = true )
-public class AggregatorMojo extends AbstractMojo
-{
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        getLog().info( "MNG-7487 plugin aggregator goal executed" );
+@Mojo(name = "aggregator", requiresProject = true, defaultPhase = LifecyclePhase.COMPILE, aggregator = true)
+public class AggregatorMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        getLog().info("MNG-7487 plugin aggregator goal executed");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
index 291ef7a..583e987 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/src/main/java/testmojo/RequiresCompilePhaseMojo.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package testmojo;
 
 /*
@@ -25,14 +43,11 @@
 import org.apache.maven.plugins.annotations.Execute;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.ResolutionScope;
 
-@Mojo( name = "require-compile-phase", requiresProject = true, defaultPhase = LifecyclePhase.VALIDATE )
-@Execute( phase = LifecyclePhase.TEST_COMPILE )
-public class RequiresCompilePhaseMojo extends AbstractMojo
-{
-    public void execute() throws MojoExecutionException, MojoFailureException
-    {
-        getLog().info( "MNG-7487 plugin require-compile-phase goal executed" );
+@Mojo(name = "require-compile-phase", requiresProject = true, defaultPhase = LifecyclePhase.VALIDATE)
+@Execute(phase = LifecyclePhase.TEST_COMPILE)
+public class RequiresCompilePhaseMojo extends AbstractMojo {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        getLog().info("MNG-7487 plugin require-compile-phase goal executed");
     }
 }
diff --git a/core-it-suite/src/test/resources/mng-7504-warn-unsupported-report-plugins/pom.xml b/core-it-suite/src/test/resources/mng-7504-warn-unsupported-report-plugins/pom.xml
index 0c4c39f..f0f24a5 100644
--- a/core-it-suite/src/test/resources/mng-7504-warn-unsupported-report-plugins/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7504-warn-unsupported-report-plugins/pom.xml
@@ -1,28 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.7504</groupId>
-    <artifactId>warn-unsupported-report-plugins</artifactId>
-    <packaging>pom</packaging>
-    <version>1.0</version>
+  <groupId>org.apache.maven.its.7504</groupId>
+  <artifactId>warn-unsupported-report-plugins</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-site-plugin</artifactId>
-                <version>0.1-stub-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <id>site</id>
-                        <phase>site</phase>
-                        <goals>
-                            <goal>site</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-site-plugin</artifactId>
+        <version>0.1-stub-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <id>site</id>
+            <goals>
+              <goal>site</goal>
+            </goals>
+            <phase>site</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7529/pom.xml b/core-it-suite/src/test/resources/mng-7529/pom.xml
index 2a39a10..8c07edc 100644
--- a/core-it-suite/src/test/resources/mng-7529/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7529/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-7529</name>
-  <description>
-    Verify that artifact ranges are resolved to the right release repository.
-  </description>
+  <description>Verify that artifact ranges are resolved to the right release repository.</description>
 
   <dependencies>
     <dependency>
@@ -49,10 +45,10 @@
         <executions>
           <execution>
             <id>resolve</id>
-            <phase>validate</phase>
             <goals>
               <goal>resolve</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-7566/test-1/pom.xml b/core-it-suite/src/test/resources/mng-7566/test-1/pom.xml
index 37b598e..bca1001 100644
--- a/core-it-suite/src/test/resources/mng-7566/test-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7566/test-1/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-7566</name>
-  <description>
-    Verify that builds fail straight when the current Java version doesn't match a plugin's prerequisite.
-  </description>
+  <description>Verify that builds fail straight when the current Java version doesn't match a plugin's prerequisite.</description>
 
   <build>
     <plugins>
@@ -42,10 +38,10 @@
         <executions>
           <execution>
             <id>test</id>
-            <phase>validate</phase>
             <goals>
               <goal>touch</goal>
             </goals>
+            <phase>validate</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/core-it-suite/src/test/resources/mng-7566/test-2/pom.xml b/core-it-suite/src/test/resources/mng-7566/test-2/pom.xml
index d9ca646..4565088 100644
--- a/core-it-suite/src/test/resources/mng-7566/test-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7566/test-2/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,8 +26,6 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-7566</name>
-  <description>
-    Verify that automatic plugin version resolution automatically skips plugin versions whose prerequisite on
-    the current Java version isn't satisfied.
-  </description>
+  <description>Verify that automatic plugin version resolution automatically skips plugin versions whose prerequisite on
+    the current Java version isn't satisfied.</description>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/consumer/pom.xml b/core-it-suite/src/test/resources/mng-7587-jsr330/consumer/pom.xml
index 8e2d2c3..40199aa 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/consumer/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -26,6 +24,12 @@
   <artifactId>consumer</artifactId>
   <version>1.0-SNAPSHOT</version>
 
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
+
   <build>
     <plugins>
       <plugin>
@@ -44,10 +48,4 @@
     </plugins>
   </build>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-  </properties>
-
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/pom.xml b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/pom.xml
index 3b1d530..744b809 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/pom.xml
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.apache.maven.its.mng7587</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyComponent.java b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyComponent.java
index 41c4b26..ec08137 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyComponent.java
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyComponent.java
@@ -1,8 +1,24 @@
+/*
+ * 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.
+ */
 package sample.plugin;
 
 import javax.inject.Named;
 
 @Named
-public class MyComponent implements MyService {
-
-}
+public class MyComponent implements MyService {}
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyMojo.java b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyMojo.java
index 319ad2a..9138e10 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyMojo.java
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyMojo.java
@@ -1,6 +1,23 @@
+/*
+ * 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.
+ */
 package sample.plugin;
 
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -15,53 +32,39 @@
 /**
  * Goal which touches a timestamp file.
  */
-@Mojo( name = "touch", defaultPhase = LifecyclePhase.PROCESS_SOURCES )
-public class MyMojo
-    extends AbstractMojo
-{
+@Mojo(name = "touch", defaultPhase = LifecyclePhase.PROCESS_SOURCES)
+public class MyMojo extends AbstractMojo {
     /**
      * Location of the file.
      */
-    @Parameter( defaultValue = "${project.build.directory}", property = "outputDir", required = true )
+    @Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
     private File outputDirectory;
 
-	@Component
-	private MyService myService;
+    @Component
+    private MyService myService;
 
     @Override
-	public void execute()
-        throws MojoExecutionException
-    {
+    public void execute() throws MojoExecutionException {
         File f = outputDirectory;
 
-        if ( !f.exists() )
-        {
+        if (!f.exists()) {
             f.mkdirs();
         }
 
-        File touch = new File( f, "touch.txt" );
+        File touch = new File(f, "touch.txt");
 
         FileWriter w = null;
-        try
-        {
-            w = new FileWriter( touch );
+        try {
+            w = new FileWriter(touch);
 
-            w.write( "touch.txt" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error creating file " + touch, e );
-        }
-        finally
-        {
-            if ( w != null )
-            {
-                try
-                {
+            w.write("touch.txt");
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error creating file " + touch, e);
+        } finally {
+            if (w != null) {
+                try {
                     w.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // ignore
                 }
             }
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyService.java b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyService.java
index 30d92e6..c53a666 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyService.java
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/main/java/sample/plugin/MyService.java
@@ -1,5 +1,21 @@
+/*
+ * 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.
+ */
 package sample.plugin;
 
-public interface MyService {
-
-}
+public interface MyService {}
diff --git a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/test/resources/project-to-test/pom.xml b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/test/resources/project-to-test/pom.xml
index 6224deb..aa5a840 100644
--- a/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/test/resources/project-to-test/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7587-jsr330/plugin/src/test/resources/project-to-test/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>sample.plugin</groupId>
diff --git a/core-it-suite/src/test/resources/mng-7606/pom.xml b/core-it-suite/src/test/resources/mng-7606/pom.xml
index 502bd53..07b7307 100644
--- a/core-it-suite/src/test/resources/mng-7606/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7606/pom.xml
@@ -17,42 +17,41 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7606</groupId>
-    <artifactId>test</artifactId>
-    <version>1.0-SNAPSHOT</version>
+  <groupId>org.apache.maven.its.mng7606</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0-SNAPSHOT</version>
 
-    <dependencyManagement>
-        <dependencies>
-            <!-- The bug manifests if there are more than 1 import scoped POMs.
+  <dependencyManagement>
+    <dependencies>
+      <!-- The bug manifests if there are more than 1 import scoped POMs.
                  Reason: first model is "stuck" with request.setRawModel( inputModel ) forever
                  See commit: e921f1564ef9460ca58745eb52e3967dbbd0b9e7
             -->
-            <dependency>
-                <groupId>org.apache.maven</groupId>
-                <artifactId>maven-core</artifactId>
-                <version>3.8.6</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.junit</groupId>
-                <artifactId>junit-bom</artifactId>
-                <version>5.9.1</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-    <dependencies>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <scope>test</scope>
-        </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>3.8.6</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit</groupId>
+        <artifactId>junit-bom</artifactId>
+        <version>5.9.1</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
     </dependencies>
+  </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7629/child-1/pom.xml b/core-it-suite/src/test/resources/mng-7629/child-1/pom.xml
index 8e18458..1a8c62f 100644
--- a/core-it-suite/src/test/resources/mng-7629/child-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7629/child-1/pom.xml
@@ -17,47 +17,46 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7629</groupId>
-        <artifactId>test</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.mng7629</groupId>
+    <artifactId>test</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-    <artifactId>child-1</artifactId>
+  <artifactId>child-1</artifactId>
 
-    <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
-    </properties>
+  <properties>
+    <maven.compiler.source>8</maven.compiler.source>
+    <maven.compiler.target>8</maven.compiler.target>
+  </properties>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>3.2.0</version>
-                <executions>
-                    <execution>
-                        <id>attach-mdo</id>
-                        <goals>
-                            <goal>attach-artifact</goal>
-                        </goals>
-                        <configuration>
-                            <artifacts>
-                                <artifact>
-                                    <file>src/main/mdo/settings.mdo</file>
-                                    <type>mdo</type>
-                                </artifact>
-                            </artifacts>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>attach-mdo</id>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  <file>src/main/mdo/settings.mdo</file>
+                  <type>mdo</type>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7629/child-1/src/main/java/org/apache/maven/its/mng7629/Test.java b/core-it-suite/src/test/resources/mng-7629/child-1/src/main/java/org/apache/maven/its/mng7629/Test.java
index 9217ba5..8fe6e49 100644
--- a/core-it-suite/src/test/resources/mng-7629/child-1/src/main/java/org/apache/maven/its/mng7629/Test.java
+++ b/core-it-suite/src/test/resources/mng-7629/child-1/src/main/java/org/apache/maven/its/mng7629/Test.java
@@ -7,7 +7,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
@@ -18,6 +18,4 @@
  */
 package org.apache.maven.its.mng7629;
 
-class Test {
-
-}
+class Test {}
diff --git a/core-it-suite/src/test/resources/mng-7629/child-2/pom.xml b/core-it-suite/src/test/resources/mng-7629/child-2/pom.xml
index b559a57..a690b32 100644
--- a/core-it-suite/src/test/resources/mng-7629/child-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7629/child-2/pom.xml
@@ -17,55 +17,54 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache.maven.its.mng7629</groupId>
-        <artifactId>test</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
+  <parent>
+    <groupId>org.apache.maven.its.mng7629</groupId>
+    <artifactId>test</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
 
-    <artifactId>child-2</artifactId>
+  <artifactId>child-2</artifactId>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.its.mng7629</groupId>
-            <artifactId>child-1</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-    </dependencies>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.mng7629</groupId>
+      <artifactId>child-1</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>3.3.0</version>
-                <executions>
-                    <execution>
-                        <id>copy-model</id>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <phase>generate-sources</phase>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.maven.its.mng7629</groupId>
-                                    <artifactId>child-1</artifactId>
-                                    <version>1.0-SNAPSHOT</version>
-                                    <type>mdo</type>
-                                    <outputDirectory>target/mdo/</outputDirectory>
-                                    <destFileName>settings.mdo</destFileName>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <version>3.3.0</version>
+        <executions>
+          <execution>
+            <id>copy-model</id>
+            <goals>
+              <goal>copy</goal>
+            </goals>
+            <phase>generate-sources</phase>
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.apache.maven.its.mng7629</groupId>
+                  <artifactId>child-1</artifactId>
+                  <version>1.0-SNAPSHOT</version>
+                  <type>mdo</type>
+                  <outputDirectory>target/mdo/</outputDirectory>
+                  <destFileName>settings.mdo</destFileName>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7629/pom.xml b/core-it-suite/src/test/resources/mng-7629/pom.xml
index dae9ae7..30e555b 100644
--- a/core-it-suite/src/test/resources/mng-7629/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7629/pom.xml
@@ -17,18 +17,17 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.apache.maven.its.mng7629</groupId>
-    <artifactId>test</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+  <groupId>org.apache.maven.its.mng7629</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
 
-    <modules>
-        <module>child-1</module>
-        <module>child-2</module>
-    </modules>
+  <modules>
+    <module>child-1</module>
+    <module>child-2</module>
+  </modules>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7697-emoji/pom.xml b/core-it-suite/src/test/resources/mng-7697-emoji/pom.xml
index f900183..8c39bdc 100644
--- a/core-it-suite/src/test/resources/mng-7697-emoji/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7697-emoji/pom.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-<!-- 🤔 -->
-    <groupId>G</groupId>
-    <artifactId>A</artifactId>
-    <version>1</version>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <!-- 🤔 -->
+  <groupId>G</groupId>
+  <artifactId>A</artifactId>
+  <version>1</version>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7716/pom.xml b/core-it-suite/src/test/resources/mng-7716/pom.xml
index 7f0cd80..b2be5db 100644
--- a/core-it-suite/src/test/resources/mng-7716/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7716/pom.xml
@@ -1,9 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>mng</groupId>
   <artifactId>base</artifactId>
   <version>1.2.3</version>
   <packaging>pom</packaging>
+  <modules>
+    <module>settings</module>
+  </modules>
   <build>
     <extensions>
       <extension>
@@ -13,7 +17,4 @@
       </extension>
     </extensions>
   </build>
-  <modules>
-    <module>settings</module>
-  </modules>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7716/settings/pom.xml b/core-it-suite/src/test/resources/mng-7716/settings/pom.xml
index e1a0685..c3a937c 100644
--- a/core-it-suite/src/test/resources/mng-7716/settings/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7716/settings/pom.xml
@@ -1,6 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>mng</groupId>
-  <version>0.0.1-SNAPSHOT</version>
   <artifactId>settings</artifactId>
-</project>
\ No newline at end of file
+  <version>0.0.1-SNAPSHOT</version>
+</project>
diff --git a/core-it-suite/src/test/resources/mng-7737-profiles/pom.xml b/core-it-suite/src/test/resources/mng-7737-profiles/pom.xml
index a076540..213635c 100644
--- a/core-it-suite/src/test/resources/mng-7737-profiles/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7737-profiles/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,7 +17,6 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
 <project>
   <modelVersion>4.0.0</modelVersion>
 
@@ -28,9 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Maven Integration Test :: MNG-7737</name>
-  <description>
-    Verify profile activations.
-  </description>
+  <description>Verify profile activations.</description>
 
   <properties>
     <pom-file1.txt>pom-file1.txt</pom-file1.txt>
