Maven2 compatibility layer providing legacy APIs for Maven3 environment.
—
Main legacy repository system implementation providing comprehensive backward compatibility with Maven2 repository operations.
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);
}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;
}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;
}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);
}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);
}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;
}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;
}/**
* 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);
}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());
}// 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());
}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");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());
}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");
}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());
}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());
}
}The Legacy Repository System is deprecated and maintained only for backward compatibility. Modern Maven 3.x applications should use:
org.apache.maven.repository.RepositorySystem (modern interface)org.apache.maven.execution.MavenExecutionRequest for configurationInstall with Tessl CLI
npx tessl i tessl/maven-org-apache-maven--maven-compat