This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch move-spi-interfaces-to-api-spi in repository https://gitbox.apache.org/repos/asf/maven.git
commit d3671bd70f308a32901f41e9309318700876721f Author: Guillaume Nodet <[email protected]> AuthorDate: Tue Jun 16 16:40:59 2026 +0000 Move model SPI interfaces from maven-impl to maven-api-spi Move 23 interfaces from the org.apache.maven.api.services.model package in impl/maven-impl to api/maven-api-spi where they belong as part of the public API surface. Add proper Javadoc to all moved interfaces. --- .../maven/api/services/model/DependencyManagementImporter.java | 1 + .../maven/api/services/model/DependencyManagementInjector.java | 1 + .../org/apache/maven/api/services/model/InheritanceAssembler.java | 1 + .../maven/api/services/model/LifecycleBindingsInjector.java | 1 + .../org/apache/maven/api/services/model/ModelInterpolator.java | 1 + .../java/org/apache/maven/api/services/model/ModelNormalizer.java | 1 + .../org/apache/maven/api/services/model/ModelPathTranslator.java | 1 + .../java/org/apache/maven/api/services/model/ModelProcessor.java | 4 +++- .../java/org/apache/maven/api/services/model/ModelResolver.java | 2 ++ .../apache/maven/api/services/model/ModelResolverException.java | 1 + .../org/apache/maven/api/services/model/ModelUrlNormalizer.java | 1 + .../java/org/apache/maven/api/services/model/ModelValidator.java | 1 + .../org/apache/maven/api/services/model/ModelVersionParser.java | 0 .../java/org/apache/maven/api/services/model/PathTranslator.java | 1 + .../maven/api/services/model/PluginConfigurationExpander.java | 1 + .../apache/maven/api/services/model/PluginManagementInjector.java | 1 + .../apache/maven/api/services/model/ProfileActivationContext.java | 3 ++- .../org/apache/maven/api/services/model/ProfileActivator.java | 1 + .../java/org/apache/maven/api/services/model/ProfileInjector.java | 1 + .../java/org/apache/maven/api/services/model/ProfileSelector.java | 1 + .../java/org/apache/maven/api/services/model/RootDetector.java | 4 +++- .../java/org/apache/maven/api/services/model/RootLocator.java | 8 +++++--- .../java/org/apache/maven/api/services/model/UrlNormalizer.java | 5 +++++ 23 files changed, 36 insertions(+), 6 deletions(-) diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java index e48079b268..cdcb385a7b 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementImporter.java @@ -28,6 +28,7 @@ /** * Handles the import of dependency management from other models into the target model. * + * @since 4.0.0 */ public interface DependencyManagementImporter { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java index 129eaaa53e..fb91b232cf 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/DependencyManagementInjector.java @@ -25,6 +25,7 @@ /** * Handles injection of dependency management into the model. * + * @since 4.0.0 */ public interface DependencyManagementInjector { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java index 4b1632809f..59b24f370d 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/InheritanceAssembler.java @@ -25,6 +25,7 @@ /** * Handles inheritance of model values. * + * @since 4.0.0 */ public interface InheritanceAssembler { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java index beba17ad3b..1f7701b749 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/LifecycleBindingsInjector.java @@ -25,6 +25,7 @@ /** * Handles injection of plugin executions induced by the lifecycle bindings for a packaging. * + * @since 4.0.0 */ public interface LifecycleBindingsInjector { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java index dbb65c7084..c24a8a4d7f 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelInterpolator.java @@ -30,6 +30,7 @@ * Replaces expressions of the form <code>${token}</code> with their effective values. Effective values are basically * calculated from the elements of the model itself and the execution properties from the building request. * + * @since 4.0.0 */ public interface ModelInterpolator { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java index 40891f041c..50225fd417 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelNormalizer.java @@ -26,6 +26,7 @@ * Handles normalization of a model. In this context, normalization is the process of producing a canonical * representation for models that physically look different but are semantically equivalent. * + * @since 4.0.0 */ public interface ModelNormalizer { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java index 07a36b9549..c2ec4ce522 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelPathTranslator.java @@ -26,6 +26,7 @@ /** * Resolves relative paths of a model against a specific base directory. * + * @since 4.0.0 */ public interface ModelPathTranslator { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java similarity index 96% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java index eb1c46e27a..091e8f45fd 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelProcessor.java @@ -28,7 +28,9 @@ import org.apache.maven.api.services.xml.XmlReaderRequest; /** - * ModelProcessor + * Locates and reads POM files from the filesystem. + * + * @since 4.0.0 */ public interface ModelProcessor { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolver.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolver.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolver.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolver.java index 668f450bc7..58cd0aef0f 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolver.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolver.java @@ -36,6 +36,8 @@ /** * Resolves a POM from its coordinates. + * + * @since 4.0.0 */ public interface ModelResolver extends Service { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java index 0c9f829210..a383cabf0d 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelResolverException.java @@ -23,6 +23,7 @@ /** * Signals an error when resolving the path to an external model. * + * @since 4.0.0 */ public class ModelResolverException extends MavenException { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java similarity index 98% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java index 221e233d8d..a216b99d7a 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelUrlNormalizer.java @@ -25,6 +25,7 @@ * Normalizes URLs to remove the ugly parent references "../" that got potentially inserted by URL adjustment during * model inheritance. * + * @since 4.0.0 */ public interface ModelUrlNormalizer { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelValidator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelValidator.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelValidator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelValidator.java index 116b918959..a4f7c4adbd 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelValidator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelValidator.java @@ -25,6 +25,7 @@ /** * Checks the model for missing or invalid values. * + * @since 4.0.0 */ public interface ModelValidator { /** diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelVersionParser.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelVersionParser.java similarity index 100% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ModelVersionParser.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ModelVersionParser.java diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PathTranslator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PathTranslator.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PathTranslator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PathTranslator.java index 8f1fec0b57..aef26d335c 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PathTranslator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PathTranslator.java @@ -23,6 +23,7 @@ /** * Resolves relative paths against a specific base directory. * + * @since 4.0.0 */ public interface PathTranslator { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java index 2481a583d6..bdd249489d 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginConfigurationExpander.java @@ -25,6 +25,7 @@ /** * Handles expansion of general build plugin configuration into individual executions. * + * @since 4.0.0 */ public interface PluginConfigurationExpander { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java index 9733e253ac..36d7f7e19f 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/PluginManagementInjector.java @@ -25,6 +25,7 @@ /** * Handles injection of plugin management into the model. * + * @since 4.0.0 */ public interface PluginManagementInjector { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java index b7951ea3e1..c9e73242f6 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivationContext.java @@ -26,10 +26,11 @@ /** * Describes the environmental context used to determine the activation status of profiles. - * + * <p> * The {@link Model} is available from the activation context, but only static parts of it * are allowed to be used, i.e. those that do not change between file model and effective model. * + * @since 4.0.0 */ public interface ProfileActivationContext { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java index 99153fa557..5184a20aad 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileActivator.java @@ -24,6 +24,7 @@ /** * Determines whether a profile should be activated. * + * @since 4.0.0 */ public interface ProfileActivator { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java index 87eb50abe3..7361318f98 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileInjector.java @@ -28,6 +28,7 @@ /** * Handles profile injection into the model. * + * @since 4.0.0 */ public interface ProfileInjector { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java similarity index 99% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java index b85cdd43eb..6bf6e2251d 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/ProfileSelector.java @@ -27,6 +27,7 @@ /** * Calculates the active profiles among a given collection of profiles. * + * @since 4.0.0 */ public interface ProfileSelector { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootDetector.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootDetector.java similarity index 92% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootDetector.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootDetector.java index 7c1f1b3015..2c341d2709 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootDetector.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootDetector.java @@ -23,7 +23,9 @@ import org.apache.maven.api.Service; /** - * Interface used to detect is a given directory "root directory". + * Detects whether a given directory is a root directory. + * + * @since 4.0.0 */ public interface RootDetector extends Service { boolean isRootDirectory(Path dir); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootLocator.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootLocator.java similarity index 96% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootLocator.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootLocator.java index 5cb8bd841f..739c279db8 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/RootLocator.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/RootLocator.java @@ -25,15 +25,17 @@ import org.apache.maven.api.annotations.Nullable; /** - * Interface used to locate the root directory for a given project. - * + * Locates the root directory for a given project. + * <p> * The root locator is usually looked up from the DI container. * One notable exception is the computation of the early {@code session.rootDirectory} * property which happens very early. The implementation used in this case * will be discovered using the JDK service mechanism. - * + * <p> * The default implementation will look for a {@code .mvn} child directory * or a {@code pom.xml} containing the {@code root="true"} attribute. + * + * @since 4.0.0 */ public interface RootLocator extends Service { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java similarity index 93% rename from impl/maven-impl/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java rename to api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java index 29dab47f05..8ee4e470ac 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java +++ b/api/maven-api-spi/src/main/java/org/apache/maven/api/services/model/UrlNormalizer.java @@ -18,6 +18,11 @@ */ package org.apache.maven.api.services.model; +/** + * Normalizes URLs by resolving relative references. + * + * @since 4.0.0 + */ public interface UrlNormalizer { /**
