or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdrepository.mdresolution.mdversioning.md
tile.json

tessl/maven-org-apache-maven--maven-artifact

Maven Artifact API provides core interfaces and classes for representing and working with Maven artifacts, including version handling, repository interactions, and metadata management

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

To install, run

npx @tessl/cli install tessl/maven-org-apache-maven--maven-artifact@3.9.0

index.mddocs/

Maven Artifact API

Maven Artifact API provides core interfaces and classes for representing, manipulating, and managing software artifacts within the Maven ecosystem. It includes comprehensive version handling capabilities, repository interaction APIs, and metadata management functionality.

Package Information

  • Package Name: maven-artifact
  • Package Type: Maven
  • Language: Java
  • Group ID: org.apache.maven
  • Artifact ID: maven-artifact
  • Version: 3.9.11
  • Installation: Include as dependency in your Maven project
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-artifact</artifactId>
    <version>3.9.11</version>
</dependency>

Core Imports

import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.versioning.ComparableVersion;
import org.apache.maven.artifact.versioning.VersionRange;

Basic Usage

import org.apache.maven.artifact.*;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.versioning.*;

// Create a new artifact (Note: Use your ArtifactHandler implementation)
// ArtifactHandler handler = new YourArtifactHandler("jar");
Artifact artifact = new DefaultArtifact(
    "org.example",           // groupId
    "my-library",           // artifactId  
    "1.0.0",               // version
    Artifact.SCOPE_COMPILE, // scope
    "jar",                 // type
    null,                  // classifier
    handler                // artifact handler
);

// Work with versions
ComparableVersion version1 = new ComparableVersion("1.2.3");
ComparableVersion version2 = new ComparableVersion("1.2.4");
int comparison = version1.compareTo(version2); // Returns -1

// Create version ranges
VersionRange range = VersionRange.createFromVersionSpec("[1.0,2.0)");
boolean matches = range.containsVersion(new DefaultArtifactVersion("1.5"));

// Use utilities
String key = ArtifactUtils.key(artifact);
boolean isSnapshot = ArtifactUtils.isSnapshot("1.0-SNAPSHOT");

Architecture

The Maven Artifact API is organized around several key concepts:

  • Artifact Identity: Unique identification using coordinates (groupId:artifactId:version:classifier)
  • Version Management: Sophisticated version parsing, comparison, and range handling
  • Repository Operations: Abstraction over various repository types and access patterns
  • Resolution Framework: Exception handling and filtering for dependency resolution workflows

Capabilities

Artifact Creation and Management

Core artifact representation and utility operations for Maven artifact identity and manipulation.

public interface Artifact extends Comparable<Artifact> {
    // Identity methods
    String getGroupId();
    void setGroupId(String groupId);
    String getArtifactId();
    void setArtifactId(String artifactId);
    String getVersion();
    void setVersion(String version);
    String getType();
    String getClassifier();
    boolean hasClassifier();
    String getScope();
    void setScope(String scope);
    
    // File operations
    File getFile();
    void setFile(File destination);
    
    // Version management
    String getBaseVersion();
    void setBaseVersion(String baseVersion);
    VersionRange getVersionRange();
    void setVersionRange(VersionRange newRange);
    void selectVersion(String version);
    ArtifactVersion getSelectedVersion() throws OverConstrainedVersionException;
    boolean isSelectedVersionKnown() throws OverConstrainedVersionException;
    List<ArtifactVersion> getAvailableVersions();
    void setAvailableVersions(List<ArtifactVersion> versions);
    
    // Repository operations
    ArtifactRepository getRepository();
    void setRepository(ArtifactRepository remoteRepository);
    void updateVersion(String version, ArtifactRepository localRepository);
    String getDownloadUrl();
    void setDownloadUrl(String downloadUrl);
    
    // Metadata management
    void addMetadata(ArtifactMetadata metadata);
    Collection<ArtifactMetadata> getMetadataList();
    
    // Dependency management
    List<String> getDependencyTrail();
    void setDependencyTrail(List<String> dependencyTrail);
    ArtifactFilter getDependencyFilter();
    void setDependencyFilter(ArtifactFilter artifactFilter);
    
    // Artifact handling
    ArtifactHandler getArtifactHandler();
    void setArtifactHandler(ArtifactHandler handler);
    
    // Status management
    String getId();
    String getDependencyConflictId();
    boolean isSnapshot();
    void setResolved(boolean resolved);
    boolean isResolved();
    void setResolvedVersion(String version);
    boolean isRelease();
    void setRelease(boolean release);
    boolean isOptional();
    void setOptional(boolean optional);
}
public class DefaultArtifact implements Artifact {
    public DefaultArtifact(String groupId, String artifactId, String version, 
                          String scope, String type, String classifier, 
                          ArtifactHandler artifactHandler);
    
    public DefaultArtifact(String groupId, String artifactId, VersionRange versionRange, 
                          String scope, String type, String classifier, 
                          ArtifactHandler artifactHandler);
    
    public DefaultArtifact(String groupId, String artifactId, VersionRange versionRange, 
                          String scope, String type, String classifier, 
                          ArtifactHandler artifactHandler, boolean optional);
}
public final class ArtifactUtils {
    public static boolean isSnapshot(String version);
    public static String toSnapshotVersion(String version);
    public static String versionlessKey(Artifact artifact);
    public static String versionlessKey(String groupId, String artifactId);
    public static String key(Artifact artifact);
    public static String key(String groupId, String artifactId, String version);
    public static Map<String, Artifact> artifactMapByVersionlessId(Collection<Artifact> artifacts);
    public static Artifact copyArtifactSafe(Artifact artifact);
    public static Artifact copyArtifact(Artifact artifact);
    public static <T extends Collection<Artifact>> T copyArtifacts(Collection<Artifact> from, T to);
    public static <K, T extends Map<K, Artifact>> T copyArtifacts(Map<K, ? extends Artifact> from, T to);
}

Artifact Type Handling

Configuration for different artifact types and their handling characteristics.

public interface ArtifactHandler {
    String getExtension();
    String getClassifier();
    String getDirectory();
    String getPackaging();
    String getLanguage();
    boolean isIncludesDependencies();
    boolean isAddedToClasspath();
}

Exception Handling

public class InvalidArtifactRTException extends RuntimeException {
    public InvalidArtifactRTException(String groupId, String artifactId, String version, String type, String message);
    public InvalidArtifactRTException(String groupId, String artifactId, String version, String type, String message, Throwable cause);
    
    public String getGroupId();
    public String getArtifactId();
    public String getVersion();
    public String getType();
    public String getBaseMessage();
    public String getArtifactKey();
    public String getMessage();
}

Version Management

Advanced version parsing, comparison, and range operations for Maven version semantics.

public class ComparableVersion implements Comparable<ComparableVersion> {
    public ComparableVersion(String version);
    public int compareTo(ComparableVersion other);
    public String getCanonical();
    public static void main(String... args); // CLI utility
}
public class VersionRange {
    public static VersionRange createFromVersionSpec(String spec) 
        throws InvalidVersionSpecificationException;
    public static VersionRange createFromVersion(String version);
    public boolean containsVersion(ArtifactVersion version);
    public ArtifactVersion matchVersion(List<ArtifactVersion> versions);
    public VersionRange restrict(VersionRange restriction) 
        throws OverConstrainedVersionException;
}

Version Management

Repository Operations

Repository configuration, authentication, and metadata management for artifact storage and retrieval.

@Deprecated
public interface ArtifactRepository {
    String pathOf(Artifact artifact);
    String getUrl();
    void setUrl(String url);
    String getId();
    void setId(String id);
    Authentication getAuthentication();
    void setAuthentication(Authentication authentication);
    Proxy getProxy();
    void setProxy(Proxy proxy);
}
public class Authentication {
    public Authentication(String userName, String password);
    public String getUsername();
    public void setUsername(String username);
    public String getPassword();
    public void setPassword(String password);
    public String getPrivateKey();
    public void setPrivateKey(String privateKey);
}

Repository Operations

Artifact Resolution

Exception handling and filtering mechanisms for dependency resolution workflows.

public abstract class AbstractArtifactResolutionException extends Exception {
    public Artifact getArtifact();
    public String getGroupId();
    public String getArtifactId();
    public String getVersion();
    public List<ArtifactRepository> getRemoteRepositories();
}
public interface ArtifactFilter {
    boolean include(Artifact artifact);
}

Resolution and Filtering

Constants

Artifact Scopes

public interface Artifact {
    String SCOPE_COMPILE = "compile";
    String SCOPE_TEST = "test";
    String SCOPE_RUNTIME = "runtime";
    String SCOPE_PROVIDED = "provided";
    String SCOPE_SYSTEM = "system";
    String SCOPE_IMPORT = "import";
}

Version Constants

public interface Artifact {
    String RELEASE_VERSION = "RELEASE";
    String LATEST_VERSION = "LATEST";
    String SNAPSHOT_VERSION = "SNAPSHOT";
    Pattern VERSION_FILE_PATTERN = Pattern.compile("^(.*)-(\\d{8}\\.\\d{6})-(\\d+)$");
}

Scope Constants

public interface Artifact {
    String SCOPE_COMPILE_PLUS_RUNTIME = "compile+runtime";
    String SCOPE_RUNTIME_PLUS_SYSTEM = "runtime+system";
}

Migration Notes

Several components in this API are marked as deprecated:

  • ArtifactRepository, ArtifactRepositoryPolicy, ArtifactRepositoryLayout interfaces are deprecated but still functional
  • org.apache.maven.artifact.metadata.ArtifactMetadata is deprecated in favor of the legacy metadata interface
  • New projects should use the Maven Resolver API for repository operations when possible

The core artifact and versioning APIs remain stable and are not deprecated.