CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-apache-maven--maven-compat

Maven2 compatibility layer providing legacy APIs for Maven3 environment.

Pending
Overview
Eval results
Files

legacy-repository-system.mddocs/

Legacy Repository System

Main legacy repository system implementation providing comprehensive backward compatibility with Maven2 repository operations.

Capabilities

LegacyRepositorySystem

Main legacy repository system implementation that provides the primary interface for all repository operations.

/**
 * Main legacy repository system implementation providing Maven2 compatibility
 * @Component(role = RepositorySystem.class, hint = "default")
 */
public class LegacyRepositorySystem implements RepositorySystem {
    /**
     * Creates an artifact with the specified coordinates
     * @param groupId artifact group identifier
     * @param artifactId artifact identifier
     * @param version artifact version
     * @param scope dependency scope
     * @param type artifact type (jar, war, etc.)
     * @return created Artifact instance
     */
    public Artifact createArtifact(String groupId, String artifactId, String version, 
                                  String scope, String type);
    
    /**
     * Creates an artifact with classifier
     * @param groupId artifact group identifier
     * @param artifactId artifact identifier
     * @param version artifact version
     * @param scope dependency scope
     * @param type artifact type
     * @param classifier artifact classifier
     * @return created Artifact instance
     */
    public Artifact createArtifactWithClassifier(String groupId, String artifactId, String version,
                                                String type, String classifier);
    
    /**
     * Creates a dependency artifact
     * @param dependency dependency information
     * @return created Artifact instance
     */
    public Artifact createDependencyArtifact(Dependency dependency);
    
    /**
     * Creates the default local repository
     * @return default local ArtifactRepository
     * @throws InvalidRepositoryException if repository creation fails
     */
    public ArtifactRepository createDefaultLocalRepository() throws InvalidRepositoryException;
    
    /**
     * Creates a local repository at the specified path
     * @param localRepositoryPath path to local repository
     * @return local ArtifactRepository
     * @throws InvalidRepositoryException if repository creation fails
     */
    public ArtifactRepository createLocalRepository(String localRepositoryPath) 
                                                   throws InvalidRepositoryException;
    
    /**
     * Creates a local repository from URL
     * @param url repository URL
     * @return local ArtifactRepository
     * @throws InvalidRepositoryException if repository creation fails
     */
    public ArtifactRepository createLocalRepository(URL url) throws InvalidRepositoryException;
    
    /**
     * Creates a default remote repository
     * @return default remote ArtifactRepository
     * @throws InvalidRepositoryException if repository creation fails
     */
    public ArtifactRepository createDefaultRemoteRepository() throws InvalidRepositoryException;
    
    /**
     * Resolves artifacts according to the resolution request
     * @param request artifact resolution request
     * @return resolution result with resolved artifacts
     * @throws ArtifactResolutionException if resolution fails
     */
    public ArtifactResolutionResult resolve(ArtifactResolutionRequest request) 
                                          throws ArtifactResolutionException;
    
    /**
     * Publishes (deploys) an artifact to a repository
     * @param repository target repository
     * @param source source file to publish
     * @param artifact artifact metadata
     * @throws ArtifactNotPublishedException if publication fails
     */
    public void publish(ArtifactRepository repository, File source, Artifact artifact, 
                       ArtifactMetadata metadata) throws ArtifactNotPublishedException;
    
    /**
     * Installs an artifact to the local repository
     * @param repository local repository
     * @param source source file to install
     * @param artifact artifact metadata
     * @throws ArtifactInstallationException if installation fails
     */
    public void install(ArtifactRepository repository, File source, Artifact artifact) 
                       throws ArtifactInstallationException;
    
    /**
     * Injects mirror configurations into repository list
     * @param repositories list of repositories to modify
     * @param mirrors list of mirror configurations
     */
    public void injectMirror(List<ArtifactRepository> repositories, List<Mirror> mirrors);
    
    /**
     * Injects authentication configurations into repository list
     * @param repositories list of repositories to modify
     * @param servers list of server configurations with authentication
     */
    public void injectAuthentication(List<ArtifactRepository> repositories, List<Server> servers);
    
    /**
     * Injects proxy configurations into repository list
     * @param repositories list of repositories to modify
     * @param proxies list of proxy configurations
     */
    public void injectProxy(List<ArtifactRepository> repositories, List<Proxy> proxies);
}

WagonManager

Interface for managing Wagon transport protocols.

/**
 * Interface for managing Wagon transport protocols
 */
public interface WagonManager {
    /**
     * Role constant for Plexus component lookup
     */
    String ROLE = WagonManager.class.getName();
    
    /**
     * Gets authentication information for a server ID
     * @param id server identifier
     * @return AuthenticationInfo for the server
     */
    AuthenticationInfo getAuthenticationInfo(String id);
    
    /**
     * Gets proxy information for a protocol
     * @param protocol transport protocol
     * @return ProxyInfo for the protocol
     */
    ProxyInfo getProxy(String protocol);
    
    /**
     * Downloads an artifact from a repository
     * @param artifact artifact to download
     * @param repository source repository
     * @throws TransferFailedException if transfer fails
     * @throws ResourceDoesNotExistException if artifact doesn't exist
     */
    void getArtifact(Artifact artifact, ArtifactRepository repository) 
                    throws TransferFailedException, ResourceDoesNotExistException;
    
    /**
     * Downloads an artifact from a repository to a destination
     * @param artifact artifact to download
     * @param repository source repository
     * @param destination destination file
     * @throws TransferFailedException if transfer fails
     * @throws ResourceDoesNotExistException if artifact doesn't exist
     */
    void getArtifact(Artifact artifact, ArtifactRepository repository, File destination) 
                    throws TransferFailedException, ResourceDoesNotExistException;
    
    /**
     * Gets the mirror repository for a given repository
     * @param repository original repository
     * @return mirror repository or original if no mirror configured
     */
    ArtifactRepository getMirrorRepository(ArtifactRepository repository);
    
    /**
     * Uploads an artifact to a repository
     * @param source source file to upload
     * @param artifact artifact metadata
     * @param repository target repository
     * @throws TransferFailedException if transfer fails
     */
    void putArtifact(File source, Artifact artifact, ArtifactRepository repository) 
                    throws TransferFailedException;
    
    /**
     * Uploads artifact metadata to a repository
     * @param metadata artifact metadata to upload
     * @param repository target repository
     * @throws TransferFailedException if transfer fails
     */
    void putArtifactMetadata(File metadata, ArtifactMetadata artifactMetadata, 
                           ArtifactRepository repository) throws TransferFailedException;
}

DefaultWagonManager

Default implementation of WagonManager.

/**
 * Default implementation of WagonManager
 */
public class DefaultWagonManager implements WagonManager {
    /**
     * Gets authentication information for a server ID
     */
    public AuthenticationInfo getAuthenticationInfo(String id);
    
    /**
     * Gets proxy information for a protocol
     */
    public ProxyInfo getProxy(String protocol);
    
    /**
     * Downloads an artifact from a repository
     */
    public void getArtifact(Artifact artifact, ArtifactRepository repository) 
                           throws TransferFailedException, ResourceDoesNotExistException;
    
    /**
     * Gets the mirror repository for a given repository
     */
    public ArtifactRepository getMirrorRepository(ArtifactRepository repository);
    
    /**
     * Uploads an artifact to a repository
     */
    public void putArtifact(File source, Artifact artifact, ArtifactRepository repository) 
                           throws TransferFailedException;
}

UpdateCheckManager

Interface for managing artifact update checks.

/**
 * Interface for managing artifact update checks
 */
public interface UpdateCheckManager {
    /**
     * Role constant for Plexus component lookup
     */
    String ROLE = UpdateCheckManager.class.getName();
    
    /**
     * Checks if an artifact needs to be updated
     * @param artifact artifact to check
     * @param repository repository to check against
     * @param file local file representing the artifact
     * @return true if artifact needs update
     */
    boolean isUpdateRequired(Artifact artifact, ArtifactRepository repository, File file);
    
    /**
     * Records that an artifact was checked for updates
     * @param artifact artifact that was checked
     * @param repository repository that was checked
     * @param file local file representing the artifact
     */
    void touch(Artifact artifact, ArtifactRepository repository, File file);
    
    /**
     * Checks if metadata needs to be updated
     * @param metadata metadata to check
     * @param repository repository to check against
     * @param file local metadata file
     * @return true if metadata needs update
     */
    boolean isUpdateRequired(ArtifactMetadata metadata, ArtifactRepository repository, File file);
    
    /**
     * Records that metadata was checked for updates
     * @param metadata metadata that was checked
     * @param repository repository that was checked
     * @param file local metadata file
     */
    void touch(ArtifactMetadata metadata, ArtifactRepository repository, File file);
}

DefaultUpdateCheckManager

Default implementation of UpdateCheckManager.

/**
 * Default implementation of UpdateCheckManager
 */
public class DefaultUpdateCheckManager implements UpdateCheckManager {
    /**
     * Checks if an artifact needs to be updated
     */
    public boolean isUpdateRequired(Artifact artifact, ArtifactRepository repository, File file);
    
    /**
     * Records that an artifact was checked for updates
     */
    public void touch(Artifact artifact, ArtifactRepository repository, File file);
    
    /**
     * Checks if metadata needs to be updated
     */
    public boolean isUpdateRequired(ArtifactMetadata metadata, ArtifactRepository repository, File file);
    
    /**
     * Records that metadata was checked for updates
     */
    public void touch(ArtifactMetadata metadata, ArtifactRepository repository, File file);
}

Conflict Resolution

ConflictResolver

Interface for resolving conflicts between artifact versions.

/**
 * Interface for resolving conflicts between artifact versions
 */
public interface ConflictResolver {
    /**
     * Role constant for Plexus component lookup
     */
    String ROLE = ConflictResolver.class.getName();
    
    /**
     * Resolves conflict between two resolution nodes
     * @param node1 first conflicting node
     * @param node2 second conflicting node
     * @return ResolutionNode representing the resolved choice
     * @throws ConflictResolverException if resolution fails
     */
    ResolutionNode resolveConflict(ResolutionNode node1, ResolutionNode node2) 
                                  throws ConflictResolverException;
}

ConflictResolverFactory

Factory for creating conflict resolver instances.

/**
 * Factory for creating conflict resolver instances
 */
public interface ConflictResolverFactory {
    /**
     * Role constant for Plexus component lookup
     */
    String ROLE = ConflictResolverFactory.class.getName();
    
    /**
     * Creates a conflict resolver by hint
     * @param hint resolver type hint
     * @return ConflictResolver instance
     * @throws ConflictResolverNotFoundException if resolver not found
     */
    ConflictResolver getConflictResolver(String hint) throws ConflictResolverNotFoundException;
}

Conflict Resolution Strategies

/**
 * Chooses the nearest version in the dependency tree
 */
public class NearestConflictResolver implements ConflictResolver {
    public ResolutionNode resolveConflict(ResolutionNode node1, ResolutionNode node2);
}

/**
 * Chooses the newest version among conflicting artifacts
 */
public class NewestConflictResolver implements ConflictResolver {
    public ResolutionNode resolveConflict(ResolutionNode node1, ResolutionNode node2);
}

/**
 * Chooses the oldest version among conflicting artifacts
 */
public class OldestConflictResolver implements ConflictResolver {
    public ResolutionNode resolveConflict(ResolutionNode node1, ResolutionNode node2);
}

/**
 * Chooses the farthest version in the dependency tree
 */
public class FarthestConflictResolver implements ConflictResolver {
    public ResolutionNode resolveConflict(ResolutionNode node1, ResolutionNode node2);
}

Usage Examples

Basic Repository System Usage

import org.apache.maven.repository.legacy.LegacyRepositorySystem;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;

// Create repository system instance
LegacyRepositorySystem repositorySystem = new LegacyRepositorySystem();

// Create local repository
try {
    ArtifactRepository localRepo = repositorySystem.createDefaultLocalRepository();
    System.out.println("Local repository: " + localRepo.getUrl());
    
    // Create remote repository
    ArtifactRepository remoteRepo = repositorySystem.createDefaultRemoteRepository();
    System.out.println("Remote repository: " + remoteRepo.getUrl());
    
} catch (InvalidRepositoryException e) {
    System.err.println("Repository creation failed: " + e.getMessage());
}

Artifact Creation and Resolution

// Create artifacts
Artifact artifact = repositorySystem.createArtifact(
    "org.apache.commons",
    "commons-lang3", 
    "3.12.0",
    "compile",
    "jar"
);

Artifact classifiedArtifact = repositorySystem.createArtifactWithClassifier(
    "org.apache.commons",
    "commons-lang3",
    "3.12.0", 
    "jar",
    "sources"
);

// Resolve artifacts
ArtifactResolutionRequest request = new ArtifactResolutionRequest();
request.setArtifact(artifact);
request.setLocalRepository(localRepository);
request.setRemoteRepositories(Arrays.asList(remoteRepository));

try {
    ArtifactResolutionResult result = repositorySystem.resolve(request);
    
    if (result.isSuccess()) {
        System.out.println("Artifact resolved successfully");
        Set<Artifact> resolvedArtifacts = result.getArtifacts();
        System.out.println("Resolved " + resolvedArtifacts.size() + " artifacts");
    } else {
        System.err.println("Resolution failed");
        for (Exception exception : result.getExceptions()) {
            System.err.println("  " + exception.getMessage());
        }
    }
    
} catch (ArtifactResolutionException e) {
    System.err.println("Resolution error: " + e.getMessage());
}

Mirror and Authentication Configuration

import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Server;

// Configure mirrors
List<Mirror> mirrors = new ArrayList<>();
Mirror centralMirror = new Mirror();
centralMirror.setId("central-mirror");
centralMirror.setMirrorOf("central");
centralMirror.setUrl("https://repo.company.com/maven2/");
mirrors.add(centralMirror);

// Apply mirror configuration
List<ArtifactRepository> repositories = Arrays.asList(centralRepo, otherRepo);
repositorySystem.injectMirror(repositories, mirrors);

// Configure authentication
List<Server> servers = new ArrayList<>();
Server server = new Server();
server.setId("central-mirror");
server.setUsername("user");
server.setPassword("password");
servers.add(server);

// Apply authentication configuration
repositorySystem.injectAuthentication(repositories, servers);

System.out.println("Mirror and authentication configured");

Wagon Manager Usage

import org.apache.maven.repository.legacy.WagonManager;
import org.apache.maven.repository.legacy.DefaultWagonManager;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.proxy.ProxyInfo;

// Use wagon manager for transport operations
WagonManager wagonManager = new DefaultWagonManager();

// Get authentication info
AuthenticationInfo authInfo = wagonManager.getAuthenticationInfo("server-id");
if (authInfo != null) {
    System.out.println("Authentication configured for server");
}

// Get proxy info
ProxyInfo proxyInfo = wagonManager.getProxy("http");
if (proxyInfo != null) {
    System.out.println("Proxy configured: " + proxyInfo.getHost());
}

// Download artifact
try {
    wagonManager.getArtifact(artifact, repository);
    System.out.println("Artifact downloaded successfully");
} catch (TransferFailedException | ResourceDoesNotExistException e) {
    System.err.println("Download failed: " + e.getMessage());
}

Update Check Management

import org.apache.maven.repository.legacy.UpdateCheckManager;
import org.apache.maven.repository.legacy.DefaultUpdateCheckManager;

// Manage update checks
UpdateCheckManager updateManager = new DefaultUpdateCheckManager();
File localArtifactFile = new File(localRepo.getBasedir(), "path/to/artifact.jar");

// Check if update is required
boolean updateRequired = updateManager.isUpdateRequired(artifact, remoteRepository, localArtifactFile);

if (updateRequired) {
    System.out.println("Artifact needs update");
    // Perform update...
    
    // Record that we checked
    updateManager.touch(artifact, remoteRepository, localArtifactFile);
} else {
    System.out.println("Artifact is up to date");
}

Conflict Resolution

import org.apache.maven.repository.legacy.resolver.conflict.ConflictResolver;
import org.apache.maven.repository.legacy.resolver.conflict.NearestConflictResolver;
import org.apache.maven.repository.legacy.resolver.conflict.NewestConflictResolver;

// Use different conflict resolution strategies
ConflictResolver nearestResolver = new NearestConflictResolver();
ConflictResolver newestResolver = new NewestConflictResolver();

// Resolve conflicts between nodes
ResolutionNode node1 = // ... create first conflicting node
ResolutionNode node2 = // ... create second conflicting node

try {
    ResolutionNode nearestChoice = nearestResolver.resolveConflict(node1, node2);
    ResolutionNode newestChoice = newestResolver.resolveConflict(node1, node2);
    
    System.out.println("Nearest resolver chose: " + nearestChoice.getArtifact());
    System.out.println("Newest resolver chose: " + newestChoice.getArtifact());
    
} catch (ConflictResolverException e) {
    System.err.println("Conflict resolution failed: " + e.getMessage());
}

Complete Repository Workflow

public void performRepositoryOperations() {
    try {
        // Initialize repository system
        LegacyRepositorySystem repoSystem = new LegacyRepositorySystem();
        
        // Set up repositories
        ArtifactRepository localRepo = repoSystem.createDefaultLocalRepository();
        ArtifactRepository remoteRepo = repoSystem.createDefaultRemoteRepository();
        
        // Configure mirrors and authentication
        configureMirrorsAndAuth(repoSystem, Arrays.asList(remoteRepo));
        
        // Create and resolve artifact
        Artifact artifact = repoSystem.createArtifact(
            "junit", "junit", "4.13.2", "test", "jar"
        );
        
        ArtifactResolutionRequest request = new ArtifactResolutionRequest();
        request.setArtifact(artifact);
        request.setLocalRepository(localRepo);
        request.setRemoteRepositories(Arrays.asList(remoteRepo));
        
        ArtifactResolutionResult result = repoSystem.resolve(request);
        
        if (result.isSuccess()) {
            // Install to local repository
            File artifactFile = artifact.getFile();
            repoSystem.install(localRepo, artifactFile, artifact);
            System.out.println("Artifact installed successfully");
        }
        
    } catch (Exception e) {
        System.err.println("Repository operation failed: " + e.getMessage());
    }
}

Migration Notes

The Legacy Repository System is deprecated and maintained only for backward compatibility. Modern Maven 3.x applications should use:

  • Eclipse Aether for dependency resolution
  • org.apache.maven.repository.RepositorySystem (modern interface)
  • Standard Maven 3.x dependency injection instead of Plexus components
  • org.apache.maven.execution.MavenExecutionRequest for configuration

Install with Tessl CLI

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

docs

artifact-management.md

index.md

legacy-repository-system.md

metadata-processing.md

profile-management.md

project-building.md

repository-operations.md

runtime-information.md

tile.json