You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mt...@apache.org on 2021/10/13 14:11:34 UTC

[maven] branch master updated: [MNG-6389] Move the toolchains model to a separate artifactId

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

mthmulders 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 ffc2b99  [MNG-6389] Move the toolchains model to a separate artifactId
ffc2b99 is described below

commit ffc2b99e3eebdeba77fa0fc8ec97a469ae75d148
Author: Giovanni van der Schelde <Gi...@infosupport.com>
AuthorDate: Wed Sep 29 13:44:08 2021 +0200

    [MNG-6389] Move the toolchains model to a separate artifactId
    
    Closes #586
---
 maven-bom/pom.xml                                  |  10 +++
 maven-core/pom.xml                                 |  14 ++++-
 .../maven/toolchain/DefaultToolchainTest.java      |  48 ++++++++------
 maven-toolchain-builder/pom.xml                    |  70 +++++++++++++++++++++
 .../building/DefaultToolchainsBuilder.java         |   0
 .../building/DefaultToolchainsBuildingRequest.java |   0
 .../building/DefaultToolchainsBuildingResult.java  |   0
 .../toolchain/building/ToolchainsBuilder.java      |   0
 .../building/ToolchainsBuildingException.java      |   0
 .../building/ToolchainsBuildingRequest.java        |   0
 .../building/ToolchainsBuildingResult.java         |   0
 .../toolchain/io/DefaultToolchainsReader.java      |   0
 .../toolchain/io/DefaultToolchainsWriter.java      |   0
 .../toolchain/io/ToolchainsParseException.java     |   0
 .../maven/toolchain/io/ToolchainsReader.java       |   0
 .../maven/toolchain/io/ToolchainsWriter.java       |   0
 .../toolchain/merge/MavenToolchainMerger.java      |   0
 .../building/DefaultToolchainsBuilderTest.java     |   2 +-
 .../building/ToolchainsBuildingExceptionTest.java  |   8 +--
 .../toolchain/merge/MavenToolchainMergerTest.java  |   0
 .../org/apache/maven/toolchain/global.xml          |   0
 .../toolchain/model/toolchains-jdks-extend.xml     |   0
 .../toolchain/model/toolchains-jdks-extra.xml      |   0
 .../maven/toolchain/model/toolchains-jdks.xml      |   0
 .../resources/org/apache/maven/toolchain/user.xml  |   0
 maven-toolchain-model/pom.xml                      |  59 +++++++++++++++++
 .../src/main/mdo/toolchains.mdo                    |   0
 pom.xml                                            |   2 +
 src/site/xdoc/maven-deps.odg                       | Bin 22491 -> 22633 bytes
 29 files changed, 185 insertions(+), 28 deletions(-)

diff --git a/maven-bom/pom.xml b/maven-bom/pom.xml
index 3f9f983..84d2b01 100644
--- a/maven-bom/pom.xml
+++ b/maven-bom/pom.xml
@@ -130,6 +130,16 @@ under the License.
       </dependency>
       <dependency>
         <groupId>org.apache.maven</groupId>
+        <artifactId>maven-toolchain-model</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-toolchain-builder</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
         <artifactId>maven-slf4j-wrapper</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index dd1b72b..f46fdeb 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -54,6 +54,14 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
+      <artifactId>maven-toolchain-model</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-toolchain-builder</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
       <artifactId>maven-repository-metadata</artifactId>
     </dependency>
     <dependency>
@@ -212,12 +220,12 @@ under the License.
         <artifactId>modello-maven-plugin</artifactId>
         <configuration>
           <version>1.1.0</version>
-          <models>
-            <model>src/main/mdo/toolchains.mdo</model>
-          </models>
+          <!-- This is a required attribute and is intentionally left empty -->
+          <models></models>
         </configuration>
         <executions>
           <execution>
+            <!-- This step is required to generate xdoc, and does not generate java code -->
             <id>modello-site-doc</id>
             <phase>pre-site</phase>
             <goals>
diff --git a/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainTest.java b/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainTest.java
index 29f0fc6..f335003 100644
--- a/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainTest.java
+++ b/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainTest.java
@@ -25,13 +25,11 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
-import java.io.InputStream;
 import java.util.Collections;
 
 import org.apache.maven.toolchain.java.DefaultJavaToolChain;
-import org.apache.maven.toolchain.model.PersistedToolchains;
 import org.apache.maven.toolchain.model.ToolchainModel;
-import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.MockitoAnnotations;
@@ -41,8 +39,6 @@ public class DefaultToolchainTest
 {
     private final Logger logger = mock( Logger.class );
 
-    private MavenToolchainsXpp3Reader reader = new MavenToolchainsXpp3Reader();
-
     @BeforeEach
     public void setUp()
         throws Exception
@@ -129,21 +125,33 @@ public class DefaultToolchainTest
 
     @Test
     public void testEquals()
-        throws Exception
     {
-        try ( InputStream jdksIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
-              InputStream jdksExtraIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks-extra.xml" ) )
-        {
-            PersistedToolchains jdks = reader.read( jdksIS );
-            PersistedToolchains jdksExtra = reader.read( jdksExtraIS );
-
-            DefaultToolchain tc1 = new DefaultJavaToolChain( jdks.getToolchains().get( 0 ), null );
-            DefaultToolchain tc2 = new DefaultJavaToolChain( jdksExtra.getToolchains().get( 0 ), null );
-
-            assertEquals( tc1, tc1 );
-            assertNotEquals( tc1, tc2 );
-            assertNotEquals( tc2, tc1 );
-            assertEquals( tc2, tc2 );
-        }
+        ToolchainModel tm1 = new ToolchainModel();
+        tm1.setType( "jdk" );
+        tm1.addProvide( "version", "1.5" );
+        tm1.addProvide( "vendor", "sun" );
+        Xpp3Dom configuration1 = new Xpp3Dom("configuration");
+        Xpp3Dom jdkHome1 = new Xpp3Dom( "jdkHome" );
+        jdkHome1.setValue("${env.JAVA_HOME}");
+        configuration1.addChild( jdkHome1 );
+        tm1.setConfiguration( configuration1 );
+
+        ToolchainModel tm2 = new ToolchainModel();
+        tm1.setType( "jdk" );
+        tm1.addProvide( "version", "1.4" );
+        tm1.addProvide( "vendor", "sun" );
+        Xpp3Dom configuration2 = new Xpp3Dom("configuration");
+        Xpp3Dom jdkHome2 = new Xpp3Dom( "jdkHome" );
+        jdkHome2.setValue("${env.JAVA_HOME}");
+        configuration2.addChild( jdkHome2 );
+        tm2.setConfiguration( configuration2 );
+
+        DefaultToolchain tc1 = new DefaultJavaToolChain( tm1, null );
+        DefaultToolchain tc2 = new DefaultJavaToolChain( tm2, null );
+
+        assertEquals( tc1, tc1 );
+        assertNotEquals( tc1, tc2 );
+        assertNotEquals( tc2, tc1 );
+        assertEquals( tc2, tc2 );
     }
 }
diff --git a/maven-toolchain-builder/pom.xml b/maven-toolchain-builder/pom.xml
new file mode 100644
index 0000000..5dcbea2
--- /dev/null
+++ b/maven-toolchain-builder/pom.xml
@@ -0,0 +1,70 @@
+<?xml 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">
+    <parent>
+        <artifactId>maven</artifactId>
+        <groupId>org.apache.maven</groupId>
+        <version>4.0.0-alpha-1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>maven-toolchain-builder</artifactId>
+
+    <name>Maven Toolchain Builder</name>
+    <description>The effective toolchain builder.</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-toolchain-model</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-builder-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-interpolation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.eclipse.sisu</groupId>
+                <artifactId>sisu-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilder.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilder.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilder.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilder.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingRequest.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingRequest.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingRequest.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingRequest.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingResult.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingResult.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingResult.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/DefaultToolchainsBuildingResult.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuilder.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuilder.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuilder.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuilder.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingException.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingException.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingException.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingException.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingRequest.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingRequest.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingRequest.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingRequest.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingResult.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingResult.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingResult.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/building/ToolchainsBuildingResult.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsReader.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsWriter.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsWriter.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsWriter.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/DefaultToolchainsWriter.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsParseException.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsParseException.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsParseException.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsParseException.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsReader.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsReader.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsReader.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsReader.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsWriter.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsWriter.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/io/ToolchainsWriter.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/io/ToolchainsWriter.java
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/merge/MavenToolchainMerger.java b/maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/merge/MavenToolchainMerger.java
similarity index 100%
rename from maven-core/src/main/java/org/apache/maven/toolchain/merge/MavenToolchainMerger.java
rename to maven-toolchain-builder/src/main/java/org/apache/maven/toolchain/merge/MavenToolchainMerger.java
diff --git a/maven-core/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java b/maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java
similarity index 100%
rename from maven-core/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java
rename to maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java
index 94c15b8..6460aaf 100644
--- a/maven-core/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java
+++ b/maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/DefaultToolchainsBuilderTest.java
@@ -27,8 +27,8 @@ import org.apache.maven.toolchain.model.PersistedToolchains;
 import org.apache.maven.toolchain.model.ToolchainModel;
 import org.codehaus.plexus.interpolation.os.OperatingSystemUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentMatchers;
 import org.mockito.InjectMocks;
 import org.mockito.MockitoAnnotations;
diff --git a/maven-core/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java b/maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java
similarity index 100%
rename from maven-core/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java
rename to maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java
index 8189268..0ad1087 100644
--- a/maven-core/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java
+++ b/maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/building/ToolchainsBuildingExceptionTest.java
@@ -19,15 +19,15 @@ package org.apache.maven.toolchain.building;
  * under the License.
  */
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Collections;
-
 import org.apache.maven.building.Problem;
 import org.apache.maven.building.ProblemCollector;
 import org.apache.maven.building.ProblemCollectorFactory;
 import org.junit.jupiter.api.Test;
 
+import java.util.Collections;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class ToolchainsBuildingExceptionTest
 {
     private static final String LS = System.lineSeparator();
diff --git a/maven-core/src/test/java/org/apache/maven/toolchain/merge/MavenToolchainMergerTest.java b/maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/merge/MavenToolchainMergerTest.java
similarity index 100%
rename from maven-core/src/test/java/org/apache/maven/toolchain/merge/MavenToolchainMergerTest.java
rename to maven-toolchain-builder/src/test/java/org/apache/maven/toolchain/merge/MavenToolchainMergerTest.java
diff --git a/maven-core/src/test/resources/org/apache/maven/toolchain/global.xml b/maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/global.xml
similarity index 100%
rename from maven-core/src/test/resources/org/apache/maven/toolchain/global.xml
rename to maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/global.xml
diff --git a/maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extend.xml b/maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extend.xml
similarity index 100%
rename from maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extend.xml
rename to maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extend.xml
diff --git a/maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extra.xml b/maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extra.xml
similarity index 100%
rename from maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extra.xml
rename to maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks-extra.xml
diff --git a/maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks.xml b/maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks.xml
similarity index 100%
rename from maven-core/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks.xml
rename to maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/model/toolchains-jdks.xml
diff --git a/maven-core/src/test/resources/org/apache/maven/toolchain/user.xml b/maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/user.xml
similarity index 100%
rename from maven-core/src/test/resources/org/apache/maven/toolchain/user.xml
rename to maven-toolchain-builder/src/test/resources/org/apache/maven/toolchain/user.xml
diff --git a/maven-toolchain-model/pom.xml b/maven-toolchain-model/pom.xml
new file mode 100644
index 0000000..cf32371
--- /dev/null
+++ b/maven-toolchain-model/pom.xml
@@ -0,0 +1,59 @@
+<?xml 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">
+    <parent>
+        <artifactId>maven</artifactId>
+        <groupId>org.apache.maven</groupId>
+        <version>4.0.0-alpha-1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>maven-toolchain-model</artifactId>
+
+    <name>Maven Toolchain Model</name>
+    <description>Maven Toolchain model.</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-utils</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.modello</groupId>
+                <artifactId>modello-maven-plugin</artifactId>
+                <configuration>
+                    <version>1.1.0</version>
+                    <models>
+                        <model>src/main/mdo/toolchains.mdo</model>
+                    </models>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/maven-core/src/main/mdo/toolchains.mdo b/maven-toolchain-model/src/main/mdo/toolchains.mdo
similarity index 100%
rename from maven-core/src/main/mdo/toolchains.mdo
rename to maven-toolchain-model/src/main/mdo/toolchains.mdo
diff --git a/pom.xml b/pom.xml
index 49875c5..eb63fa1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,6 +98,8 @@ under the License.
     <module>apache-maven</module> <!-- rename to apache-maven/maven.pom after RAT-268 -->
     <module>maven-wrapper</module>
     <module>apache-maven/maven-wrapper.pom</module>
+    <module>maven-toolchain-model</module>
+    <module>maven-toolchain-builder</module>
   </modules>
 
   <scm>
diff --git a/src/site/xdoc/maven-deps.odg b/src/site/xdoc/maven-deps.odg
index 9255b01..8f7f977 100644
Binary files a/src/site/xdoc/maven-deps.odg and b/src/site/xdoc/maven-deps.odg differ