CtrlK
BlogDocsLog inGet started
Tessl Logo

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

Pending
Overview
Eval results
Files

repository.mddocs/

Repository Operations

Maven's repository operations provide abstractions for working with artifact repositories, including local and remote repositories, authentication, proxy configuration, and metadata management. Note that many of these interfaces are deprecated in favor of the Maven Resolver API, but remain functional for legacy compatibility.

Core Repository Interfaces

ArtifactRepository (Deprecated)

Primary abstraction for artifact repositories with path resolution, policy management, and artifact operations.

@Deprecated
public interface ArtifactRepository {
    // Path operations
    String pathOf(Artifact artifact);
    String pathOfRemoteRepositoryMetadata(ArtifactMetadata artifactMetadata);
    String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, ArtifactRepository repository);
    
    // Repository identification
    String getUrl();
    void setUrl(String url);
    String getId();
    void setId(String id);
    String getBasedir();
    String getProtocol();
    String getKey();
    
    // Repository policies
    ArtifactRepositoryPolicy getSnapshots();
    ArtifactRepositoryPolicy getReleases();
    void setSnapshotUpdatePolicy(ArtifactRepositoryPolicy policy);
    void setReleaseUpdatePolicy(ArtifactRepositoryPolicy policy);
    
    // Layout management
    ArtifactRepositoryLayout getLayout();
    void setLayout(ArtifactRepositoryLayout layout);
    
    // Authentication and proxy
    Authentication getAuthentication();
    void setAuthentication(Authentication authentication);
    Proxy getProxy();
    void setProxy(Proxy proxy);
    
    // Artifact operations
    Artifact find(Artifact artifact);
    List<String> findVersions(Artifact artifact);
    boolean isProjectAware();
    
    // Repository mirroring (since 3.0-alpha-1)
    List<ArtifactRepository> getMirroredRepositories();
    void setMirroredRepositories(List<ArtifactRepository> mirroredRepositories);
    
    // Repository blocking (since 3.8.1)
    boolean isBlocked();
    void setBlocked(boolean blocked);
}

Usage Examples:

// Basic repository setup (deprecated approach)
ArtifactRepository repository = // obtained from configuration
repository.setId("central");
repository.setUrl("https://repo1.maven.org/maven2");

// Get artifact path in repository
String path = repository.pathOf(artifact); // e.g., "org/example/my-lib/1.0/my-lib-1.0.jar"

// Configure authentication
Authentication auth = new Authentication("username", "password");
repository.setAuthentication(auth);

// Set up proxy
Proxy proxy = new Proxy();
proxy.setHost("proxy.company.com");
proxy.setPort(8080);
repository.setProxy(proxy);

ArtifactRepositoryPolicy (Deprecated)

Defines update and checksum policies for repository operations.

@Deprecated
public class ArtifactRepositoryPolicy {
    // Update policy constants
    public static final String UPDATE_POLICY_NEVER = "never";
    public static final String UPDATE_POLICY_ALWAYS = "always"; 
    public static final String UPDATE_POLICY_DAILY = "daily";
    public static final String UPDATE_POLICY_INTERVAL = "interval";
    
    // Checksum policy constants
    public static final String CHECKSUM_POLICY_FAIL = "fail";
    public static final String CHECKSUM_POLICY_WARN = "warn";
    public static final String CHECKSUM_POLICY_IGNORE = "ignore";
    
    // Policy methods
    public boolean isEnabled();
    public void setEnabled(boolean enabled);
    public String getUpdatePolicy();
    public void setUpdatePolicy(String updatePolicy);
    public String getChecksumPolicy();
    public void setChecksumPolicy(String checksumPolicy);
    public boolean checkOutOfDate(Date lastModified);
    public void merge(ArtifactRepositoryPolicy policy);
}

Usage Examples:

// Create and configure repository policies
ArtifactRepositoryPolicy snapshotPolicy = new ArtifactRepositoryPolicy();
snapshotPolicy.setEnabled(true);
snapshotPolicy.setUpdatePolicy(ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY);
snapshotPolicy.setChecksumPolicy(ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);

ArtifactRepositoryPolicy releasePolicy = new ArtifactRepositoryPolicy();
releasePolicy.setEnabled(true);
releasePolicy.setUpdatePolicy(ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER);
releasePolicy.setChecksumPolicy(ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL);

// Apply to repository
repository.setSnapshotUpdatePolicy(snapshotPolicy);
repository.setReleaseUpdatePolicy(releasePolicy);

// Check if update is needed
boolean needsUpdate = snapshotPolicy.checkOutOfDate(lastDownloadTime);

Authentication and Proxy

Authentication

Repository authentication configuration for secure repository access.

public class Authentication {
    public Authentication(String userName, String password);
    
    // Basic authentication
    public String getUsername();
    public void setUsername(String username);
    public String getPassword();
    public void setPassword(String password);
    
    // Private key authentication
    public String getPrivateKey();
    public void setPrivateKey(String privateKey);
    public String getPassphrase();
    public void setPassphrase(String passphrase);
}

Usage Examples:

// Basic username/password authentication
Authentication basicAuth = new Authentication("myuser", "mypassword");

// Private key authentication
Authentication keyAuth = new Authentication("keyuser", null);
keyAuth.setPrivateKey("/path/to/private/key");
keyAuth.setPassphrase("keypassphrase");

// Apply to repository
repository.setAuthentication(basicAuth);

Proxy

Proxy server configuration for repository access through corporate proxies.

public class Proxy {
    // Proxy type constants
    public static final String PROXY_SOCKS5 = "SOCKS_5";
    public static final String PROXY_SOCKS4 = "SOCKS4"; 
    public static final String PROXY_HTTP = "HTTP";
    
    // Basic proxy configuration
    public String getHost();
    public void setHost(String host);
    public int getPort();
    public void setPort(int port);
    public String getProtocol();
    public void setProtocol(String protocol);
    
    // Proxy authentication
    public String getUserName();
    public void setUserName(String userName);
    public String getPassword();
    public void setPassword(String password);
    
    // Proxy bypass configuration
    public String getNonProxyHosts();
    public void setNonProxyHosts(String nonProxyHosts);
    
    // NTLM authentication
    public String getNtlmHost();
    public void setNtlmHost(String ntlmHost);
    public String getNtlmDomain();
    public void setNtlmDomain(String ntlmDomain);
}

Usage Examples:

// HTTP proxy configuration
Proxy httpProxy = new Proxy();
httpProxy.setProtocol(Proxy.PROXY_HTTP);
httpProxy.setHost("proxy.company.com");
httpProxy.setPort(8080);
httpProxy.setUserName("proxyuser");
httpProxy.setPassword("proxypass");
httpProxy.setNonProxyHosts("localhost|127.0.0.1|*.internal.com");

// SOCKS proxy configuration
Proxy socksProxy = new Proxy();
socksProxy.setProtocol(Proxy.PROXY_SOCKS5);
socksProxy.setHost("socks.company.com");
socksProxy.setPort(1080);

// NTLM proxy authentication
httpProxy.setNtlmHost("workstation");
httpProxy.setNtlmDomain("CORPORATE");

// Apply to repository
repository.setProxy(httpProxy);

Repository Layout

ArtifactRepositoryLayout (Deprecated)

Defines how artifacts are organized within repositories.

@Deprecated
public interface ArtifactRepositoryLayout {
    String getId();
    String pathOf(Artifact artifact);
    String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, 
                                       ArtifactRepository repository);
    String pathOfRemoteRepositoryMetadata(ArtifactMetadata artifactMetadata);
}

ArtifactRepositoryLayout2

Extended repository layout interface with repository factory capabilities.

public interface ArtifactRepositoryLayout2 extends ArtifactRepositoryLayout {
    ArtifactRepository newMavenArtifactRepository(String id, String url, 
                                                ArtifactRepositoryPolicy snapshots,
                                                ArtifactRepositoryPolicy releases);
}

Metadata Management

ArtifactMetadata (Deprecated)

Contains artifact metadata with merge capabilities.

@Deprecated
public interface ArtifactMetadata 
    extends org.apache.maven.repository.legacy.metadata.ArtifactMetadata {
    void merge(ArtifactMetadata metadata);
}

ArtifactMetadata (Legacy)

Legacy artifact metadata operations for storage and retrieval.

public interface ArtifactMetadata {
    // Storage location queries
    boolean storedInArtifactVersionDirectory();
    boolean storedInGroupDirectory();
    
    // Artifact identification
    String getGroupId();
    String getArtifactId();
    String getBaseVersion();
    Object getKey();
    
    // File name resolution
    String getLocalFilename(ArtifactRepository repository);
    String getRemoteFilename();
    
    // Operations
    void merge(ArtifactMetadata metadata);
    void storeInLocalRepository(ArtifactRepository localRepository, 
                              ArtifactRepository remoteRepository)
        throws RepositoryMetadataStoreException;
    String extendedToString();
}

Exception Handling

RepositoryMetadataStoreException

Exception thrown when repository metadata storage operations fail.

public class RepositoryMetadataStoreException extends Exception {
    public RepositoryMetadataStoreException(String message);
    public RepositoryMetadataStoreException(String message, Exception cause);
}

Common Scenarios:

  • Insufficient permissions to write metadata files
  • Network connectivity issues during remote metadata updates
  • Corrupted local repository metadata
  • Disk space exhaustion

Migration Guidance

Important: Most repository-related interfaces in this package are deprecated. For new projects, consider using:

  • Maven Resolver API (org.eclipse.aether) for repository operations
  • Maven Model (org.apache.maven.model) for POM processing
  • Maven Settings (org.apache.maven.settings) for configuration

However, these deprecated interfaces remain functional and are still used internally by Maven for backward compatibility.

Common Usage Patterns

Repository Configuration

// Basic repository setup (legacy approach)
ArtifactRepository centralRepo = // from configuration
centralRepo.setId("central");
centralRepo.setUrl("https://repo1.maven.org/maven2");

// Configure policies
ArtifactRepositoryPolicy releases = new ArtifactRepositoryPolicy();
releases.setEnabled(true);
releases.setUpdatePolicy(ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY);

centralRepo.setReleaseUpdatePolicy(releases);

Secure Repository Access

// Set up authenticated repository with proxy
Authentication auth = new Authentication("username", "password");
Proxy proxy = new Proxy();
proxy.setHost("proxy.company.com");
proxy.setPort(8080);
proxy.setProtocol(Proxy.PROXY_HTTP);

ArtifactRepository secureRepo = // from configuration
secureRepo.setAuthentication(auth);
secureRepo.setProxy(proxy);

Repository Mirroring

// Configure repository mirrors
List<ArtifactRepository> mirrors = Arrays.asList(mirror1, mirror2);
repository.setMirroredRepositories(mirrors);

// Block problematic repositories (Maven 3.8.1+)
repository.setBlocked(true);

Install with Tessl CLI

npx tessl i tessl/maven-org-apache-maven--maven-artifact

docs

index.md

repository.md

resolution.md

versioning.md

tile.json