All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aQute.maven.api.IMavenRepo Maven / Gradle / Ivy

There is a newer version: 7.1.0
Show newest version
package aQute.maven.api;

import java.io.Closeable;
import java.io.File;
import java.io.InputStream;
import java.net.URI;
import java.util.List;
import java.util.Properties;
import java.util.regex.Pattern;

import org.osgi.util.promise.Promise;

import aQute.maven.provider.MavenBackingRepository;

/**
 * This is an abstraction of a Maven repository. It is a repository backed by a
 * local directory (usually ~/.m2/repository) and a remote release and/or
 * snapshot repository that is accessed over http(s).
 * 

* The repository stores archives organized in revisions. * Revisions are organized in programs. Archives are the files created * per revision, they are distinguished by extension and * classifier. *

* Maven maintains the remote snapshots with date stamped archives. (The * SNAPSHOT is replaced with a date stamp + build number). This repository can * resolve the latest archive and provide a list of date stamped archives. */ public interface IMavenRepo extends Closeable { /** * The format for an archive is: * *

	 * 		group ':' artifact ( ':' extension ( ':' classifier )? )? ':' version ( '-SNAPSHOT' )?
	 * 
*/ Pattern ARCHIVE_P = Pattern.compile(// // " (?[^:]+)" // + ": (?[^:]+)" // + "(:"// + " (?[^:]+)"// + " (:"// + " (?[^:]+)"// + " )?"// + ")?"// + ":"// + " (?[^:]+)", // Pattern.COMMENTS); /** * Get the archive from the repository. Syntax: * *
	 *  s = group ':' artifact (':' extension ( ':' classifier )?)? ':' version
	 * 
* * @param s the archive specified as string */ Archive getArchive(String s) throws Exception; /** * Get the revisions that belong to a program. This uses the * {@code maven-metadata-xml} file in the program directory on the remote * repository (release + snapshot). For a local only repository this must * return an empty list. * * @param program the program to list the revisions for * @return a list of revisions in the repository */ List getRevisions(Program program) throws Exception; /** * List the snapshot archives for a given revision. If the revision is not a * snapshot, the list will be empty * * @param revision the revisions to list from * @return the list snapshot archives */ List getSnapshotArchives(Revision revision) throws Exception; /** * For a given snapshot revision, get the latest resolved archive. * * @param revision the revision (MUST be snapshot) * @param extension the extension of the archive * @param classifier the classifier of the archive ( may be null) * @return the archive as resolved against the remote maven-metadata.xml for * the revision */ Archive getResolvedArchive(Revision revision, String extension, String classifier) throws Exception; /** * Get the file in the repositories local cache directory. * * @param archive The archive to fetch * @return the file or null if not found */ Promise get(Archive archive) throws Exception; /** * Get the last updated time for a snapshot revision. * * @param revision the snapshot revision to get the time from * @return the time of the snapshot revision remote update */ long getLastUpdated(Revision revision) throws Exception; /** * Create a release object to release the revision. * * @param revision the revision to release * @return the Release object */ Release release(Revision revision, Properties context) throws Exception; /** * Take a generic snapshot archive and resolve it to the latest released * snapshot. * * @param archive the archive to resolve * @return the archive or null if not found */ Archive resolveSnapshot(Archive archive) throws Exception; /** * Get the file object for the archive. The file does not have to exist * * @param archive the archive to find the file for * @return the File or null if not found */ File toLocalFile(Archive archive); /** * Get the URI to the remote archive * * @param archive the archive to calculate the URI for * @return the URI for the given archive */ URI toRemoteURI(Archive archive) throws Exception; /** * Refresh the repository against the file system and remote repositories. * Return true if there was a change */ boolean refresh() throws Exception; /** * Get the name of this repository * * @return the name */ String getName(); IPom getPom(InputStream pomFile) throws Exception; IPom getPom(Revision revision) throws Exception; List getSnapshotRepositories(); List getReleaseRepositories(); boolean isLocalOnly(); boolean exists(Archive binaryArchive) throws Exception; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy