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 eb404fa388 Move model SPI interfaces from maven-impl to maven-api-spi
(#12274)
eb404fa388 is described below
commit eb404fa38871165ee267374c09df44d3c771cd6b
Author: Guillaume Nodet <[email protected]>
AuthorDate: Wed Jun 17 12:08:41 2026 +0200
Move model SPI interfaces from maven-impl to maven-api-spi (#12274)
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 {
/**