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 ca189d5502 Revert "[#12301] Fix StackOverflowError with internal 
parent and CI-friendly revision (#12317)"
ca189d5502 is described below

commit ca189d5502009d52b05f13282c031d0dbd1cb370
Author: Guillaume Nodet <[email protected]>
AuthorDate: Fri Jun 19 05:29:40 2026 +0000

    Revert "[#12301] Fix StackOverflowError with internal parent and 
CI-friendly revision (#12317)"
    
    This reverts commit c4c7d2ed5b902fbebe78108af29291ecde541ecc.
---
 .../maven/impl/model/DefaultModelBuilder.java      | 377 ++++++++++-----------
 ...301StackOverflowInternalParentRevisionTest.java |  44 ---
 .../.mvn/.gitkeep                                  |   0
 .../parent/pom.xml                                 |  29 --
 .../gh-12301-stackoverflow-internal-parent/pom.xml |  38 ---
 5 files changed, 177 insertions(+), 311 deletions(-)

diff --git 
a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
 
b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
index 05be299c7d..7a5b84b7ee 100644
--- 
a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
+++ 
b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
@@ -289,11 +289,6 @@ List<RemoteRepository> getExternalRepositories() {
         // Contains both GAV coordinates (groupId:artifactId:version) and file 
paths
         final Set<String> parentChain;
 
-        // Tracks file paths currently being read by doReadFileModel, shared 
across
-        // all derived sessions to prevent recursive loops between parent 
resolution
-        // and enhanced property resolution (GH-12301)
-        final Set<Path> activeModelReads;
-
         ModelBuilderSessionState(ModelBuilderRequest request) {
             this(
                     request.getSession(),
@@ -304,8 +299,7 @@ List<RemoteRepository> getExternalRepositories() {
                     List.of(),
                     repos(request),
                     repos(request),
-                    new LinkedHashSet<>(),
-                    ConcurrentHashMap.newKeySet());
+                    new LinkedHashSet<>());
         }
 
         static List<RemoteRepository> repos(ModelBuilderRequest request) {
@@ -325,8 +319,7 @@ private ModelBuilderSessionState(
                 List<RemoteRepository> pomRepositories,
                 List<RemoteRepository> externalRepositories,
                 List<RemoteRepository> repositories,
-                Set<String> parentChain,
-                Set<Path> activeModelReads) {
+                Set<String> parentChain) {
             this.session = session;
             this.request = request;
             this.result = result;
@@ -336,7 +329,6 @@ private ModelBuilderSessionState(
             this.externalRepositories = externalRepositories;
             this.repositories = repositories;
             this.parentChain = parentChain;
-            this.activeModelReads = activeModelReads;
             this.result.setSource(this.request.getSource());
         }
 
@@ -387,8 +379,7 @@ ModelBuilderSessionState derive(ModelBuilderRequest 
request, DefaultModelBuilder
                     pomRepositories,
                     derivedExtRepos,
                     derivedRepos,
-                    new LinkedHashSet<>(),
-                    activeModelReads);
+                    new LinkedHashSet<>());
         }
 
         @Override
@@ -721,12 +712,8 @@ private Map<String, String> getEnhancedProperties(Model 
model, Path rootDirector
                 if (rootModelPath != null) {
                     // Check if the root model path is within the root 
directory to prevent infinite loops
                     // This can happen when a .mvn directory exists in a 
subdirectory and parent inference
-                    // tries to read models above the discovered root 
directory.
-                    // Also skip if the root model is already being read in an 
outer call frame
-                    // to prevent StackOverflowError when a project has an 
internal parent in a
-                    // subdirectory with CI-friendly ${revision} and a .mvn/ 
root marker (GH-12301).
-                    if (isParentWithinRootDirectory(rootModelPath, 
rootDirectory)
-                            && 
!activeModelReads.contains(rootModelPath.normalize())) {
+                    // tries to read models above the discovered root directory
+                    if (isParentWithinRootDirectory(rootModelPath, 
rootDirectory)) {
                         Model rootModel =
                                 
derive(Sources.buildSource(rootModelPath)).readFileModel();
                         properties.putAll(getPropertiesWithProfiles(rootModel, 
properties));
@@ -1555,23 +1542,34 @@ Model doReadFileModel() throws ModelBuilderException {
             boolean rootDirectoryFromSession = false;
             setSource(modelSource.getLocation());
             logger.debug("Reading file model from " + 
modelSource.getLocation());
-            Path sourcePath = modelSource.getPath();
-            boolean trackRead = sourcePath != null && 
activeModelReads.add(sourcePath.normalize());
             try {
+                boolean strict = isBuildRequest();
                 try {
-                    boolean strict = isBuildRequest();
-                    try {
-                        rootDirectory = 
request.getSession().getRootDirectory();
-                        rootDirectoryFromSession = true;
-                    } catch (IllegalStateException ignore) {
-                        rootDirectory = modelSource.getPath();
-                        while (rootDirectory != null && 
!Files.isDirectory(rootDirectory)) {
-                            rootDirectory = rootDirectory.getParent();
-                        }
+                    rootDirectory = request.getSession().getRootDirectory();
+                    rootDirectoryFromSession = true;
+                } catch (IllegalStateException ignore) {
+                    rootDirectory = modelSource.getPath();
+                    while (rootDirectory != null && 
!Files.isDirectory(rootDirectory)) {
+                        rootDirectory = rootDirectory.getParent();
+                    }
+                }
+                try (InputStream is = modelSource.openStream()) {
+                    model = modelProcessor.read(XmlReaderRequest.builder()
+                            .strict(strict)
+                            .location(modelSource.getLocation())
+                            .modelId(modelSource.getModelId())
+                            .path(modelSource.getPath())
+                            .rootDirectory(rootDirectory)
+                            .inputStream(is)
+                            .transformer(new InterningTransformer(session))
+                            .build());
+                } catch (XmlReaderException e) {
+                    if (!strict) {
+                        throw e;
                     }
                     try (InputStream is = modelSource.openStream()) {
                         model = modelProcessor.read(XmlReaderRequest.builder()
-                                .strict(strict)
+                                .strict(false)
                                 .location(modelSource.getLocation())
                                 .modelId(modelSource.getModelId())
                                 .path(modelSource.getPath())
@@ -1579,201 +1577,180 @@ Model doReadFileModel() throws ModelBuilderException {
                                 .inputStream(is)
                                 .transformer(new InterningTransformer(session))
                                 .build());
-                    } catch (XmlReaderException e) {
-                        if (!strict) {
-                            throw e;
-                        }
-                        try (InputStream is = modelSource.openStream()) {
-                            model = 
modelProcessor.read(XmlReaderRequest.builder()
-                                    .strict(false)
-                                    .location(modelSource.getLocation())
-                                    .modelId(modelSource.getModelId())
-                                    .path(modelSource.getPath())
-                                    .rootDirectory(rootDirectory)
-                                    .inputStream(is)
-                                    .transformer(new 
InterningTransformer(session))
-                                    .build());
-                        } catch (XmlReaderException ne) {
-                            // still unreadable even in non-strict mode, 
rethrow original error
-                            throw e;
-                        }
-
-                        add(
-                                Severity.ERROR,
-                                Version.V20,
-                                "Malformed POM " + modelSource.getLocation() + 
": " + e.getMessage(),
-                                e);
+                    } catch (XmlReaderException ne) {
+                        // still unreadable even in non-strict mode, rethrow 
original error
+                        throw e;
                     }
-                } catch (XmlReaderException e) {
+
                     add(
-                            Severity.FATAL,
-                            Version.BASE,
-                            "Non-parseable POM " + modelSource.getLocation() + 
": " + e.getMessage(),
+                            Severity.ERROR,
+                            Version.V20,
+                            "Malformed POM " + modelSource.getLocation() + ": 
" + e.getMessage(),
                             e);
-                    throw newModelBuilderException();
-                } catch (IOException e) {
-                    String msg = e.getMessage();
-                    if (msg == null || msg.isEmpty()) {
-                        // NOTE: There's 
java.nio.charset.MalformedInputException and sun.io.MalformedInputException
-                        if 
(e.getClass().getName().endsWith("MalformedInputException")) {
-                            msg = "Some input bytes do not match the file 
encoding.";
-                        } else {
-                            msg = e.getClass().getSimpleName();
-                        }
+                }
+            } catch (XmlReaderException e) {
+                add(
+                        Severity.FATAL,
+                        Version.BASE,
+                        "Non-parseable POM " + modelSource.getLocation() + ": 
" + e.getMessage(),
+                        e);
+                throw newModelBuilderException();
+            } catch (IOException e) {
+                String msg = e.getMessage();
+                if (msg == null || msg.isEmpty()) {
+                    // NOTE: There's java.nio.charset.MalformedInputException 
and sun.io.MalformedInputException
+                    if 
(e.getClass().getName().endsWith("MalformedInputException")) {
+                        msg = "Some input bytes do not match the file 
encoding.";
+                    } else {
+                        msg = e.getClass().getSimpleName();
                     }
-                    add(Severity.FATAL, Version.BASE, "Non-readable POM " + 
modelSource.getLocation() + ": " + msg, e);
-                    throw newModelBuilderException();
                 }
+                add(Severity.FATAL, Version.BASE, "Non-readable POM " + 
modelSource.getLocation() + ": " + msg, e);
+                throw newModelBuilderException();
+            }
 
-                if (model.getModelVersion() == null) {
-                    String namespace = model.getNamespaceUri();
-                    if (namespace != null && 
namespace.startsWith(NAMESPACE_PREFIX)) {
-                        model = 
model.withModelVersion(namespace.substring(NAMESPACE_PREFIX.length()));
-                    }
+            if (model.getModelVersion() == null) {
+                String namespace = model.getNamespaceUri();
+                if (namespace != null && 
namespace.startsWith(NAMESPACE_PREFIX)) {
+                    model = 
model.withModelVersion(namespace.substring(NAMESPACE_PREFIX.length()));
                 }
+            }
 
-                if (isBuildRequest()) {
-                    model = model.withPomFile(modelSource.getPath());
-
-                    Parent parent = model.getParent();
-                    if (parent != null) {
-                        String groupId = parent.getGroupId();
-                        String artifactId = parent.getArtifactId();
-                        String version = parent.getVersion();
-                        String path = parent.getRelativePath();
-                        boolean versionContainsExpression = version != null && 
version.contains("${");
-                        if ((groupId == null || artifactId == null || version 
== null || versionContainsExpression)
-                                && (path == null || !path.isEmpty())) {
-                            Path pomFile = model.getPomFile();
-                            Path relativePath = Paths.get(path != null ? path 
: "..");
-                            Path pomPath = 
pomFile.resolveSibling(relativePath).normalize();
-                            if (Files.isDirectory(pomPath)) {
-                                pomPath = 
modelProcessor.locateExistingPom(pomPath);
+            if (isBuildRequest()) {
+                model = model.withPomFile(modelSource.getPath());
+
+                Parent parent = model.getParent();
+                if (parent != null) {
+                    String groupId = parent.getGroupId();
+                    String artifactId = parent.getArtifactId();
+                    String version = parent.getVersion();
+                    String path = parent.getRelativePath();
+                    boolean versionContainsExpression = version != null && 
version.contains("${");
+                    if ((groupId == null || artifactId == null || version == 
null || versionContainsExpression)
+                            && (path == null || !path.isEmpty())) {
+                        Path pomFile = model.getPomFile();
+                        Path relativePath = Paths.get(path != null ? path : 
"..");
+                        Path pomPath = 
pomFile.resolveSibling(relativePath).normalize();
+                        if (Files.isDirectory(pomPath)) {
+                            pomPath = 
modelProcessor.locateExistingPom(pomPath);
+                        }
+                        if (pomPath != null && Files.isRegularFile(pomPath)) {
+                            if (rootDirectoryFromSession && 
!isParentWithinRootDirectory(pomPath, rootDirectory)) {
+                                add(
+                                        Severity.FATAL,
+                                        Version.BASE,
+                                        "Parent POM " + pomPath + " is located 
above the root directory "
+                                                + rootDirectory
+                                                + ". This setup is invalid 
when a .mvn directory exists in a subdirectory.",
+                                        parent.getLocation("relativePath"));
+                                throw newModelBuilderException();
                             }
-                            if (pomPath != null && 
Files.isRegularFile(pomPath)) {
-                                if (rootDirectoryFromSession && 
!isParentWithinRootDirectory(pomPath, rootDirectory)) {
-                                    add(
-                                            Severity.FATAL,
-                                            Version.BASE,
-                                            "Parent POM " + pomPath + " is 
located above the root directory "
-                                                    + rootDirectory
-                                                    + ". This setup is invalid 
when a .mvn directory exists in a subdirectory.",
-                                            
parent.getLocation("relativePath"));
-                                    throw newModelBuilderException();
-                                }
 
-                                Model parentModel =
-                                        
derive(Sources.buildSource(pomPath)).readFileModel();
-                                String parentGroupId = getGroupId(parentModel);
-                                String parentArtifactId = 
parentModel.getArtifactId();
-                                String parentVersion = getVersion(parentModel);
-                                if ((groupId == null || 
groupId.equals(parentGroupId))
-                                        && (artifactId == null || 
artifactId.equals(parentArtifactId))
-                                        && (version == null
-                                                || 
version.equals(parentVersion)
-                                                || versionContainsExpression)) 
{
-                                    model = model.withParent(parent.with()
-                                            .groupId(parentGroupId)
-                                            .artifactId(parentArtifactId)
-                                            .version(parentVersion)
-                                            .build());
-                                } else {
-                                    mismatchRelativePathAndGA(model, parent, 
parentGroupId, parentArtifactId);
-                                }
+                            Model parentModel =
+                                    
derive(Sources.buildSource(pomPath)).readFileModel();
+                            String parentGroupId = getGroupId(parentModel);
+                            String parentArtifactId = 
parentModel.getArtifactId();
+                            String parentVersion = getVersion(parentModel);
+                            if ((groupId == null || 
groupId.equals(parentGroupId))
+                                    && (artifactId == null || 
artifactId.equals(parentArtifactId))
+                                    && (version == null
+                                            || version.equals(parentVersion)
+                                            || versionContainsExpression)) {
+                                model = model.withParent(parent.with()
+                                        .groupId(parentGroupId)
+                                        .artifactId(parentArtifactId)
+                                        .version(parentVersion)
+                                        .build());
                             } else {
-                                if 
(!MODEL_VERSION_4_0_0.equals(model.getModelVersion()) && path != null) {
-                                    wrongParentRelativePath(model);
-                                }
+                                mismatchRelativePathAndGA(model, parent, 
parentGroupId, parentArtifactId);
+                            }
+                        } else {
+                            if 
(!MODEL_VERSION_4_0_0.equals(model.getModelVersion()) && path != null) {
+                                wrongParentRelativePath(model);
                             }
                         }
                     }
+                }
 
-                    // subprojects discovery
-                    if (!hasSubprojectsDefined(model)
-                            // only discover subprojects if POM > 4.0.0
-                            && 
!MODEL_VERSION_4_0_0.equals(model.getModelVersion())
-                            // and if packaging is POM (we check type, but the 
session is not yet available,
-                            // we would require the project realm if we want 
to support extensions
-                            && Type.POM.equals(model.getPackaging())) {
-                        List<String> subprojects = new ArrayList<>();
-                        try (Stream<Path> files = 
Files.list(model.getProjectDirectory())) {
-                            for (Path f : files.toList()) {
-                                if (Files.isDirectory(f)) {
-                                    Path subproject = 
modelProcessor.locateExistingPom(f);
-                                    if (subproject != null) {
-                                        
subprojects.add(f.getFileName().toString());
-                                    }
+                // subprojects discovery
+                if (!hasSubprojectsDefined(model)
+                        // only discover subprojects if POM > 4.0.0
+                        && !MODEL_VERSION_4_0_0.equals(model.getModelVersion())
+                        // and if packaging is POM (we check type, but the 
session is not yet available,
+                        // we would require the project realm if we want to 
support extensions
+                        && Type.POM.equals(model.getPackaging())) {
+                    List<String> subprojects = new ArrayList<>();
+                    try (Stream<Path> files = 
Files.list(model.getProjectDirectory())) {
+                        for (Path f : files.toList()) {
+                            if (Files.isDirectory(f)) {
+                                Path subproject = 
modelProcessor.locateExistingPom(f);
+                                if (subproject != null) {
+                                    
subprojects.add(f.getFileName().toString());
                                 }
                             }
-                            if (!subprojects.isEmpty()) {
-                                model = model.withSubprojects(subprojects);
-                            }
-                        } catch (IOException e) {
-                            add(Severity.FATAL, Version.V41, "Error 
discovering subprojects", e);
                         }
+                        if (!subprojects.isEmpty()) {
+                            model = model.withSubprojects(subprojects);
+                        }
+                    } catch (IOException e) {
+                        add(Severity.FATAL, Version.V41, "Error discovering 
subprojects", e);
                     }
-
-                    // Enhanced property resolution with profile activation 
for CI-friendly versions and repository URLs
-                    // This includes directory properties, profile properties, 
and user properties
-                    Map<String, String> properties = 
getEnhancedProperties(model, rootDirectory);
-
-                    // CI friendly version processing with profile-aware 
properties
-                    model = model.with()
-                            .version(replaceCiFriendlyVersion(properties, 
model.getVersion()))
-                            .parent(
-                                    model.getParent() != null
-                                            ? model.getParent()
-                                                    
.withVersion(replaceCiFriendlyVersion(
-                                                            properties,
-                                                            
model.getParent().getVersion()))
-                                            : null)
-                            .build();
-
-                    // Repository URL interpolation with the same 
profile-aware properties
-                    UnaryOperator<String> callback = properties::get;
-                    model = model.with()
-                            
.repositories(interpolateRepository(model.getRepositories(), callback))
-                            
.pluginRepositories(interpolateRepository(model.getPluginRepositories(), 
callback))
-                            .profiles(map(model.getProfiles(), 
this::interpolateRepository, callback))
-                            
.distributionManagement(interpolateRepository(model.getDistributionManagement(),
 callback))
-                            .build();
-                    // Override model properties with user properties (use 
request properties
-                    // to ensure consistency with model interpolation)
-                    Map<String, String> userProps = 
request.getUserProperties();
-                    Map<String, String> newProps = 
merge(model.getProperties(), userProps);
-                    if (newProps != null) {
-                        model = model.withProperties(newProps);
-                    }
-                    model = model.withProfiles(merge(model.getProfiles(), 
userProps));
                 }
 
-                for (var transformer : transformers) {
-                    model = transformer.transformFileModel(model);
-                }
+                // Enhanced property resolution with profile activation for 
CI-friendly versions and repository URLs
+                // This includes directory properties, profile properties, and 
user properties
+                Map<String, String> properties = getEnhancedProperties(model, 
rootDirectory);
+
+                // CI friendly version processing with profile-aware properties
+                model = model.with()
+                        .version(replaceCiFriendlyVersion(properties, 
model.getVersion()))
+                        .parent(
+                                model.getParent() != null
+                                        ? model.getParent()
+                                                
.withVersion(replaceCiFriendlyVersion(
+                                                        properties,
+                                                        
model.getParent().getVersion()))
+                                        : null)
+                        .build();
 
-                setSource(model);
-                modelValidator.validateFileModel(
-                        session,
-                        model,
-                        isBuildRequest()
-                                ? ModelValidator.VALIDATION_LEVEL_STRICT
-                                : ModelValidator.VALIDATION_LEVEL_MINIMAL,
-                        this);
-                InternalSession internalSession = 
InternalSession.from(session);
-                if 
(Features.mavenMaven3Personality(internalSession.getSession().getConfigProperties())
-                        && Objects.equals(ModelBuilder.MODEL_VERSION_4_1_0, 
model.getModelVersion())) {
-                    add(Severity.FATAL, Version.BASE, "Maven3 mode: no higher 
model version than 4.0.0 allowed");
-                }
-                if (hasFatalErrors()) {
-                    throw newModelBuilderException();
+                // Repository URL interpolation with the same profile-aware 
properties
+                UnaryOperator<String> callback = properties::get;
+                model = model.with()
+                        
.repositories(interpolateRepository(model.getRepositories(), callback))
+                        
.pluginRepositories(interpolateRepository(model.getPluginRepositories(), 
callback))
+                        .profiles(map(model.getProfiles(), 
this::interpolateRepository, callback))
+                        
.distributionManagement(interpolateRepository(model.getDistributionManagement(),
 callback))
+                        .build();
+                // Override model properties with user properties (use request 
properties
+                // to ensure consistency with model interpolation)
+                Map<String, String> userProps = request.getUserProperties();
+                Map<String, String> newProps = merge(model.getProperties(), 
userProps);
+                if (newProps != null) {
+                    model = model.withProperties(newProps);
                 }
+                model = model.withProfiles(merge(model.getProfiles(), 
userProps));
+            }
 
-                return model;
-            } finally {
-                if (trackRead && sourcePath != null) {
-                    activeModelReads.remove(sourcePath.normalize());
-                }
+            for (var transformer : transformers) {
+                model = transformer.transformFileModel(model);
+            }
+
+            setSource(model);
+            modelValidator.validateFileModel(
+                    session,
+                    model,
+                    isBuildRequest() ? ModelValidator.VALIDATION_LEVEL_STRICT 
: ModelValidator.VALIDATION_LEVEL_MINIMAL,
+                    this);
+            InternalSession internalSession = InternalSession.from(session);
+            if 
(Features.mavenMaven3Personality(internalSession.getSession().getConfigProperties())
+                    && Objects.equals(ModelBuilder.MODEL_VERSION_4_1_0, 
model.getModelVersion())) {
+                add(Severity.FATAL, Version.BASE, "Maven3 mode: no higher 
model version than 4.0.0 allowed");
+            }
+            if (hasFatalErrors()) {
+                throw newModelBuilderException();
             }
+
+            return model;
         }
 
         private DistributionManagement interpolateRepository(
diff --git 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12301StackOverflowInternalParentRevisionTest.java
 
b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12301StackOverflowInternalParentRevisionTest.java
deleted file mode 100644
index dd24924ad1..0000000000
--- 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12301StackOverflowInternalParentRevisionTest.java
+++ /dev/null
@@ -1,44 +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.apache.maven.it;
-
-import java.io.File;
-
-import org.junit.jupiter.api.Test;
-
-/**
- * This is a test set for <a 
href="https://github.com/apache/maven/issues/12301";>Issue #12301</a>.
- * Verifies that a project with an internal parent in a subdirectory using 
CI-friendly
- * {@code ${revision}} and a {@code .mvn/} root marker does not cause a 
StackOverflowError.
- */
-public class MavenITgh12301StackOverflowInternalParentRevisionTest extends 
AbstractMavenIntegrationTestCase {
-
-    @Test
-    public void testNoStackOverflowWithInternalParentAndRevision() throws 
Exception {
-        File testDir = 
extractResources("/gh-12301-stackoverflow-internal-parent");
-
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
-        verifier.setAutoclean(false);
-        verifier.deleteArtifacts("org.apache.maven.its.gh12301");
-        verifier.addCliArgument("-Drevision=1.0-SNAPSHOT");
-        verifier.addCliArgument("validate");
-        verifier.execute();
-        verifier.verifyErrorFreeLog();
-    }
-}
diff --git 
a/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/.mvn/.gitkeep
 
b/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/.mvn/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git 
a/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/parent/pom.xml
 
b/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/parent/pom.xml
deleted file mode 100644
index 940ecc2231..0000000000
--- 
a/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/parent/pom.xml
+++ /dev/null
@@ -1,29 +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/maven-v4_0_0.xsd";>
-  <modelVersion>4.1.0</modelVersion>
-
-  <groupId>org.apache.maven.its.gh12301</groupId>
-  <artifactId>parent</artifactId>
-  <version>1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Maven Integration Test :: GH-12301 :: Parent</name>
-</project>
diff --git 
a/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/pom.xml
 
b/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/pom.xml
deleted file mode 100644
index e3a1d65be1..0000000000
--- 
a/its/core-it-suite/src/test/resources/gh-12301-stackoverflow-internal-parent/pom.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/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-  <modelVersion>4.1.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.maven.its.gh12301</groupId>
-    <artifactId>parent</artifactId>
-    <version>${revision}</version>
-    <relativePath>parent</relativePath>
-  </parent>
-
-  <artifactId>root</artifactId>
-  <packaging>pom</packaging>
-
-  <name>Maven Integration Test :: GH-12301 :: Root</name>
-
-  <properties>
-    <revision>1.0-SNAPSHOT</revision>
-  </properties>
-</project>


Reply via email to