CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-apache-maven--maven-repository-metadata

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

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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);
}

docs

core-model.md

index.md

plugin-registry.md

snapshot-management.md

xml-processing.md

tile.json