or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-model.mdindex.mdplugin-registry.mdsnapshot-management.mdxml-processing.md
tile.json

tessl/maven-maven-repository-metadata

Per-directory local and remote repository metadata handling for Maven repositories

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.apache.maven/maven-repository-metadata@3.9.x

To install, run

npx @tessl/cli install tessl/maven-maven-repository-metadata@3.9.0

index.mddocs/

Maven Repository Metadata

Maven Repository Metadata provides a data model and processing logic for Maven repository metadata files (repository-metadata.xml) that exist in Maven repositories at the directory level. It defines the structure for three types of directory metadata: groupId level (containing plugin information), groupId/artifactId level (containing versioning information), and groupId/artifactId/version level (containing snapshot-specific information).

Package Information

  • Package Name: maven-repository-metadata
  • Package Type: maven
  • Language: Java
  • Installation: Add as Maven dependency:
<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-repository-metadata</artifactId>
  <version>3.9.11</version>
</dependency>

Core Imports

import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Versioning;
import org.apache.maven.artifact.repository.metadata.Snapshot;
import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
import org.apache.maven.artifact.repository.metadata.Plugin;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;

Basic Usage

import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Versioning;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
import java.io.FileReader;
import java.io.FileWriter;

// Reading metadata from XML file
MetadataXpp3Reader reader = new MetadataXpp3Reader();
Metadata metadata = reader.read(new FileReader("repository-metadata.xml"));

// Creating new metadata programmatically
Metadata newMetadata = new Metadata();
newMetadata.setGroupId("com.example");
newMetadata.setArtifactId("my-library");

Versioning versioning = new Versioning();
versioning.addVersion("1.0.0");
versioning.addVersion("1.1.0");
versioning.setLatest("1.1.0");
versioning.setRelease("1.1.0");
versioning.updateTimestamp();
newMetadata.setVersioning(versioning);

// Merging metadata from different sources
boolean changed = existingMetadata.merge(newMetadata);

// Writing metadata to XML file
MetadataXpp3Writer writer = new MetadataXpp3Writer();
writer.write(new FileWriter("output-metadata.xml"), metadata);

Architecture

The library is built around several key components:

  • Data Model Classes: Type-safe objects representing metadata structure (Metadata, Versioning, Snapshot, SnapshotVersion, Plugin)
  • XML Processing: Readers and writers for XML serialization using XPP3 pull parser
  • Modello Generation: Classes are generated from MDO (Model Description Object) definitions
  • Merging Logic: Intelligent merging capabilities for combining metadata from multiple sources
  • Timestamp Management: UTC timestamp handling with proper formatting for repository operations

Capabilities

Core Metadata Model

Central data model classes for representing repository metadata structure and managing metadata at different directory levels.

// Root metadata class
class Metadata implements Serializable, Cloneable {
  public String getGroupId();
  public String getArtifactId();
  public String getVersion();
  public Versioning getVersioning();
  public List<Plugin> getPlugins();
  public boolean merge(Metadata sourceMetadata);
}

// Version management
class Versioning implements Serializable, Cloneable {
  public String getLatest();
  public String getRelease();
  public List<String> getVersions();
  public String getLastUpdated();
  public Snapshot getSnapshot();
  public List<SnapshotVersion> getSnapshotVersions();
  public void updateTimestamp();
}

Core Metadata Model

Snapshot Management

Comprehensive snapshot artifact handling for SNAPSHOT versions, including build numbers, timestamps, and sub-artifact tracking.

class Snapshot implements Serializable, Cloneable {
  public String getTimestamp();
  public int getBuildNumber();
  public boolean isLocalCopy();
}

class SnapshotVersion implements Serializable, Cloneable {
  public String getClassifier();
  public String getExtension();
  public String getVersion();
  public String getUpdated();
}

Snapshot Management

Plugin Registry

Plugin mapping information for groupId-level metadata, enabling Maven plugin resolution by prefix.

class Plugin implements Serializable, Cloneable {
  public String getName();
  public String getPrefix();
  public String getArtifactId();
}

Plugin Registry

XML Processing

XML reading and writing capabilities for repository metadata files with flexible parsing options and content transformation.

class MetadataXpp3Reader {
  public Metadata read(InputStream in) throws IOException, XmlPullParserException;
  public Metadata read(Reader reader, boolean strict) throws IOException, XmlPullParserException;
}

class MetadataXpp3Writer {
  public void write(Writer writer, Metadata metadata) throws IOException;
  public void write(OutputStream out, Metadata metadata) throws IOException;
}

XML Processing

Types

// Content transformation interface for XML reading (nested in MetadataXpp3Reader)
public static interface ContentTransformer {
  String transform(String source, String fieldName);
}