diff --git a/maven-bom/pom.xml b/maven-bom/pom.xml
index 3f9f983e31..84d2b01238 100644
--- a/maven-bom/pom.xml
+++ b/maven-bom/pom.xml
@@ -128,6 +128,16 @@ under the License.
maven-settings-builder
${project.version}
+
+ org.apache.maven
+ maven-toolchain-model
+ ${project.version}
+
+
+ org.apache.maven
+ maven-toolchain-builder
+ ${project.version}
+
org.apache.maven
maven-slf4j-wrapper
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index dd1b72bf0d..f46fdeb1d9 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -52,6 +52,14 @@ under the License.
org.apache.maven
maven-builder-support
+
+ org.apache.maven
+ maven-toolchain-model
+
+
+ org.apache.maven
+ maven-toolchain-builder
+
org.apache.maven
maven-repository-metadata
@@ -212,12 +220,12 @@ under the License.
modello-maven-plugin
1.1.0
-
- src/main/mdo/toolchains.mdo
-
+
+
+
modello-site-doc
pre-site
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 29f0fc652f..f335003a54 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.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 void testNonMatchingRequirementProperty()
@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 );
+ 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 );
- DefaultToolchain tc1 = new DefaultJavaToolChain( jdks.getToolchains().get( 0 ), null );
- DefaultToolchain tc2 = new DefaultJavaToolChain( jdksExtra.getToolchains().get( 0 ), null );
+ 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 );
- assertEquals( tc1, tc1 );
- assertNotEquals( tc1, tc2 );
- assertNotEquals( tc2, tc1 );
- assertEquals( tc2, tc2 );
- }
+ 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 0000000000..5dcbea2d3d
--- /dev/null
+++ b/maven-toolchain-builder/pom.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+ maven
+ org.apache.maven
+ 4.0.0-alpha-1-SNAPSHOT
+
+ 4.0.0
+
+ maven-toolchain-builder
+
+ Maven Toolchain Builder
+ The effective toolchain builder.
+
+
+
+ org.apache.maven
+ maven-toolchain-model
+
+
+ org.apache.maven
+ maven-builder-support
+
+
+ javax.inject
+ javax.inject
+
+
+ org.codehaus.plexus
+ plexus-interpolation
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
+
+
+ org.eclipse.sisu
+ sisu-maven-plugin
+
+
+
+
+
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 94c15b80eb..6460aaf0a8 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.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 8189268b4d..0ad1087dbf 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 @@
* 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 0000000000..cf32371369
--- /dev/null
+++ b/maven-toolchain-model/pom.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ maven
+ org.apache.maven
+ 4.0.0-alpha-1-SNAPSHOT
+
+ 4.0.0
+
+ maven-toolchain-model
+
+ Maven Toolchain Model
+ Maven Toolchain model.
+
+
+
+ org.codehaus.plexus
+ plexus-utils
+
+
+
+
+
+
+ org.codehaus.modello
+ modello-maven-plugin
+
+ 1.1.0
+
+ src/main/mdo/toolchains.mdo
+
+
+
+
+
+
+
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 49875c5f3b..eb63fa13c4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,6 +98,8 @@ under the License.
apache-maven
maven-wrapper
apache-maven/maven-wrapper.pom
+ maven-toolchain-model
+ maven-toolchain-builder
diff --git a/src/site/xdoc/maven-deps.odg b/src/site/xdoc/maven-deps.odg
index 9255b0179c..8f7f9773d1 100644
Binary files a/src/site/xdoc/maven-deps.odg and b/src/site/xdoc/maven-deps.odg differ