This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new e08c95a67 [MNG-7655] Switch to plexus-utils / plexus-xml 4 (#1093)
e08c95a67 is described below

commit e08c95a6735a82c7abc25e2dc67ea4773ed9d05d
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Sun Jun 4 21:03:41 2023 +0200

    [MNG-7655] Switch to plexus-utils / plexus-xml 4 (#1093)
---
 apache-maven/src/assembly/component.xml            |   1 -
 .../usability/plugin/ExpressionDocumenter.java     |   7 +-
 maven-core/pom.xml                                 |   2 +-
 .../internal/impl/DefaultModelXmlFactory.java      |   8 +-
 .../plugin/internal/DefaultMavenPluginManager.java |   8 +-
 maven-model-builder/pom.xml                        |   2 +-
 maven-model-transform/pom.xml                      |   4 +-
 maven-model/pom.xml                                |   4 +
 .../maven/model/io/xpp3/MavenXpp3ReaderEx.java     |  12 +-
 maven-plugin-api/pom.xml                           |   2 +-
 .../plugin/descriptor/PluginDescriptorBuilder.java |  13 +
 maven-repository-metadata/pom.xml                  |   4 +-
 maven-resolver-provider/pom.xml                    |   2 +-
 maven-settings-builder/pom.xml                     |   2 +-
 .../maven/settings/io/DefaultSettingsReader.java   |   8 +-
 .../maven/settings/io/DefaultSettingsWriter.java   |   4 +-
 maven-settings/pom.xml                             |   4 +-
 .../maven/settings/io/xpp3/SettingsXpp3Reader.java |  12 +-
 maven-toolchain-builder/pom.xml                    |   2 +-
 .../toolchain/io/DefaultToolchainsReader.java      |   8 +-
 maven-toolchain-model/pom.xml                      |   4 +-
 maven-xml-impl/pom.xml                             |   4 +-
 .../java/org/codehaus/plexus/util/xml/Xpp3Dom.java | 422 ---------------------
 .../codehaus/plexus/util/xml/Xpp3DomBuilder.java   |  98 -----
 .../org/codehaus/plexus/util/xml/package-info.java |  10 -
 plexus-utils/pom.xml                               | 166 --------
 plexus-utils/site/markdown/index.md.vm             |  26 --
 plexus-utils/site/site.xml                         |  38 --
 pom.xml                                            |  12 +-
 29 files changed, 72 insertions(+), 817 deletions(-)

diff --git a/apache-maven/src/assembly/component.xml 
b/apache-maven/src/assembly/component.xml
index 24378449d..6d9809c4b 100644
--- a/apache-maven/src/assembly/component.xml
+++ b/apache-maven/src/assembly/component.xml
@@ -31,7 +31,6 @@ under the License.
       <outputDirectory>lib</outputDirectory>
       <excludes>
         <exclude>org.codehaus.plexus:plexus-classworlds</exclude>
-        <exclude>org.codehaus.plexus:plexus-utils</exclude>
       </excludes>
     </dependencySet>
   </dependencySets>
diff --git 
a/maven-compat/src/main/java/org/apache/maven/usability/plugin/ExpressionDocumenter.java
 
b/maven-compat/src/main/java/org/apache/maven/usability/plugin/ExpressionDocumenter.java
index 810446186..c6474a1b5 100644
--- 
a/maven-compat/src/main/java/org/apache/maven/usability/plugin/ExpressionDocumenter.java
+++ 
b/maven-compat/src/main/java/org/apache/maven/usability/plugin/ExpressionDocumenter.java
@@ -18,11 +18,9 @@
  */
 package org.apache.maven.usability.plugin;
 
-import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.Reader;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -31,7 +29,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.usability.plugin.io.xpp3.ParamdocXpp3Reader;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
@@ -100,11 +97,9 @@ public class ExpressionDocumenter {
      */
     private static Map<String, Expression> 
parseExpressionDocumentation(InputStream docStream)
             throws IOException, XmlPullParserException {
-        Reader reader = new 
BufferedReader(ReaderFactory.newXmlReader(docStream));
-
         ParamdocXpp3Reader paramdocReader = new ParamdocXpp3Reader();
 
-        ExpressionDocumentation documentation = paramdocReader.read(reader, 
true);
+        ExpressionDocumentation documentation = paramdocReader.read(docStream, 
true);
 
         List<Expression> expressions = documentation.getExpressions();
 
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index 3c6f5bc35..1aed356c0 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -129,7 +129,7 @@ under the License.
     </dependency>
     <!-- Plexus -->
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git 
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
 
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
index 4b67fd4c2..7bfa586c5 100644
--- 
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
+++ 
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
@@ -39,7 +39,7 @@ import org.apache.maven.api.services.xml.XmlWriterException;
 import org.apache.maven.api.services.xml.XmlWriterRequest;
 import org.apache.maven.model.v4.MavenXpp3ReaderEx;
 import org.apache.maven.model.v4.MavenXpp3WriterEx;
-import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.xml.XmlStreamReader;
 
 import static org.apache.maven.internal.impl.Utils.nonNull;
 
@@ -64,11 +64,11 @@ public class DefaultModelXmlFactory implements 
ModelXmlFactory {
             MavenXpp3ReaderEx xml = new MavenXpp3ReaderEx();
             xml.setAddDefaultEntities(request.isAddDefaultEntities());
             if (path != null) {
-                reader = ReaderFactory.newXmlReader(path.toFile());
+                reader = new XmlStreamReader(path.toFile());
             } else if (url != null) {
-                reader = ReaderFactory.newXmlReader(url);
+                reader = new XmlStreamReader(url);
             } else if (inputStream != null) {
-                reader = ReaderFactory.newXmlReader(inputStream);
+                reader = new XmlStreamReader(inputStream);
             }
             return xml.read(reader, request.isStrict(), source);
         } catch (Exception e) {
diff --git 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index 75c73e33f..1845e3980 100644
--- 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -29,7 +29,6 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
-import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -101,7 +100,6 @@ import 
org.codehaus.plexus.configuration.DefaultPlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.graph.DependencyFilter;
@@ -264,10 +262,8 @@ public class DefaultMavenPluginManager implements 
MavenPluginManager {
     private PluginDescriptor parsePluginDescriptor(InputStream is, Plugin 
plugin, String descriptorLocation)
             throws PluginDescriptorParsingException {
         try {
-            Reader reader = ReaderFactory.newXmlReader(is);
-
-            return builder.build(reader, descriptorLocation);
-        } catch (IOException | PlexusConfigurationException e) {
+            return builder.build(is, descriptorLocation);
+        } catch (PlexusConfigurationException e) {
             throw new PluginDescriptorParsingException(plugin, 
descriptorLocation, e);
         }
     }
diff --git a/maven-model-builder/pom.xml b/maven-model-builder/pom.xml
index 1fbaee756..e0a864b08 100644
--- a/maven-model-builder/pom.xml
+++ b/maven-model-builder/pom.xml
@@ -38,7 +38,7 @@ under the License.
       <version>4.0.0-alpha-6-SNAPSHOT</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git a/maven-model-transform/pom.xml b/maven-model-transform/pom.xml
index 8821ca771..3a0a1e2dd 100644
--- a/maven-model-transform/pom.xml
+++ b/maven-model-transform/pom.xml
@@ -29,8 +29,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
     </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
diff --git a/maven-model/pom.xml b/maven-model/pom.xml
index 01c1583f6..6e6016d4f 100644
--- a/maven-model/pom.xml
+++ b/maven-model/pom.xml
@@ -42,6 +42,10 @@ under the License.
       <artifactId>maven-xml-impl</artifactId>
       <version>4.0.0-alpha-6-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/maven-model/src/main/java/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx.java
 
b/maven-model/src/main/java/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx.java
index a72c00f9a..ab557eb1f 100644
--- 
a/maven-model/src/main/java/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx.java
+++ 
b/maven-model/src/main/java/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx.java
@@ -24,7 +24,6 @@ import java.io.Reader;
 
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
 import org.codehaus.plexus.util.xml.pull.MXParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -53,8 +52,6 @@ public class MavenXpp3ReaderEx {
     } // -- boolean getAddDefaultEntities()
 
     /**
-     * @see ReaderFactory#newXmlReader
-     *
      * @param reader a reader object.
      * @param strict a strict object.
      * @throws IOException IOException if any.
@@ -70,8 +67,6 @@ public class MavenXpp3ReaderEx {
     } // -- Model read( Reader, boolean )
 
     /**
-     * @see ReaderFactory#newXmlReader
-     *
      * @param reader a reader object.
      * @throws IOException IOException if any.
      * @throws XmlPullParserException XmlPullParserException if
@@ -93,7 +88,10 @@ public class MavenXpp3ReaderEx {
      * @return Model
      */
     public Model read(InputStream in, boolean strict, InputSource source) 
throws IOException, XmlPullParserException {
-        return read(ReaderFactory.newXmlReader(in), strict, source);
+        XmlPullParser parser =
+                addDefaultEntities ? new 
MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser();
+        parser.setInput(in, null);
+        return read(parser, strict, source);
     } // -- Model read( InputStream, boolean )
 
     /**
@@ -106,7 +104,7 @@ public class MavenXpp3ReaderEx {
      * @return Model
      */
     public Model read(InputStream in, InputSource source) throws IOException, 
XmlPullParserException {
-        return read(ReaderFactory.newXmlReader(in), source);
+        return read(in, true, source);
     } // -- Model read( InputStream )
 
     /**
diff --git a/maven-plugin-api/pom.xml b/maven-plugin-api/pom.xml
index 02a762d5c..e8a6ab56a 100644
--- a/maven-plugin-api/pom.xml
+++ b/maven-plugin-api/pom.xml
@@ -45,7 +45,7 @@ under the License.
       <artifactId>org.eclipse.sisu.plexus</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git 
a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
 
b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
index 820793356..7c853f97b 100644
--- 
a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
+++ 
b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
@@ -19,6 +19,7 @@
 package org.apache.maven.plugin.descriptor;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.List;
@@ -44,6 +45,10 @@ public class PluginDescriptorBuilder {
         return build(source, buildConfiguration(reader));
     }
 
+    public PluginDescriptor build(InputStream input, String source) throws 
PlexusConfigurationException {
+        return build(source, buildConfiguration(input));
+    }
+
     private PluginDescriptor build(String source, PlexusConfiguration c) 
throws PlexusConfigurationException {
         PluginDescriptor pluginDescriptor = new PluginDescriptor();
 
@@ -374,4 +379,12 @@ public class PluginDescriptorBuilder {
             throw new PlexusConfigurationException(e.getMessage(), e);
         }
     }
+
+    public PlexusConfiguration buildConfiguration(InputStream configuration) 
throws PlexusConfigurationException {
+        try {
+            return 
XmlPlexusConfiguration.toPlexusConfiguration(XmlNodeBuilder.build(configuration,
 null));
+        } catch (IOException | XmlPullParserException e) {
+            throw new PlexusConfigurationException(e.getMessage(), e);
+        }
+    }
 }
diff --git a/maven-repository-metadata/pom.xml 
b/maven-repository-metadata/pom.xml
index 3588ea63a..dbfe66628 100644
--- a/maven-repository-metadata/pom.xml
+++ b/maven-repository-metadata/pom.xml
@@ -33,8 +33,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.resolver</groupId>
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index 0bb05af91..5d2774842 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -69,7 +69,7 @@ under the License.
       <artifactId>maven-resolver-impl</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git a/maven-settings-builder/pom.xml b/maven-settings-builder/pom.xml
index 6ffeb859b..7dc9908c9 100644
--- a/maven-settings-builder/pom.xml
+++ b/maven-settings-builder/pom.xml
@@ -52,7 +52,7 @@ under the License.
       <artifactId>plexus-interpolation</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git 
a/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsReader.java
 
b/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsReader.java
index 56508b8d3..fc96ad1a2 100644
--- 
a/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsReader.java
+++ 
b/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsReader.java
@@ -25,12 +25,12 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
+import java.nio.file.Files;
 import java.util.Map;
 import java.util.Objects;
 
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.v4.SettingsXpp3Reader;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
@@ -46,7 +46,11 @@ public class DefaultSettingsReader implements SettingsReader 
{
     public Settings read(File input, Map<String, ?> options) throws 
IOException {
         Objects.requireNonNull(input, "input cannot be null");
 
-        return read(ReaderFactory.newXmlReader(input), options);
+        try (InputStream in = Files.newInputStream(input.toPath())) {
+            return new Settings(new SettingsXpp3Reader().read(in, 
isStrict(options)));
+        } catch (XmlPullParserException e) {
+            throw new SettingsParseException(e.getMessage(), 
e.getLineNumber(), e.getColumnNumber(), e);
+        }
     }
 
     @Override
diff --git 
a/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsWriter.java
 
b/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsWriter.java
index 4f4a7b293..e654eafb2 100644
--- 
a/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsWriter.java
+++ 
b/maven-settings-builder/src/main/java/org/apache/maven/settings/io/DefaultSettingsWriter.java
@@ -31,7 +31,7 @@ import java.util.Objects;
 
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.v4.SettingsXpp3Writer;
-import org.codehaus.plexus.util.WriterFactory;
+import org.codehaus.plexus.util.xml.XmlStreamWriter;
 
 /**
  * Handles serialization of settings into the default textual format.
@@ -49,7 +49,7 @@ public class DefaultSettingsWriter implements SettingsWriter {
 
         output.getParentFile().mkdirs();
 
-        write(WriterFactory.newXmlWriter(output), options, settings);
+        write(new XmlStreamWriter(output), options, settings);
     }
 
     @Override
diff --git a/maven-settings/pom.xml b/maven-settings/pom.xml
index b9bb3c8f6..c27963e94 100644
--- a/maven-settings/pom.xml
+++ b/maven-settings/pom.xml
@@ -43,8 +43,8 @@ under the License.
       <version>4.0.0-alpha-6-SNAPSHOT</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
     </dependency>
   </dependencies>
 
diff --git 
a/maven-settings/src/main/java/org/apache/maven/settings/io/xpp3/SettingsXpp3Reader.java
 
b/maven-settings/src/main/java/org/apache/maven/settings/io/xpp3/SettingsXpp3Reader.java
index 75cbef3e5..4bedb113e 100644
--- 
a/maven-settings/src/main/java/org/apache/maven/settings/io/xpp3/SettingsXpp3Reader.java
+++ 
b/maven-settings/src/main/java/org/apache/maven/settings/io/xpp3/SettingsXpp3Reader.java
@@ -23,7 +23,6 @@ import java.io.InputStream;
 import java.io.Reader;
 
 import org.apache.maven.settings.Settings;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
 import org.codehaus.plexus.util.xml.pull.MXParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -52,8 +51,6 @@ public class SettingsXpp3Reader {
     } // -- boolean getAddDefaultEntities()
 
     /**
-     * @see ReaderFactory#newXmlReader
-     *
      * @param reader a reader object.
      * @param strict a strict object.
      * @throws IOException IOException if any.
@@ -69,8 +66,6 @@ public class SettingsXpp3Reader {
     } // -- Model read( Reader, boolean )
 
     /**
-     * @see ReaderFactory#newXmlReader
-     *
      * @param reader a reader object.
      * @throws IOException IOException if any.
      * @throws XmlPullParserException XmlPullParserException if
@@ -92,7 +87,10 @@ public class SettingsXpp3Reader {
      * @return Settings
      */
     public Settings read(InputStream in, boolean strict) throws IOException, 
XmlPullParserException {
-        return read(ReaderFactory.newXmlReader(in), strict);
+        XmlPullParser parser =
+                addDefaultEntities ? new 
MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser();
+        parser.setInput(in, null);
+        return read(parser, strict);
     } // -- Model read( InputStream, boolean )
 
     /**
@@ -105,7 +103,7 @@ public class SettingsXpp3Reader {
      * @return Settings
      */
     public Settings read(InputStream in) throws IOException, 
XmlPullParserException {
-        return read(ReaderFactory.newXmlReader(in));
+        return read(in, true);
     } // -- Model read( InputStream )
 
     /**
diff --git a/maven-toolchain-builder/pom.xml b/maven-toolchain-builder/pom.xml
index 3695424d2..e63c26e8d 100644
--- a/maven-toolchain-builder/pom.xml
+++ b/maven-toolchain-builder/pom.xml
@@ -44,7 +44,7 @@ under the License.
       <artifactId>javax.inject</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
diff --git 
a/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
 
b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
index a361775b8..6c6297fa6 100644
--- 
a/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
+++ 
b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
@@ -25,12 +25,12 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
+import java.nio.file.Files;
 import java.util.Map;
 import java.util.Objects;
 
 import org.apache.maven.toolchain.model.PersistedToolchains;
 import org.apache.maven.toolchain.v4.MavenToolchainsXpp3Reader;
-import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
@@ -47,7 +47,11 @@ public class DefaultToolchainsReader implements 
ToolchainsReader {
     public PersistedToolchains read(File input, Map<String, ?> options) throws 
IOException {
         Objects.requireNonNull(input, "input cannot be null");
 
-        return read(ReaderFactory.newXmlReader(input), options);
+        try (InputStream in = Files.newInputStream(input.toPath())) {
+            return new PersistedToolchains(new 
MavenToolchainsXpp3Reader().read(in, isStrict(options)));
+        } catch (XmlPullParserException e) {
+            throw new ToolchainsParseException(e.getMessage(), 
e.getLineNumber(), e.getColumnNumber(), e);
+        }
     }
 
     @Override
diff --git a/maven-toolchain-model/pom.xml b/maven-toolchain-model/pom.xml
index 02edf12be..f497f415a 100644
--- a/maven-toolchain-model/pom.xml
+++ b/maven-toolchain-model/pom.xml
@@ -42,8 +42,8 @@ under the License.
       <version>4.0.0-alpha-6-SNAPSHOT</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-xml</artifactId>
     </dependency>
   </dependencies>
 
diff --git a/maven-xml-impl/pom.xml b/maven-xml-impl/pom.xml
index 26853b322..d0968531a 100644
--- a/maven-xml-impl/pom.xml
+++ b/maven-xml-impl/pom.xml
@@ -41,8 +41,8 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-      <version>${plexusUtilsVersionEmbedded}</version>
+      <artifactId>plexus-xml</artifactId>
+      <version>${plexusXmlVersion}</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git 
a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java 
b/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java
deleted file mode 100644
index b64a2d0cf..000000000
--- a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or 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.codehaus.plexus.util.xml;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.maven.api.xml.XmlNode;
-import org.apache.maven.internal.xml.XmlNodeImpl;
-import org.codehaus.plexus.util.xml.pull.XmlSerializer;
-
-/**
- *  NOTE: remove all the util code in here when separated, this class should 
be pure data.
- */
-public class Xpp3Dom implements Serializable {
-    private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    public static final String CHILDREN_COMBINATION_MODE_ATTRIBUTE = 
"combine.children";
-
-    public static final String CHILDREN_COMBINATION_MERGE = "merge";
-
-    public static final String CHILDREN_COMBINATION_APPEND = "append";
-
-    /**
-     * This default mode for combining children DOMs during merge means that 
where element names match, the process will
-     * try to merge the element data, rather than putting the dominant and 
recessive elements (which share the same
-     * element name) as siblings in the resulting DOM.
-     */
-    public static final String DEFAULT_CHILDREN_COMBINATION_MODE = 
CHILDREN_COMBINATION_MERGE;
-
-    public static final String SELF_COMBINATION_MODE_ATTRIBUTE = 
"combine.self";
-
-    public static final String SELF_COMBINATION_OVERRIDE = "override";
-
-    public static final String SELF_COMBINATION_MERGE = "merge";
-
-    public static final String SELF_COMBINATION_REMOVE = "remove";
-
-    /**
-     * This default mode for combining a DOM node during merge means that 
where element names match, the process will
-     * try to merge the element attributes and values, rather than overriding 
the recessive element completely with the
-     * dominant one. This means that wherever the dominant element doesn't 
provide the value or a particular attribute,
-     * that value or attribute will be set from the recessive DOM node.
-     */
-    public static final String DEFAULT_SELF_COMBINATION_MODE = 
SELF_COMBINATION_MERGE;
-
-    private ChildrenTracking childrenTracking;
-    private XmlNode dom;
-
-    public Xpp3Dom(String name) {
-        this.dom = new XmlNodeImpl(name);
-    }
-
-    /**
-     * @since 3.2.0
-     * @param inputLocation The input location.
-     * @param name The name of the Dom.
-     */
-    public Xpp3Dom(String name, Object inputLocation) {
-        this.dom = new XmlNodeImpl(name, null, null, null, inputLocation);
-    }
-
-    /**
-     * Copy constructor.
-     * @param src The source Dom.
-     */
-    public Xpp3Dom(Xpp3Dom src) {
-        this(src, src.getName());
-    }
-
-    /**
-     * Copy constructor with alternative name.
-     * @param src The source Dom.
-     * @param name The name of the Dom.
-     */
-    public Xpp3Dom(Xpp3Dom src, String name) {
-        this.dom = new XmlNodeImpl(src.dom, name);
-    }
-
-    public Xpp3Dom(XmlNode dom) {
-        this.dom = dom;
-    }
-
-    public Xpp3Dom(XmlNode dom, Xpp3Dom parent) {
-        this.dom = dom;
-        this.childrenTracking = parent::replace;
-    }
-
-    public Xpp3Dom(XmlNode dom, ChildrenTracking childrenTracking) {
-        this.dom = dom;
-        this.childrenTracking = childrenTracking;
-    }
-
-    public XmlNode getDom() {
-        return dom;
-    }
-
-    // ----------------------------------------------------------------------
-    // Name handling
-    // ----------------------------------------------------------------------
-
-    public String getName() {
-        return dom.getName();
-    }
-
-    // ----------------------------------------------------------------------
-    // Value handling
-    // ----------------------------------------------------------------------
-
-    public String getValue() {
-        return dom.getValue();
-    }
-
-    public void setValue(String value) {
-        update(new XmlNodeImpl(dom.getName(), value, dom.getAttributes(), 
dom.getChildren(), dom.getInputLocation()));
-    }
-
-    // ----------------------------------------------------------------------
-    // Attribute handling
-    // ----------------------------------------------------------------------
-
-    public String[] getAttributeNames() {
-        return dom.getAttributes().keySet().toArray(EMPTY_STRING_ARRAY);
-    }
-
-    public String getAttribute(String name) {
-        return dom.getAttribute(name);
-    }
-
-    /**
-     *
-     * @param name name of the attribute to be removed
-     * @return <code>true</code> if the attribute has been removed
-     * @since 3.4.0
-     */
-    public boolean removeAttribute(String name) {
-        if (name != null && !name.isEmpty()) {
-            Map<String, String> attrs = new HashMap<>(dom.getAttributes());
-            boolean ret = attrs.remove(name) != null;
-            if (ret) {
-                update(new XmlNodeImpl(
-                        dom.getName(), dom.getValue(), attrs, 
dom.getChildren(), dom.getInputLocation()));
-            }
-            return ret;
-        }
-        return false;
-    }
-
-    /**
-     * Set the attribute value
-     *
-     * @param name String not null
-     * @param value String not null
-     */
-    public void setAttribute(String name, String value) {
-        if (null == value) {
-            throw new NullPointerException("Attribute value can not be null");
-        }
-        if (null == name) {
-            throw new NullPointerException("Attribute name can not be null");
-        }
-        Map<String, String> attrs = new HashMap<>(dom.getAttributes());
-        attrs.put(name, value);
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), attrs, 
dom.getChildren(), dom.getInputLocation()));
-    }
-
-    // ----------------------------------------------------------------------
-    // Child handling
-    // ----------------------------------------------------------------------
-
-    public Xpp3Dom getChild(int i) {
-        return new Xpp3Dom(dom.getChildren().get(i), this);
-    }
-
-    public Xpp3Dom getChild(String name) {
-        XmlNode child = dom.getChild(name);
-        return child != null ? new Xpp3Dom(child, this) : null;
-    }
-
-    public void addChild(Xpp3Dom xpp3Dom) {
-        List<XmlNode> children = new ArrayList<>(dom.getChildren());
-        children.add(xpp3Dom.dom);
-        xpp3Dom.childrenTracking = this::replace;
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), 
dom.getAttributes(), children, dom.getInputLocation()));
-    }
-
-    public Xpp3Dom[] getChildren() {
-        return dom.getChildren().stream().map(d -> new Xpp3Dom(d, 
this)).toArray(Xpp3Dom[]::new);
-    }
-
-    public Xpp3Dom[] getChildren(String name) {
-        return dom.getChildren().stream()
-                .filter(c -> c.getName().equals(name))
-                .map(d -> new Xpp3Dom(d, this))
-                .toArray(Xpp3Dom[]::new);
-    }
-
-    public int getChildCount() {
-        return dom.getChildren().size();
-    }
-
-    public void removeChild(int i) {
-        List<XmlNode> children = new ArrayList<>(dom.getChildren());
-        children.remove(i);
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), 
dom.getAttributes(), children, dom.getInputLocation()));
-    }
-
-    public void removeChild(Xpp3Dom child) {
-        List<XmlNode> children = new ArrayList<>(dom.getChildren());
-        children.remove(child.dom);
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), 
dom.getAttributes(), children, dom.getInputLocation()));
-    }
-
-    // ----------------------------------------------------------------------
-    // Parent handling
-    // ----------------------------------------------------------------------
-
-    public Xpp3Dom getParent() {
-        throw new UnsupportedOperationException();
-    }
-
-    public void setParent(Xpp3Dom parent) {}
-
-    // ----------------------------------------------------------------------
-    // Input location handling
-    // ----------------------------------------------------------------------
-
-    /**
-     * @since 3.2.0
-     * @return input location
-     */
-    public Object getInputLocation() {
-        return dom.getInputLocation();
-    }
-
-    /**
-     * @since 3.2.0
-     * @param inputLocation input location to set
-     */
-    public void setInputLocation(Object inputLocation) {
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), 
dom.getAttributes(), dom.getChildren(), inputLocation));
-    }
-
-    // ----------------------------------------------------------------------
-    // Helpers
-    // ----------------------------------------------------------------------
-
-    public void writeToSerializer(String namespace, XmlSerializer serializer) 
throws IOException {
-        // TODO: WARNING! Later versions of plexus-utils psit out an <?xml ?> 
header due to thinking this is a new
-        // document - not the desired behaviour!
-        SerializerXMLWriter xmlWriter = new SerializerXMLWriter(namespace, 
serializer);
-        Xpp3DomWriter.write(xmlWriter, this);
-        if (xmlWriter.getExceptions().size() > 0) {
-            throw (IOException) xmlWriter.getExceptions().get(0);
-        }
-    }
-
-    /**
-     * Merges one DOM into another, given a specific algorithm and possible 
override points for that algorithm.<p>
-     * The algorithm is as follows:
-     * <ol>
-     * <li> if the recessive DOM is null, there is nothing to do... 
return.</li>
-     * <li> Determine whether the dominant node will suppress the recessive 
one (flag=mergeSelf).
-     *   <ol type="A">
-     *   <li> retrieve the 'combine.self' attribute on the dominant node, and 
try to match against 'override'...
-     *        if it matches 'override', then set mergeSelf == false...the 
dominant node suppresses the recessive one
-     *        completely.</li>
-     *   <li> otherwise, use the default value for mergeSelf, which is 
true...this is the same as specifying
-     *        'combine.self' == 'merge' as an attribute of the dominant root 
node.</li>
-     *   </ol></li>
-     * <li> If mergeSelf == true
-     *   <ol type="A">
-     *   <li> if the dominant root node's value is empty, set it to the 
recessive root node's value</li>
-     *   <li> For each attribute in the recessive root node which is not set 
in the dominant root node, set it.</li>
-     *   <li> Determine whether children from the recessive DOM will be merged 
or appended to the dominant DOM as
-     *        siblings (flag=mergeChildren).
-     *     <ol type="i">
-     *     <li> if childMergeOverride is set (non-null), use that value 
(true/false)</li>
-     *     <li> retrieve the 'combine.children' attribute on the dominant 
node, and try to match against
-     *          'append'...</li>
-     *     <li> if it matches 'append', then set mergeChildren == false...the 
recessive children will be appended as
-     *          siblings of the dominant children.</li>
-     *     <li> otherwise, use the default value for mergeChildren, which is 
true...this is the same as specifying
-     *         'combine.children' == 'merge' as an attribute on the dominant 
root node.</li>
-     *     </ol></li>
-     *   <li> Iterate through the recessive children, and:
-     *     <ol type="i">
-     *     <li> if mergeChildren == true and there is a corresponding dominant 
child (matched by element name),
-     *          merge the two.</li>
-     *     <li> otherwise, add the recessive child as a new child on the 
dominant root node.</li>
-     *     </ol></li>
-     *   </ol></li>
-     * </ol>
-     */
-    private static void mergeIntoXpp3Dom(Xpp3Dom dominant, Xpp3Dom recessive, 
Boolean childMergeOverride) {
-        // TODO: share this as some sort of assembler, implement a walk 
interface?
-        if (recessive == null) {
-            return;
-        }
-        dominant.dom = dominant.dom.merge(recessive.dom, childMergeOverride);
-    }
-
-    /**
-     * Merge two DOMs, with one having dominance in the case of collision.
-     *
-     * @see #CHILDREN_COMBINATION_MODE_ATTRIBUTE
-     * @see #SELF_COMBINATION_MODE_ATTRIBUTE
-     * @param dominant The dominant DOM into which the recessive 
value/attributes/children will be merged
-     * @param recessive The recessive DOM, which will be merged into the 
dominant DOM
-     * @param childMergeOverride Overrides attribute flags to force merging or 
appending of child elements into the
-     *            dominant DOM
-     * @return merged DOM
-     */
-    public static Xpp3Dom mergeXpp3Dom(Xpp3Dom dominant, Xpp3Dom recessive, 
Boolean childMergeOverride) {
-        if (dominant != null) {
-            mergeIntoXpp3Dom(dominant, recessive, childMergeOverride);
-            return dominant;
-        }
-        return recessive;
-    }
-
-    /**
-     * Merge two DOMs, with one having dominance in the case of collision. 
Merge mechanisms (vs. override for nodes, or
-     * vs. append for children) is determined by attributes of the dominant 
root node.
-     *
-     * @see #CHILDREN_COMBINATION_MODE_ATTRIBUTE
-     * @see #SELF_COMBINATION_MODE_ATTRIBUTE
-     * @param dominant The dominant DOM into which the recessive 
value/attributes/children will be merged
-     * @param recessive The recessive DOM, which will be merged into the 
dominant DOM
-     * @return merged DOM
-     */
-    public static Xpp3Dom mergeXpp3Dom(Xpp3Dom dominant, Xpp3Dom recessive) {
-        if (dominant != null) {
-            mergeIntoXpp3Dom(dominant, recessive, null);
-            return dominant;
-        }
-        return recessive;
-    }
-
-    // ----------------------------------------------------------------------
-    // Standard object handling
-    // ----------------------------------------------------------------------
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-
-        if (!(obj instanceof Xpp3Dom)) {
-            return false;
-        }
-
-        Xpp3Dom dom = (Xpp3Dom) obj;
-        return this.dom.equals(dom.dom);
-    }
-
-    @Override
-    public int hashCode() {
-        return dom.hashCode();
-    }
-
-    @Override
-    public String toString() {
-        return dom.toString();
-    }
-
-    public String toUnescapedString() {
-        return ((Xpp3Dom) dom).toUnescapedString();
-    }
-
-    public static boolean isNotEmpty(String str) {
-        return ((str != null) && (str.length() > 0));
-    }
-
-    public static boolean isEmpty(String str) {
-        return ((str == null) || (str.trim().length() == 0));
-    }
-
-    private void update(XmlNode dom) {
-        if (childrenTracking != null) {
-            childrenTracking.replace(this.dom, dom);
-        }
-        this.dom = dom;
-    }
-
-    private boolean replace(Object prevChild, Object newChild) {
-        List<XmlNode> children = new ArrayList<>(dom.getChildren());
-        children.replaceAll(d -> d == prevChild ? (XmlNode) newChild : d);
-        update(new XmlNodeImpl(dom.getName(), dom.getValue(), 
dom.getAttributes(), children, dom.getInputLocation()));
-        return true;
-    }
-
-    public void setChildrenTracking(ChildrenTracking childrenTracking) {
-        this.childrenTracking = childrenTracking;
-    }
-
-    @FunctionalInterface
-    public interface ChildrenTracking {
-        boolean replace(Object oldDelegate, Object newDelegate);
-    }
-}
diff --git 
a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3DomBuilder.java 
b/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3DomBuilder.java
deleted file mode 100644
index 8bd06991f..000000000
--- 
a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/Xpp3DomBuilder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or 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.codehaus.plexus.util.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-
-import org.apache.maven.internal.xml.XmlNodeBuilder;
-import org.codehaus.plexus.util.xml.pull.XmlPullParser;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-/**
- * @version $Id$
- */
-public class Xpp3DomBuilder {
-    private static final boolean DEFAULT_TRIM = true;
-
-    public static Xpp3Dom build(Reader reader) throws XmlPullParserException, 
IOException {
-        return build(reader, null);
-    }
-
-    /**
-     * @since 3.2.0
-     */
-    public static Xpp3Dom build(Reader reader, InputLocationBuilder 
locationBuilder)
-            throws XmlPullParserException, IOException {
-        return build(reader, DEFAULT_TRIM, locationBuilder);
-    }
-
-    public static Xpp3Dom build(InputStream is, String encoding) throws 
XmlPullParserException, IOException {
-        return build(is, encoding, DEFAULT_TRIM);
-    }
-
-    public static Xpp3Dom build(InputStream is, String encoding, boolean trim)
-            throws XmlPullParserException, IOException {
-        try (InputStream closeMe = is) {
-            return new Xpp3Dom(XmlNodeBuilder.build(is, encoding, trim));
-        }
-    }
-
-    public static Xpp3Dom build(Reader reader, boolean trim) throws 
XmlPullParserException, IOException {
-        return build(reader, trim, null);
-    }
-
-    /**
-     * @since 3.2.0
-     */
-    public static Xpp3Dom build(Reader reader, boolean trim, 
InputLocationBuilder locationBuilder)
-            throws XmlPullParserException, IOException {
-        try (Reader closeMe = reader) {
-            return new Xpp3Dom(XmlNodeBuilder.build(
-                    reader, trim, locationBuilder != null ? 
locationBuilder::toInputLocation : null));
-        }
-    }
-
-    public static Xpp3Dom build(XmlPullParser parser) throws 
XmlPullParserException, IOException {
-        return build(parser, DEFAULT_TRIM);
-    }
-
-    public static Xpp3Dom build(XmlPullParser parser, boolean trim) throws 
XmlPullParserException, IOException {
-        return build(parser, trim, null);
-    }
-
-    /**
-     * @since 3.2.0
-     */
-    public static Xpp3Dom build(XmlPullParser parser, boolean trim, 
InputLocationBuilder locationBuilder)
-            throws XmlPullParserException, IOException {
-        return new Xpp3Dom(
-                XmlNodeBuilder.build(parser, trim, locationBuilder != null ? 
locationBuilder::toInputLocation : null));
-    }
-
-    /**
-     * Input location builder interface, to be implemented to choose how to 
store data.
-     *
-     * @since 3.2.0
-     */
-    public interface InputLocationBuilder {
-        Object toInputLocation(XmlPullParser parser);
-    }
-}
diff --git 
a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/package-info.java 
b/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/package-info.java
deleted file mode 100644
index 6cd95b0cb..000000000
--- 
a/maven-xml-impl/src/main/java/org/codehaus/plexus/util/xml/package-info.java
+++ /dev/null
@@ -1,10 +0,0 @@
-// CHECKSTYLE_OFF: RegexpHeader
-/**
- * Contains modified versions of the
- * {@link org.codehaus.plexus.util.xml.Xpp3Dom} and
- * {@link org.codehaus.plexus.util.xml.Xpp3DomBuilder}
- * classes.
- * The modified {@link org.codehaus.plexus.util.xml.Xpp3Dom} wraps
- * an immutable {@link org.apache.maven.api.xml.XmlNode} instance.
- */
-package org.codehaus.plexus.util.xml;
diff --git a/plexus-utils/pom.xml b/plexus-utils/pom.xml
deleted file mode 100644
index 58a218f4e..000000000
--- a/plexus-utils/pom.xml
+++ /dev/null
@@ -1,166 +0,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
-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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.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</groupId>
-    <artifactId>maven</artifactId>
-    <version>4.0.0-alpha-6-SNAPSHOT</version>
-  </parent>
-
-  <groupId>org.apache.maven</groupId>
-  <artifactId>plexus-utils</artifactId>
-  <version>4.0.0-alpha-6-SNAPSHOT</version>
-  <name>Apache Maven Plexus-Utils</name>
-  <description>Apache Maven repackaging of Plexus Utils with immutable Dom 
interface and its replacement implementation.</description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-      <version>${plexusUtilsVersionEmbedded}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-xml-impl</artifactId>
-      <version>${project.version}</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>3.1.1</version>
-        <executions>
-          <execution>
-            <id>unpack-sources</id>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <phase>generate-sources</phase>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.codehaus.plexus</groupId>
-                  <artifactId>plexus-utils</artifactId>
-                  <version>${plexusUtilsVersionEmbedded}</version>
-                  <classifier>sources</classifier>
-                  <type>jar</type>
-                  <overWrite>false</overWrite>
-                  
<outputDirectory>${project.build.directory}/generated-sources/plexus-utils</outputDirectory>
-                  <includes>**/*.java</includes>
-                  <excludes>org/codehaus/plexus/util/xml/Xpp3Dom.java,
-                                        
org/codehaus/plexus/util/xml/Xpp3DomBuilder.java</excludes>
-                </artifactItem>
-              </artifactItems>
-            </configuration>
-          </execution>
-          <execution>
-            <id>unpack-classes</id>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <phase>process-classes</phase>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.codehaus.plexus</groupId>
-                  <artifactId>plexus-utils</artifactId>
-                  <version>${plexusUtilsVersionEmbedded}</version>
-                  <type>jar</type>
-                  <overWrite>false</overWrite>
-                  
<outputDirectory>${project.build.directory}/classes</outputDirectory>
-                  <includes>**/*.class,**/*.xml</includes>
-                  <excludes>org/codehaus/plexus/util/xml/Xpp3Dom.class,
-                                        
org/codehaus/plexus/util/xml/Xpp3DomBuilder.class</excludes>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.maven</groupId>
-                  <artifactId>maven-api-xml</artifactId>
-                  <version>${project.version}</version>
-                  <type>jar</type>
-                  <includes>**/*</includes>
-                  
<outputDirectory>${project.build.directory}/classes</outputDirectory>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.maven</groupId>
-                  <artifactId>maven-xml-impl</artifactId>
-                  <version>${project.version}</version>
-                  <type>jar</type>
-                  <includes>**/*</includes>
-                  
<outputDirectory>${project.build.directory}/classes</outputDirectory>
-                </artifactItem>
-              </artifactItems>
-              <includes>**/*.java</includes>
-              <overWriteReleases>false</overWriteReleases>
-              <overWriteSnapshots>true</overWriteSnapshots>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.3.0</version>
-        <executions>
-          <execution>
-            <id>add-source</id>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <phase>generate-sources</phase>
-            <configuration>
-              <sources>
-                <source>target/generated-sources/plexus-utils</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.10.1</version>
-        <executions>
-          <execution>
-            <id>compile</id>
-            <configuration>
-              <skipMain>true</skipMain>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>animal-sniffer-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>check-java-compat</id>
-            <phase>none</phase>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/plexus-utils/site/markdown/index.md.vm 
b/plexus-utils/site/markdown/index.md.vm
deleted file mode 100644
index 709303d81..000000000
--- a/plexus-utils/site/markdown/index.md.vm
+++ /dev/null
@@ -1,26 +0,0 @@
-<!---
- Licensed to the Apache Software Foundation (ASF) under one or 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.
--->
-Apache Maven Plexus Utils
-=========================
-
-This module is a repackaging of the `org.codehaus.plexus:plexus-utils` jar, 
which contains a few modified classes to allow a seamless transition between 
the Maven 3.x and 4.x APIs.
-
-The Maven 4.x API is based on immutable data objects. The Maven model contains 
a few classes that contain some open xml data for configuration (`Plugin`, 
`PluginExecution`, `ReportPlugin` and `ReportSet`). So the v3 API which was 
using the `org.codehaus.plexus.utils.xml.Xpp3Dom` class now wraps the 
`org.apache.maven.api.Dom` interface node.  This is completely transparent for 
existing plugins, but the correct (new) classes have to be used.
-
-Given the new implementation of `org.codehaus.plexus.utils.xml.Xpp3Dom` now 
relies on `org.apache.maven.api.Dom`, the modifications can't be made inside 
the `plexus-utils` project, because Maven itself depends on it.
-
-This is drop-in replacement for `plexus-utils` ${plexusUtilsVersionEmbedded}.
diff --git a/plexus-utils/site/site.xml b/plexus-utils/site/site.xml
deleted file mode 100644
index d1c3532d8..000000000
--- a/plexus-utils/site/site.xml
+++ /dev/null
@@ -1,38 +0,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
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.8.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 
http://maven.apache.org/xsd/decoration-1.8.0.xsd";>
-
-  <edit>${project.scm.url}</edit>
-
-  <body>
-    <menu name="Overview">
-      <item name="Introduction" href="index.html"/>
-      <!--item name="Javadocs" href="apidocs/index.html"/>
-      <item name="Source Xref" href="xref/index.html"/>
-      <item name="FAQ" href="faq.html"/-->
-    </menu>
-
-    <menu ref="parent"/>
-    <menu ref="reports"/>
-  </body>
-</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 580d6f152..9d5124cfa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,6 @@ under the License.
     <module>maven-model-transform</module>
     <module>api</module>
     <module>maven-xml-impl</module>
-    <module>plexus-utils</module>
     <module>maven-core</module>
     <module>maven-settings</module>
     <module>maven-settings-builder</module>
@@ -157,8 +156,8 @@ under the License.
     <mockitoVersion>4.11.0</mockitoVersion>
     <plexusVersion>2.1.0</plexusVersion>
     <plexusInterpolationVersion>1.26</plexusInterpolationVersion>
-    <plexusUtilsVersion>4.0.0-alpha-6-SNAPSHOT</plexusUtilsVersion>
-    <plexusUtilsVersionEmbedded>3.5.1</plexusUtilsVersionEmbedded>
+    <plexusUtilsVersion>4.0.0</plexusUtilsVersion>
+    <plexusXmlVersion>4.0.0</plexusXmlVersion>
     <guiceVersion>5.1.0</guiceVersion>
     <guavaVersion>30.1-jre</guavaVersion>
     <guavafailureaccessVersion>1.0.1</guavafailureaccessVersion>
@@ -206,10 +205,15 @@ under the License.
       <!--bootstrap-end-comment-->
       <!--  Plexus -->
       <dependency>
-        <groupId>org.apache.maven</groupId>
+        <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-utils</artifactId>
         <version>${plexusUtilsVersion}</version>
       </dependency>
+      <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-xml</artifactId>
+        <version>${plexusXmlVersion}</version>
+      </dependency>
       <dependency>
         <groupId>com.google.inject</groupId>
         <artifactId>guice</artifactId>

Reply via email to