diff --git a/api/maven-api-metadata/pom.xml b/api/maven-api-metadata/pom.xml
new file mode 100644
index 000000000000..1488f692220e
--- /dev/null
+++ b/api/maven-api-metadata/pom.xml
@@ -0,0 +1,94 @@
+
+
+
+ 4.0.0
+
+ org.apache.maven
+ maven-api
+ 4.0.0-alpha-14-SNAPSHOT
+
+
+ maven-api-metadata
+
+ Maven 4 API :: Repository Metadata
+ Maven 4 API - Immutable Repository Metadata model.
+
+
+
+ org.apache.maven
+ maven-xml-impl
+
+
+
+
+
+
+ org.codehaus.modello
+ modello-maven-plugin
+
+
+ plugin
+
+ velocity
+
+ generate-sources
+
+ ${project.basedir}/../../src/mdo
+ 1.2.0
+
+ src/main/mdo/metadata.mdo
+
+
+ model.vm
+
+
+ packageModelV4=org.apache.maven.api.metadata
+
+
+
+
+ plugin-doc
+
+ xdoc
+ xsd
+
+ generate-resources
+
+ 1.2.0
+
+ src/main/mdo/metadata.mdo
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ **/package-info.java
+
+
+
+
+
+
+
diff --git a/api/maven-api-metadata/src/main/java/org/apache/maven/api/metadata/package-info.java b/api/maven-api-metadata/src/main/java/org/apache/maven/api/metadata/package-info.java
new file mode 100644
index 000000000000..68e28d951cf6
--- /dev/null
+++ b/api/maven-api-metadata/src/main/java/org/apache/maven/api/metadata/package-info.java
@@ -0,0 +1,5 @@
+// CHECKSTYLE_OFF: RegexpHeader
+/**
+ * Maven Repository Metadata model.
+ */
+package org.apache.maven.api.metadata;
diff --git a/maven-repository-metadata/src/main/mdo/metadata.mdo b/api/maven-api-metadata/src/main/mdo/metadata.mdo
similarity index 100%
rename from maven-repository-metadata/src/main/mdo/metadata.mdo
rename to api/maven-api-metadata/src/main/mdo/metadata.mdo
diff --git a/api/maven-api-metadata/src/site/apt/index.apt b/api/maven-api-metadata/src/site/apt/index.apt
new file mode 100644
index 000000000000..a3f76ef0a6e5
--- /dev/null
+++ b/api/maven-api-metadata/src/site/apt/index.apt
@@ -0,0 +1,33 @@
+~~ 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.
+
+ -----
+ Introduction
+ -----
+ Guillaume Nodet
+ -----
+ 2024-04-04
+ -----
+
+Maven 4 API - Repository Metadata Model
+
+ This is the immutable model for Repository Metadata in <<>> package.
+
+ The following are generated from this model:
+
+ * {{{./apidocs/index.html}Java sources}} with <<>> inner classes for immutable instances creation.
+
diff --git a/api/maven-api-metadata/src/site/site.xml b/api/maven-api-metadata/src/site/site.xml
new file mode 100644
index 000000000000..8ffe43d07c30
--- /dev/null
+++ b/api/maven-api-metadata/src/site/site.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ ${project.scm.url}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/api/pom.xml b/api/pom.xml
index 86a89a19af5d..5af8c9886555 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -39,6 +39,7 @@
maven-api-plugin
maven-api-settings
maven-api-toolchain
+ maven-api-metadata
maven-api-core
maven-api-spi
diff --git a/maven-repository-metadata/pom.xml b/maven-repository-metadata/pom.xml
index 38c62f62bd59..5a5c785bcc5b 100644
--- a/maven-repository-metadata/pom.xml
+++ b/maven-repository-metadata/pom.xml
@@ -32,6 +32,10 @@ under the License.
Per-directory local and remote repository metadata.
+
+ org.apache.maven
+ maven-api-metadata
+
org.codehaus.plexus
plexus-xml
@@ -56,12 +60,12 @@ under the License.
1.2.0
- src/main/mdo/metadata.mdo
+ ../api/maven-api-metadata/src/main/mdo/metadata.mdo
forcedIOModelVersion=1.1.0
packageModelV3=org.apache.maven.artifact.repository.metadata
- packageModelV4=org.apache.maven.artifact.repository.metadata.v4
+ packageModelV4=org.apache.maven.api.metadata
packageToolV4=org.apache.maven.artifact.repository.metadata.io
${project.basedir}/../src/mdo
@@ -75,10 +79,9 @@ under the License.
1.2.0
- src/main/mdo/metadata.mdo
+ ../api/maven-api-metadata/src/main/mdo/metadata.mdo
- model.vm
reader-stax.vm
writer-stax.vm
@@ -92,7 +95,7 @@ under the License.
1.1.0
- src/main/mdo/metadata.mdo
+ ../api/maven-api-metadata/src/main/mdo/metadata.mdo
model-v3.vm
diff --git a/maven-repository-metadata/src/test/java/org/apache/maven/artifact/repository/metadata/MetadataTest.java b/maven-repository-metadata/src/test/java/org/apache/maven/artifact/repository/metadata/MetadataTest.java
index b2d6d7842bc4..b5ed73132ff0 100644
--- a/maven-repository-metadata/src/test/java/org/apache/maven/artifact/repository/metadata/MetadataTest.java
+++ b/maven-repository-metadata/src/test/java/org/apache/maven/artifact/repository/metadata/MetadataTest.java
@@ -224,7 +224,7 @@ void testRoundtrip() throws Exception {
System.setProperty(XMLInputFactory.class.getName(), WstxInputFactory.class.getName());
System.setProperty(XMLOutputFactory.class.getName(), WstxOutputFactory.class.getName());
- Metadata source = new Metadata(org.apache.maven.artifact.repository.metadata.v4.Metadata.newBuilder(
+ Metadata source = new Metadata(org.apache.maven.api.metadata.Metadata.newBuilder(
createMetadataFromArtifact(artifact).getDelegate(), true)
.modelEncoding("UTF-16")
.build());
diff --git a/pom.xml b/pom.xml
index a0bb13ea7f36..bb8aaf6579ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -278,6 +278,11 @@ under the License.
maven-api-di
${project.version}
+
+ org.apache.maven
+ maven-api-metadata
+ ${project.version}
+
org.apache.maven
maven-di